malff/marcsql@weblab.(none)
f5ad4eed95
Bug#21904 (parser problem when using IN with a double "(())")
...
Before this fix, a IN predicate of the form: "IN (( subselect ))", with two
parenthesis, would be evaluated as a single row subselect: if the subselect
returns more that 1 row, the statement would fail.
The SQL:2003 standard defines a special exception in the specification,
and mandates that this particular form of IN predicate shall be equivalent
to "IN ( subselect )", which involves a table subquery and works with more
than 1 row.
This fix implements "IN (( subselect ))", "IN ((( subselect )))" etc
as per the SQL:2003 requirement.
All the details related to the implementation of this change have been
commented in the code, and the relevant sections of the SQL:2003 spec
are given for reference, so they are not repeated here.
Having access to the spec is a requirement to review in depth this patch.
2007-01-29 17:32:52 -07:00
..
2006-10-16 17:39:38 +10:00
2006-10-06 11:03:14 +05:00
2006-09-22 14:42:43 +02:00
2006-09-29 16:15:57 +05:00
2006-11-17 10:30:16 +04:00
2006-11-17 10:30:16 +04:00
2006-11-27 16:25:52 +01:00
2006-08-23 18:37:04 -04:00
2006-11-20 22:42:06 +02:00
2006-10-16 17:39:38 +10:00
2006-10-16 17:39:38 +10:00
2006-10-16 17:39:38 +10:00
2006-10-16 17:39:38 +10:00
2006-10-16 17:39:38 +10:00
2006-11-20 22:42:06 +02:00
2006-11-20 22:42:06 +02:00
2006-10-16 17:39:38 +10:00
2006-10-16 17:39:38 +10:00
2006-11-20 22:42:06 +02:00
2006-10-16 17:39:38 +10:00
2006-11-20 22:42:06 +02:00
2006-10-16 17:39:38 +10:00
2006-11-20 22:42:06 +02:00
2006-10-16 17:39:38 +10:00
2006-11-20 22:42:06 +02:00
2006-10-24 08:29:37 +02:00
2006-11-27 16:25:52 +01:00
2006-10-16 17:39:38 +10:00
2006-10-11 19:44:12 +04:00
2006-11-29 02:44:12 +03:00
2006-10-31 20:51:09 +03:00
2006-08-08 14:40:07 +05:00
2006-07-02 14:35:45 +04:00
2006-11-29 02:44:12 +03:00
2006-11-17 10:30:16 +04:00
2006-07-04 12:56:53 +05:00
2006-07-05 11:20:10 +02:00
2006-08-24 15:49:12 +04:00
2006-11-16 14:19:37 +03:00
2006-11-16 14:06:51 +03:00
2007-01-29 17:32:52 -07:00
2007-01-29 17:32:52 -07:00
2006-11-29 02:44:12 +03:00
2006-11-17 10:30:16 +04:00
2006-11-27 16:25:52 +01:00
2006-11-17 10:30:16 +04:00
2006-11-17 10:30:16 +04:00
2006-11-17 10:30:16 +04:00
2006-09-21 11:35:38 +04:00
2006-08-21 12:18:59 +04:00
2006-11-20 22:46:52 +02:00
2006-11-14 12:48:17 +02:00
2006-10-03 20:28:59 +02:00
2006-11-28 18:08:30 +01:00
2006-09-01 10:32:12 +02:00
2006-10-25 20:14:39 +05:00
2006-10-25 20:14:39 +05:00
2006-11-17 10:30:16 +04:00
2006-11-29 02:44:12 +03:00
2006-11-20 22:42:06 +02:00
2006-11-20 22:42:06 +02:00
2006-10-24 14:42:08 -06:00
2006-10-16 17:39:38 +10:00
2006-10-20 15:47:52 +04:00
2006-11-16 23:16:44 +04:00
2006-11-16 23:16:44 +04:00
2006-11-01 14:50:14 -08:00
2006-11-21 16:53:33 +03:00
2006-07-08 04:07:43 +04:00
2006-11-20 22:46:52 +02:00
2006-09-28 20:17:17 -07:00
2006-12-11 17:15:08 -07:00
2006-11-17 12:14:29 -07:00
2006-08-02 22:18:49 -07:00
2006-08-02 22:18:49 -07:00
2006-11-02 17:39:52 -05:00
2006-06-27 00:47:52 +04:00
2006-06-28 16:28:29 +03:00
2006-11-20 22:42:06 +02:00
2006-05-06 11:25:59 +04:00
2006-09-28 14:32:30 -04:00
2006-11-17 10:30:16 +04:00
2006-11-29 02:44:12 +03:00
2006-08-22 11:47:52 +04:00
2006-12-01 13:25:06 +03:00
2006-12-01 13:25:06 +03:00
2006-10-13 08:57:15 -04:00
2006-11-20 22:42:06 +02:00
2006-08-02 22:18:49 -07:00
2006-06-26 19:14:35 +02:00
2006-10-06 13:34:07 +04:00
2006-12-11 17:15:08 -07:00
2006-12-11 17:15:08 -07:00
2006-09-01 04:23:04 -07:00
2006-10-06 13:34:07 +04:00
2006-08-21 16:21:48 +04:00
2006-11-27 16:25:52 +01:00
2006-12-01 13:25:06 +03:00
2006-10-18 00:14:14 +04:00
2006-11-20 22:46:52 +02:00
2006-09-27 19:21:29 +05:00
2006-11-27 16:25:52 +01:00
2006-10-31 20:51:09 +03:00
2006-11-17 10:30:16 +04:00
2006-12-19 15:32:02 +03:00
2006-10-30 10:14:03 +04:00
2006-11-17 10:30:16 +04:00
2006-11-13 15:40:22 -07:00
2006-09-21 11:35:38 +04:00
2006-07-18 09:32:49 +02:00
2006-07-09 13:03:51 +04:00
2006-11-02 17:39:52 -05:00
2006-11-20 22:42:06 +02:00
2006-11-20 22:42:06 +02:00
2006-10-13 08:57:15 -04:00
2007-01-29 17:32:52 -07:00
2006-10-20 14:32:31 +04:00
2006-09-07 00:59:08 +02:00
2006-11-20 22:42:06 +02:00
2006-06-14 23:54:08 +04:00
2006-11-27 16:25:52 +01:00
2006-10-31 17:31:56 -08:00
2006-11-10 15:05:38 +03:00
2006-11-20 22:42:06 +02:00
2006-09-22 14:42:43 +02:00
2006-09-22 14:42:43 +02:00
2006-11-20 22:42:06 +02:00
2006-08-09 00:05:42 +04:00