server/schemaserial.py
changeset 4467 0e73d299730a
parent 4312 740397c24ec3
child 4475 37c413a07216
equal deleted inserted replaced
4466:8b0ca7904820 4467:0e73d299730a
   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: