server/sources/rql2sql.py
changeset 5890 141b935a38fc
parent 5849 9db65b381028
parent 5887 3f55f0f10a22
child 5901 782b27eaf97a
equal deleted inserted replaced
5883:7a5f370c5be1 5890:141b935a38fc
   426         for compnode in tocheck:
   426         for compnode in tocheck:
   427             parents = set()
   427             parents = set()
   428             p = compnode.parent
   428             p = compnode.parent
   429             oor = None
   429             oor = None
   430             while not isinstance(p, Select):
   430             while not isinstance(p, Select):
   431                 if p in ors:
   431                 if p in ors or p is None: # p is None for nodes already in fakehaving
   432                     break
   432                     break
   433                 if isinstance(p, Or):
   433                 if isinstance(p, Or):
   434                     oor = p
   434                     oor = p
   435                 p = p.parent
   435                 p = p.parent
   436             else:
   436             else:
   437                 node = oor or compnode
   437                 node = oor or compnode
   438                 if not node in fakehaving:
   438                 fakehaving.append(node)
   439                     fakehaving.append(node)
   439                 node.parent.remove(node)
   440                     compnode.parent.remove(node)
       
   441     return fakehaving
   440     return fakehaving
   442 
   441 
   443 class SQLGenerator(object):
   442 class SQLGenerator(object):
   444     """
   443     """
   445     generation of SQL from the fully expanded RQL syntax tree
   444     generation of SQL from the fully expanded RQL syntax tree