diff options
author | unknown <malff/marcsql@weblab.(none)> | 2007-01-29 17:32:52 -0700 |
---|---|---|
committer | unknown <malff/marcsql@weblab.(none)> | 2007-01-29 17:32:52 -0700 |
commit | a1e20e04d8f91f607a6c498989743f205dafa297 (patch) | |
tree | aa9f5f2fbc0beca1ae655d40364cf15374583595 /ndb/include/kernel/signaldata/TransIdAI.hpp | |
parent | b66ab7f80b629c6d33d7e4ac01002cbb7676df18 (diff) | |
download | mariadb-git-a1e20e04d8f91f607a6c498989743f205dafa297.tar.gz |
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.
mysql-test/r/subselect.result:
Implement IN predicate special exceptions with subselects.
mysql-test/t/subselect.test:
Implement IN predicate special exceptions with subselects.
sql/item_subselect.cc:
Implement IN predicate special exceptions with subselects.
sql/item_subselect.h:
Implement IN predicate special exceptions with subselects.
sql/sql_yacc.yy:
Implement IN predicate special exceptions with subselects, cleanup.
Diffstat (limited to 'ndb/include/kernel/signaldata/TransIdAI.hpp')
0 files changed, 0 insertions, 0 deletions