misc/migration/3.22.3_Any.py
author Sylvain Thénault <sylvain.thenault@logilab.fr>
Thu, 16 Jun 2016 17:45:16 +0200
changeset 11289 3e69bccc2022
permissions -rw-r--r--
[sql gen] Properly create UNIQUE index on non string column. Closes #13728492 Unique was previously detected in a loop triggered only for String columns.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11289
3e69bccc2022 [sql gen] Properly create UNIQUE index on non string column. Closes #13728492
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     1
from yams.constraints import UniqueConstraint
3e69bccc2022 [sql gen] Properly create UNIQUE index on non string column. Closes #13728492
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     2
3e69bccc2022 [sql gen] Properly create UNIQUE index on non string column. Closes #13728492
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     3
for rschema in schema.relations():
3e69bccc2022 [sql gen] Properly create UNIQUE index on non string column. Closes #13728492
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     4
    if rschema.rule or not rschema.final:
3e69bccc2022 [sql gen] Properly create UNIQUE index on non string column. Closes #13728492
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     5
        continue
3e69bccc2022 [sql gen] Properly create UNIQUE index on non string column. Closes #13728492
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     6
    for rdef in rschema.rdefs.values():
3e69bccc2022 [sql gen] Properly create UNIQUE index on non string column. Closes #13728492
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     7
        if (rdef.object != 'String'
3e69bccc2022 [sql gen] Properly create UNIQUE index on non string column. Closes #13728492
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     8
                and any(isinstance(cstr, UniqueConstraint) for cstr in rdef.constraints)):
3e69bccc2022 [sql gen] Properly create UNIQUE index on non string column. Closes #13728492
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     9
            table = 'cw_{0}'.format(rdef.subject)
3e69bccc2022 [sql gen] Properly create UNIQUE index on non string column. Closes #13728492
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    10
            column = 'cw_{0}'.format(rdef.rtype)
3e69bccc2022 [sql gen] Properly create UNIQUE index on non string column. Closes #13728492
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    11
            repo.system_source.create_index(cnx, table, column, unique=True)