author | Simon Chabot <simon.chabot@logilab.fr> |
Thu, 05 Mar 2020 17:50:00 +0100 | |
branch | 3.26 |
changeset 12909 | a3d682abd5c3 |
parent 11291 | 7c565548fb09 |
permissions | -rw-r--r-- |
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) |