From: Ian B. <ia...@co...> - 2005-11-16 17:51:50
|
Does anyone see a backward compatibility problem with making "AND(None, X)" be the same as "X"? This has some consistency with .select(None) meaning "select everything". So when you AND a clause to everything, you get the original clause back. This is nice for dynamically building queries. *But*, OR(None, X) = None is boring. But it seems like the correct analog. Though, really, I could just not allow None in that case. There is some overlap with genuine queries, in that None maps to NULL. But I can't see what the use of static boolean expressions with NULL would be (static, in that the expression is entirely evaluatable in Python without the database). Do people see any backward compatibility problem with this? I could potentially only enable this with a keyword argument to AND, like AND(None, X, ignoreNone=True), but I'm not sure if that is important. Another issue is that sometimes sqlbuilder expressions unintentionally get evaluated. Like if you do "Class.q.column in [1, 2, 3]" you'll get a boolean back, but you probably meant to get an expression back. I almost thing that some of these boolean expressions should give errors when they get True/False because of this. -- Ian Bicking / ia...@co... / http://blog.ianbicking.org |