|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [OSSTEST PATCH 5/7] Schema: Support database schema updates
Ian Campbell writes ("Re: [OSSTEST PATCH 5/7] Schema: Support database schema
updates"):
> On Thu, 2015-12-10 at 13:51 +0000, Ian Jackson wrote:
> > See schema/README.schema, introduced in this patch, for the design.
>
> That is all I have done here. Some of the questions I had might be answered
> in the code.
Fair enough. I have actually executed this, although obviously not on
any production instances.
> > +Update orders
> > +-------------
> > +
> > +There are three reasonable plans for schema changes:
>
> You've listed 4, which one is unreasonable then ;-)
Oops, fixed.
> > + Unfinished (or absent) in old code
> > + Ready' in new code
>
> Is this really "Ready-prime" or is that a typo?
Typo.
> The "Unfinished", "Ready", "Needed" etc are the literal strings to be used
> as <status> in the special comment, correct?
Yes.
I see that I used the terms `state' and `status' interchangeably. I
have changed `state' to `status' (and adjusted grammar) in the docs.
The code still talks about `state' in a slightly confusing way. I can
fix that if you like.
> Who or what is responsible for cranking the handle on the state machine? I
> _think_ it is going to be the commits which make the corresponding changes
> to the code or introduce the new schema snippet?
Exactly.
> Am I right that it would be unusual to have a literal "Unfinished" in a
> schema/*.sql, but rather they would be implicitly in that state by being
> absent?
You might want to introduce a schema change early in a series as
documentation or for testing purposes. `Unfinished' updates can be
applied with -fff so you can test parts of the code before the rest
is ready.
> > +Update order for Populate-then-rely
> > +-----------------------------------
> > +
> > +This is for when we want to record new information and then later rely
> > +on it. There are typically two schema changes: to add the column(s)
> > +(`add') and then to add appropriate constraints (`constraint') to
> > +prevent it being left blank.
>
> Which of the 4 plans above does this correspond to?
>
> I have a feeling that this actually encapsulates two schema changes in
> lockstep, which may have independent determination of the plan, from the
> state names it looks like the `add' schema is a "Schema first" change and
> the `constraint' one is either "Code first" or "Explicit conditional".
Yes. I will explain this.
> > +1. Commit: new schema update `add', in state Preparatory.
>
> Does "Commit" mean simple push to pretest or does it have to pass through
> push gate too?
I will clarify this.
> The two instances of "1." are because these can happen in parallel?
No. I failed to update the numbering.
> > +2. Apply: `add'.
>
> This is something which automated machinery does I think?
No. I will clarify this.
> > +3. Wait for all executions of old code to finish.
>
> this is automated also?
Not really.
> > +5. Apply: `constraint'.
>
> Does `constraint' go to `Needed' at this point, or does that depend on the
> nature of the change (and therefore whether it is "Code first" or "Explicit
> conditional"?
No, it doesn't. I will clarify this.
> > +"Push depends on schema update" is not currently implemented.
> > +
> > +"Checks for live old code" means
>
> These two phrases don't existing in this document.
>
> I think "Push depends on schema update" was called "Schema first" further
> up?
This is confusing. I will rewrite it.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |