We are seeing very strange behaviour in our OR statements:
> SELECT l.list AS list, l.locked AS usr
FROM svr_lists_questions lq, svr_lists l
WHERE ( l.locked != '{a7372de3-92b7-408b-8874-373b883b19a6}' )
OR ( 1=0 )
+----------------------------------------+----------------------------------
------+
| list | usr
|
+----------------------------------------+----------------------------------
------+
| {0aa12786-331b-f691-8d83-39d78ae8554e} |
{16c1b998-4daf-7379-cefb-276cecb634e8} |
+----------------------------------------+----------------------------------
------+
Query OK, 1 rows in set (0,74 sec)
> SELECT l.list AS list, l.locked AS usr
FROM svr_lists_questions lq, svr_lists l
WHERE ( l.locked != '{a7372de3-92b7-408b-8874-373b883b19a6}' )
OR
lq.question IN
SELECT lq.question
FROM svr_lists_questions lq, svr_lists l
WHERE lq.list = l.list
AND l.locked != '{a7372de3-92b7-408b-8874-373b883b19a6}'
GROUP BY lq.question
)
AND lq.list = l.list
)
+------+-----+
| list | usr |
+------+-----+
+------+-----+
Query OK, 0 rows in set (0,64 sec)
Note that "(criteria 1) OR (1=0)" returns a result, but
"(criteria 1) OR (criteria 2)" returns an empty table!
Criteria 2 should be a don´t care factor in this, since (1=0) is obviously
false.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Börkur Sigurbjörnsson, developer
borkur@handpoint.com
tel: + 354 561 0700
mobile: + 354 869 2122
handPoint
www.handpoint.com
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~