On Apr 12, 2007, at 9:46 AM, Ants Aasma wrote:

>
> On Apr 12, 1:59 am, Michael Bayer <[EMAIL PROTECTED]> wrote:
>> agreed, as long as we know that saying "somecolumn != somecolumn" is
>> valid and produces False on all dbs (including frequent-offenders
>> firebird and ms-sql) ?  (thats how you interpreted IN (), right ?)
>
> It works (almost) ok in MSSQL-8, Sqlite-2/3, PostgreSQL 8.1/8.2, MySQL
> 5.0, Oracle 10g and Firebird 1.5.3. It works with literals, columns,
> expressions, subselect expressions, no rows subselects in all of them.
> It fails when the expression is a volatile function or a function with
> side effects (e.g. func.random().in_()). The latter two cases will
> work ok, if you compile it as ((CASE WHEN expr IS NULL THEN NULL ELSE
> 0 END) = 1)

see, now i am not liking this approach so much.  if someone says   
somecolumn.in_(), and it produces "(CASE WHEN <somecolumn> IS NULL  
THEN NULL ELSE 0 END) = 1", thats a *big* surprise.  i really dont  
want SA to be a very "thick" layer of guessage and fixing-the-users- 
mistakes.

i would almost say we compile somecolumn.in() to just... "0" (if that  
even works, havent tried)...but even then, if someone executes a  
function that is expected to have side effects (extremely rare  
situation), we may be overstepping.

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to