111 sql = 'ALTER TABLE %s RENAME TO %s' % (etype, |
111 sql = 'ALTER TABLE %s RENAME TO %s' % (etype, |
112 ETYPE_NAME_MAP[etype]) |
112 ETYPE_NAME_MAP[etype]) |
113 print sql |
113 print sql |
114 sqlcu.execute(sql) |
114 sqlcu.execute(sql) |
115 # other table renaming done once schema has been read |
115 # other table renaming done once schema has been read |
|
116 # 3.6 migration |
|
117 sqlcu.execute("SELECT * FROM cw_CWRType WHERE cw_name='symetric'") |
|
118 if sqlcu.fetchall(): |
|
119 sql = dbhelper.sql_rename_col('cw_CWRType', 'cw_symetric', 'cw_symmetric', |
|
120 dbhelper.TYPE_MAPPING['Boolean'], True) |
|
121 sqlcu.execute(sql) |
|
122 sqlcu.execute("UPDATE cw_CWRType SET cw_name='symmetric' WHERE cw_name='symetric'") |
116 sidx = {} |
123 sidx = {} |
117 permsdict = deserialize_ertype_permissions(session) |
124 permsdict = deserialize_ertype_permissions(session) |
118 schema.reading_from_database = True |
125 schema.reading_from_database = True |
119 for eid, etype, desc in session.execute( |
126 for eid, etype, desc in session.execute( |
120 'Any X, N, D WHERE X is CWEType, X name N, X description D', |
127 'Any X, N, D WHERE X is CWEType, X name N, X description D', |
161 build_descr=False): |
168 build_descr=False): |
162 schema.eschema(etype)._specialized_type = stype |
169 schema.eschema(etype)._specialized_type = stype |
163 schema.eschema(stype)._specialized_by.append(etype) |
170 schema.eschema(stype)._specialized_by.append(etype) |
164 for eid, rtype, desc, sym, il, ftc in session.execute( |
171 for eid, rtype, desc, sym, il, ftc in session.execute( |
165 'Any X,N,D,S,I,FTC WHERE X is CWRType, X name N, X description D, ' |
172 'Any X,N,D,S,I,FTC WHERE X is CWRType, X name N, X description D, ' |
166 'X symetric S, X inlined I, X fulltext_container FTC', build_descr=False): |
173 'X symmetric S, X inlined I, X fulltext_container FTC', build_descr=False): |
167 rtype = ybo.RelationType(name=rtype, description=desc, |
174 rtype = ybo.RelationType(name=rtype, description=desc, |
168 symetric=bool(sym), inlined=bool(il), |
175 symmetric=bool(sym), inlined=bool(il), |
169 fulltext_container=ftc, eid=eid) |
176 fulltext_container=ftc, eid=eid) |
170 rschema = schema.add_relation_type(rtype) |
177 rschema = schema.add_relation_type(rtype) |
171 sidx[eid] = rschema |
178 sidx[eid] = rschema |
172 cstrsdict = deserialize_rdef_constraints(session) |
179 cstrsdict = deserialize_rdef_constraints(session) |
173 for values in session.execute( |
180 for values in session.execute( |
183 order=ord, description=desc, |
190 order=ord, description=desc, |
184 indexed=idx, fulltextindexed=ftidx, |
191 indexed=idx, fulltextindexed=ftidx, |
185 internationalizable=i18n, |
192 internationalizable=i18n, |
186 default=default, eid=rdefeid) |
193 default=default, eid=rdefeid) |
187 rdefs = schema.add_relation_def(rdef) |
194 rdefs = schema.add_relation_def(rdef) |
188 # rdefs can be None on duplicated relation definitions (e.g. symetrics) |
195 # rdefs can be None on duplicated relation definitions (e.g. symmetrics) |
189 if rdefs is not None: |
196 if rdefs is not None: |
190 set_perms(rdefs, permsdict) |
197 set_perms(rdefs, permsdict) |
191 for values in session.execute( |
198 for values in session.execute( |
192 'Any X,SE,RT,OE,CARD,ORD,DESC,C WHERE X is CWRelation, X relation_type RT,' |
199 'Any X,SE,RT,OE,CARD,ORD,DESC,C WHERE X is CWRelation, X relation_type RT,' |
193 'X cardinality CARD, X ordernum ORD, X description DESC, ' |
200 'X cardinality CARD, X ordernum ORD, X description DESC, ' |
196 rdef = ybo.RelationDefinition(sidx[seid].type, sidx[reid].type, sidx[teid].type, |
203 rdef = ybo.RelationDefinition(sidx[seid].type, sidx[reid].type, sidx[teid].type, |
197 constraints=cstrsdict.get(rdefeid, ()), |
204 constraints=cstrsdict.get(rdefeid, ()), |
198 cardinality=card, order=ord, description=desc, |
205 cardinality=card, order=ord, description=desc, |
199 composite=c, eid=rdefeid) |
206 composite=c, eid=rdefeid) |
200 rdefs = schema.add_relation_def(rdef) |
207 rdefs = schema.add_relation_def(rdef) |
201 # rdefs can be None on duplicated relation definitions (e.g. symetrics) |
208 # rdefs can be None on duplicated relation definitions (e.g. symmetrics) |
202 if rdefs is not None: |
209 if rdefs is not None: |
203 set_perms(rdefs, permsdict) |
210 set_perms(rdefs, permsdict) |
204 schema.infer_specialization_rules() |
211 schema.infer_specialization_rules() |
205 if _3_2_migration: |
212 if _3_2_migration: |
206 _update_database(schema, sqlcu) |
213 _update_database(schema, sqlcu) |
329 HAS_FULLTEXT_CONTAINER = True |
336 HAS_FULLTEXT_CONTAINER = True |
330 |
337 |
331 def rschema_relations_values(rschema): |
338 def rschema_relations_values(rschema): |
332 values = _ervalues(rschema) |
339 values = _ervalues(rschema) |
333 values['final'] = rschema.final |
340 values['final'] = rschema.final |
334 values['symetric'] = rschema.symetric |
341 values['symmetric'] = rschema.symmetric |
335 values['inlined'] = rschema.inlined |
342 values['inlined'] = rschema.inlined |
336 if HAS_FULLTEXT_CONTAINER: |
343 if HAS_FULLTEXT_CONTAINER: |
337 if isinstance(rschema.fulltext_container, str): |
344 if isinstance(rschema.fulltext_container, str): |
338 values['fulltext_container'] = unicode(rschema.fulltext_container) |
345 values['fulltext_container'] = unicode(rschema.fulltext_container) |
339 else: |
346 else: |