server/sources/rql2sql.py
branchstable
changeset 5887 3f55f0f10a22
parent 5844 df7608ecea29
child 5890 141b935a38fc
child 5898 5630bd8f98d9
equal deleted inserted replaced
5886:00a78298d30d 5887:3f55f0f10a22
   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