Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 19 Jan 2017 11:10:47 +0100] rev 11905
[migration] Avoid unnecessary intermediary commit when migrating a schema
Those are low-hanging fruit following changes in ac74476d686c (Fix addition of
entity type including boundary constraints on its own attributes): this is no
more necesary to commit the get a new relation type definition in the schema.
At some point we could/should probably do more on this topic to avoid
intermediary commit on e.g. entity type addition, but this requires more work.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Wed, 18 Jan 2017 15:04:27 +0100] rev 11904
[migration] Fix addition of entity type including boundary constraints on its own attributes
This was failing because of the sequence of sql executing when adding an
attribute:
1. add entity type <commit>
2. add relation type for attribute 1 <commit>
3. add attribute 1 and associated constraints <commit>
etc.
In the case of e.g. start/end constraint, we were trying to add the constraint
before addition of the constrained attribute (e.g. add constraint on 'start'
referencing 'end', but only 'start' has been added yet, not 'end').
This patch fix this by:
* adding the relation type to the schema without having to commit, but keeping
the operation to revert the addition if necessary - this allows to a single
commit for all attributes of the entity type ;
* using a LateOperation on constraint operation, so we ensure attributes are
actually added before any constraint is added.
Sylvain Thénault <sylvain.thenault@logilab.fr> [Thu, 19 Jan 2017 09:53:31 +0100] rev 11903
[schema sync] Refactor AfterAddCWRTypeHook and AfterAddCWComputedRTypeHook so the latter inherit from the former
and enhance their docstring.