server/schemaserial.py
changeset 10061 ecbfec2da8a2
parent 9503 562cef272a35
parent 10054 8f7291354095
child 10074 ab956b780d4e
equal deleted inserted replaced
10060:08dc10ef9ab1 10061:ecbfec2da8a2
   419         values = {'x': eschema.eid, 'et': specialized_type.eid}
   419         values = {'x': eschema.eid, 'et': specialized_type.eid}
   420         yield 'SET X specializes ET WHERE X eid %(x)s, ET eid %(et)s', values
   420         yield 'SET X specializes ET WHERE X eid %(x)s, ET eid %(et)s', values
   421 
   421 
   422 def uniquetogether2rqls(eschema):
   422 def uniquetogether2rqls(eschema):
   423     rql_args = []
   423     rql_args = []
       
   424     # robustness against duplicated CWUniqueTogetherConstraint (pre 3.18)
       
   425     columnset = set()
   424     for columns in eschema._unique_together:
   426     for columns in eschema._unique_together:
       
   427         if columns in columnset:
       
   428             print ('schemaserial: skipping duplicate unique together %r %r' %
       
   429                    (eschema.type, columns))
       
   430             continue
       
   431         columnset.add(columns)
   425         rql, args = _uniquetogether2rql(eschema, columns)
   432         rql, args = _uniquetogether2rql(eschema, columns)
   426         args['name'] = y2sql.unique_index_name(eschema, columns)
   433         args['name'] = y2sql.unique_index_name(eschema, columns)
   427         rql_args.append((rql, args))
   434         rql_args.append((rql, args))
   428     return rql_args
   435     return rql_args
   429 
   436