server/schemaserial.py
changeset 10074 ab956b780d4e
parent 10025 7b72ecc3f4d2
parent 10061 ecbfec2da8a2
child 10095 200bd6a601dc
equal deleted inserted replaced
10068:1b0cb3c6c95e 10074:ab956b780d4e
   452         values = {'x': eschema.eid, 'et': specialized_type.eid}
   452         values = {'x': eschema.eid, 'et': specialized_type.eid}
   453         yield 'SET X specializes ET WHERE X eid %(x)s, ET eid %(et)s', values
   453         yield 'SET X specializes ET WHERE X eid %(x)s, ET eid %(et)s', values
   454 
   454 
   455 def uniquetogether2rqls(eschema):
   455 def uniquetogether2rqls(eschema):
   456     rql_args = []
   456     rql_args = []
       
   457     # robustness against duplicated CWUniqueTogetherConstraint (pre 3.18)
       
   458     columnset = set()
   457     for columns in eschema._unique_together:
   459     for columns in eschema._unique_together:
       
   460         if columns in columnset:
       
   461             print ('schemaserial: skipping duplicate unique together %r %r' %
       
   462                    (eschema.type, columns))
       
   463             continue
       
   464         columnset.add(columns)
   458         rql, args = _uniquetogether2rql(eschema, columns)
   465         rql, args = _uniquetogether2rql(eschema, columns)
   459         args['name'] = y2sql.unique_index_name(eschema, columns)
   466         args['name'] = y2sql.unique_index_name(eschema, columns)
   460         rql_args.append((rql, args))
   467         rql_args.append((rql, args))
   461     return rql_args
   468     return rql_args
   462 
   469