summaryrefslogtreecommitdiff
path: root/ndb/include/kernel/signaldata/TransIdAI.hpp
diff options
context:
space:
mode:
authorunknown <malff/marcsql@weblab.(none)>2007-01-29 17:32:52 -0700
committerunknown <malff/marcsql@weblab.(none)>2007-01-29 17:32:52 -0700
commita1e20e04d8f91f607a6c498989743f205dafa297 (patch)
treeaa9f5f2fbc0beca1ae655d40364cf15374583595 /ndb/include/kernel/signaldata/TransIdAI.hpp
parentb66ab7f80b629c6d33d7e4ac01002cbb7676df18 (diff)
downloadmariadb-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