I have a fairly complex SQL query which looks like this:
sql.or_(
sql.and_(model.SurveyTreeItem.type=="module",
model.SurveyTreeItem.skip_children==False,
sql.exists().correlate(model.Risk.__table__).where(sql.and_(
model.Risk.session_id==model.SurveyTreeItem.session_id,
model.Risk.type=="risk",
model.Risk.inventory=="no",
model.Risk.depth>model.SurveyTreeItem.depth,
model.Risk.path.like(model.SurveyTreeItem.path+"%")))),
sql.and_(model.Risk.id==model.SurveyTreeItem.id,
model.Risk.type=="risk",
model.Risk.inventory=="no"))
When printing the resulting clause list I get this:
tree.type = :type_1 AND tree.skip_children = :skip_children_1 AND
(EXISTS (SELECT *
FROM tree
WHERE tree.session_id = tree.session_id AND tree.type = :type_2 AND
risk.inventory = :inventory_1 AND tree.depth > tree.depth AND tree.path
LIKE tree.path || :path_1)) OR tree.id = tree.id AND tree.type = :type_3
AND risk.inventory = :inventory_2
From what I can see this is not correct: there should be parenthesis to
make sure the ANDs and ORs are grouped correctly. Does this look like a
bug, or am I missing something?
Wichert.
--
Wichert Akkerman <[email protected]> It is simple to make things.
http://www.wiggy.net/ It is hard to make things simple.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---