forbid the use of subselect in PURGE LOGS BEFORE command
mysql-test/r/subselect.result:
test result
mysql-test/t/subselect.test:
test case
sql/sql_yacc.yy:
forbid the use of subselect in PURGE LOGS BEFORE command
The bug report has demonstrated the following two problems.
1. If an ORDER/GROUP BY list includes a constant expression being
optimized away and, at the same time, containing single-row
subselects that return more that one row, no error is reported.
Strictly speaking the standard allows to ignore error in this case.
Yet, now a corresponding fatal error is reported in this case.
2. If a query requires sorting by expressions containing single-row
subselects that, however, return more than one row, then the execution
of the query may cause a server crash.
To fix this some code has been added that blocks execution of a subselect
item in case of a fatal error in the method Item_subselect::exec.
mysql-test/r/subselect.result:
Added a test cases for bug #24653.
mysql-test/t/subselect.test:
Added a test cases for bug #24653.
sql/filesort.cc:
Fixed bug #24653.
Added a check for fatal error after reading the next row from the table
in the function find_all_keys.
sql/item.cc:
Fixed bug #24653.
Down-ported calculation of the attribute with_subselect of for Item objects.
sql/item.h:
Fixed bug #24653.
Down-ported calculation of the attribute with_subselect of for Item objects.
sql/item_cmpfunc.cc:
Fixed bug #24653.
Down-ported calculation of the attribute with_subselect of for Item objects.
sql/item_cmpfunc.h:
Fixed bug #24653.
Down-ported calculation of the attribute with_subselect of for Item objects.
sql/item_func.cc:
Fixed bug #24653.
Down-ported calculation of the attribute with_subselect of for Item objects.
sql/item_subselect.cc:
Fixed bug #24653.
Added a check for fatal error in the method Item_subselect::exec
to block evaluation of subselects in erroneous situations.
Down-ported calculation of the attribute with_subselect of for Item objects.
sql/sql_select.cc:
Fixed bug #24653.
Added a check to verify that any constant expression used
in ORDER BY and/or GROUP BY lists which is optimized away
does not contain subselects returning more than one row.
If it does a fatal error is reported.
and no WHERE condition were applied for any subquery without tables.
mysql-test/r/subselect.result:
Added a test case for bug #24670.
mysql-test/t/subselect.test:
Added a test case for bug #24670.
sql/item_subselect.cc:
Fixed bug #24670: optimizations that are legal only for subqueries without tables
and no WHERE condition were applied for any subquery without tables.
Removed an assertion that caused an abort for subqueries without tables and no
WHERE condition.
Blocked substitution of a single-row subquery without tables for the constant
row from its select list when the subquery contained a WHERE condition.
This optimization is valid only for subquries without tables with no conditions.
Any subquery without tables with WHERE clause returns NULL if the WHERE condition
is FALSE. Erroneously it was always considered as non-nullable that could trigger
another optimization concerning IS NULL predicates which is applicable only for
non-nullable expressions and ultimately led to a wrong result returned by the outer
query.
Added a proper implementation of the virtual method may_be_null for class
subselect_single_select_engine.
sql/item_subselect.h:
Fixed bug #24670: optimizations that are legal only for subqueries without tables
and no WHERE condition were applied for any subquery without tables.
Made method may_by_null for class subselect_engine vvirtual.
into mysql.com:/home/hf/work/mysql-4.1-mrg
include/mysql.h:
Auto merged
mysql-test/r/subselect.result:
Auto merged
mysql-test/t/rename.test:
Auto merged
mysql-test/t/subselect.test:
Auto merged
sql-common/client.c:
Auto merged
sql/sql_class.h:
Auto merged
Makefile.am:
merging
client/mysqltest.c:
merging
mysql-test/t/mysql_client.test:
merging
- When returning metadata for scalar subqueries the actual type of the
column was calculated based on the value type, which limits the actual
type of a scalar subselect to the set of (currently) 3 basic types :
integer, double precision or string. This is the reason that columns
of types other then the basic ones (e.g. date/time) are reported as
being of the corresponding basic type.
Fixed by storing/returning information for the column type in addition
to the result type.
mysql-test/r/subselect.result:
Bug #11032: getObject() returns a String for a sub-query of type datetime
- test case
mysql-test/t/subselect.test:
Bug #11032: getObject() returns a String for a sub-query of type datetime
- test case
sql/item_subselect.cc:
Bug #11032: getObject() returns a String for a sub-query of type datetime
- store and return the field type as well in addition to result type for
single row subqueries
sql/item_subselect.h:
Bug #11032: getObject() returns a String for a sub-query of type datetime
- store and return the field type as well in addition to result type for
single row subqueries
If elements a not top-level IN subquery were accessed by an index and
the subquery result set included a NULL value then the quantified
predicate that contained the subquery was evaluated to NULL when
it should return a non-null value.
mysql-test/r/subselect.result:
Added a test case for bug #23478.
mysql-test/t/subselect.test:
Added a test case for bug #23478.
into neptunus.(none):/home/msvensson/mysql/mysql-4.1-maint
mysql-test/r/subselect.result:
Auto merged
mysql-test/t/ps.test:
Auto merged
mysql-test/t/subselect.test:
Auto merged
- ie. backport from 5.1
- also update testcase error dected by new version
mysql-test/include/show_msg.inc:
BitKeeper file /home/msvensson/mysql/same_tools/my41-same_tools/mysql-test/include/show_msg.inc
mysql-test/include/show_msg80.inc:
BitKeeper file /home/msvensson/mysql/same_tools/my41-same_tools/mysql-test/include/show_msg80.inc
BitKeeper/deleted/.del-rpl_chain_temp_table.test:
Delete: mysql-test/t/rpl_chain_temp_table.test
BitKeeper/deleted/.del-rpl_chain_temp_table.result:
Delete: mysql-test/r/rpl_chain_temp_table.result
BitKeeper/deleted/.del-rpl_failsafe.result:
Delete: mysql-test/r/rpl_failsafe.result
BitKeeper/deleted/.del-rpl_failsafe.test:
Delete: mysql-test/t/rpl_failsafe.test
BitKeeper/deleted/.del-rpl_heap.test:
Delete: mysql-test/t/rpl_heap.test
BitKeeper/deleted/.del-rpl_heap.result:
Delete: mysql-test/r/rpl_heap.result
BitKeeper/deleted/.del-rpl000018.result:
Delete: mysql-test/r/rpl000018.result
BitKeeper/deleted/.del-rpl000018.test:
Delete: mysql-test/t/rpl000018.test
client/Makefile.am:
Link mysqltest with mysys/my_copy.c
client/mysqltest.c:
Update mysqltest to latest version
mysql-test/include/have_multi_ndb.inc:
Remove old syntax "@filename" in favor of "--require filename"
mysql-test/include/master-slave.inc:
Remove old syntax "@filename" in favor of "--require filename"
mysql-test/include/ps_query.inc:
Remove the comment about no output now when it does.
mysql-test/r/check.result:
Update output from --send
mysql-test/r/connect.result:
Update result file for connect test after backport form 5.1
mysql-test/r/flush.result:
Update output from --send
mysql-test/r/flush_block_commit.result:
Update output from --send
mysql-test/r/func_misc.result:
Update output from --send
mysql-test/r/grant2.result:
Update output from --send
mysql-test/r/handler.result:
Update output from --send
mysql-test/r/kill.result:
Update output from --send
mysql-test/r/lock_multi.result:
Update output from --send
mysql-test/r/mix_innodb_myisam_binlog.result:
Update output from --send
mysql-test/r/mysqltest.result:
Update mysqltest.result after backport
mysql-test/r/ps_2myisam.result:
Update result as the output from query is now printed
mysql-test/r/ps_3innodb.result:
Update result as the output from query is now printed
mysql-test/r/ps_4heap.result:
Update result as the output from query is now printed
mysql-test/r/ps_5merge.result:
Update result as the output from query is now printed
mysql-test/r/ps_6bdb.result:
Update result as the output from query is now printed
mysql-test/r/ps_7ndb.result:
Update result as the output from query is now printed
mysql-test/r/rename.result:
Update output from --send
mysql-test/r/rpl000001.result:
Update output from --send
mysql-test/r/rpl_error_ignored_table.result:
Update output from --send
mysql-test/r/rpl_master_pos_wait.result:
Update output from --send
mysql-test/r/subselect.result:
Update result file after adding missing ;
mysql-test/r/synchronization.result:
Update output from --send
mysql-test/r/type_blob.result:
Update result file after adding missing ;
mysql-test/t/connect.test:
Backport test from 5.1
mysql-test/t/init_file.test:
Update test so something is printed
mysql-test/t/mysql_client_test.test:
Update test so result is sent to file and something is printed
mysql-test/t/mysqltest.test:
Backport latest mysqltest.test file
mysql-test/t/ps.test:
Move the --replace_column statement to just before the statetement it should replace
mysql-test/t/ps_1general.test:
Move the --replace_column statement to just before the statetement it should replace
mysql-test/t/ps_grant.test:
Remove the $DB, no other test uses it
mysql-test/t/rpl_flush_tables.test:
Fetch $SERVER_VERSION from the db server
mysql-test/t/rpl_trunc_temp.test:
Remove the selection of connection master after it's been disconnected already
mysql-test/t/subselect.test:
Add missing ;
mysql-test/t/type_blob.test:
Add missing ;
an ALL/ANY quantified subquery in HAVING.
The Item::split_sum_func2 method should not create Item_ref
for objects of any class derived from Item_subselect.
mysql-test/r/subselect.result:
Added a test case for bug #21853.
mysql-test/t/subselect.test:
Added a test case for bug #21853.
into macbook.gmz:/Users/kgeorge/mysql/work/B21180-4.1-opt
mysql-test/r/subselect.result:
merge of 4.1-opt
mysql-test/t/subselect.test:
merge of 4.1-opt
sql/opt_range.h:
merge of 4.1-opt
Must not use Item_direct_ref in HAVING because it points to
the new value (witch is not yet calculated for the first row).
mysql-test/r/subselect.result:
Bug #16255: Subquery in where
- test case
mysql-test/t/subselect.test:
Bug #16255: Subquery in where
- test case
sql/item_subselect.cc:
Bug #16255: Subquery in where
Must not use Item_direct_ref in HAVING because it points to
the new value (witch is not yet calculated for the first row).
Reseting subqueries with "quick" access methods was incomplete.
Partially backported the correct reseting of QUICK_SELECTs from 5.x.
mysql-test/r/subselect.result:
Bug #21180: Subselect with index for both WHERE and ORDER BY produces empty result
- test case
mysql-test/t/subselect.test:
Bug #21180: Subselect with index for both WHERE and ORDER BY produces empty result
- test case
sql/opt_range.cc:
Bug #21180: Subselect with index for both WHERE and ORDER BY produces empty result
- partially backported the correct reseting of QUICK_SELECTs from 5.x.
sql/opt_range.h:
Bug #21180: Subselect with index for both WHERE and ORDER BY produces empty result
- partially backported the correct reseting of QUICK_SELECTs from 5.x.
may return a wrong result.
An Item_sum_hybrid object has the was_values flag which indicates whether any
values were added to the sum function. By default it is set to true and reset
to false on any no_rows_in_result() call. This method is called only in
return_zero_rows() function. An ALL/ANY subquery can be optimized by MIN/MAX
optimization. The was_values flag is used to indicate whether the subquery
has returned at least one row. This bug occurs because return_zero_rows() is
called only when we know that the select will return zero rows before
starting any scans but often such information is not known.
In the reported case the return_zero_rows() function is not called and
the was_values flag is not reset to false and yet the subquery return no rows
Item_func_not_all and Item_func_nop_all functions return a wrong
comparison result.
The end_send_group() function now calls no_rows_in_result() for each item
in the fields_list if there is no rows were found for the (sub)query.
mysql-test/t/subselect.test:
Added test case for bug#18503: Queries with a quantified subquery returning empty set may return a wrong result.
mysql-test/r/subselect.result:
Added test case for bug#18503: Queries with a quantified subquery returning empty set may return a wrong result.
sql/sql_select.cc:
Fixed bug#18503: Queries with a quantified subquery returning empty set may return a wrong result.
The end_send_group() function now calls no_rows_in_result() for each item
in the fields_list if there is no matching rows were found.
The ALL/ANY subqueries are the subject of MIN/MAX optimization. The matter
of this optimization is to embed MIN() or MAX() function into the subquery
in order to get only one row by which we can tell whether the expression
with ALL/ANY subquery is true or false.
But when it is applied to a subquery like 'select a_constant' the reported bug
occurs. As no tables are specified in the subquery the do_select() function
isn't called for the optimized subquery and thus no values have been added
to a MIN()/MAX() function and it returns NULL instead of a_constant.
This leads to a wrong query result.
For the subquery like 'select a_constant' there is no reason to apply
MIN/MAX optimization because the subquery anyway will return at most one row.
Thus the Item_maxmin_subselect class is more appropriate for handling such
subqueries.
The Item_in_subselect::single_value_transformer() function now checks
whether tables are specified for the subquery. If no then this subselect is
handled like a UNION using an Item_maxmin_subselect object.
mysql-test/t/subselect.test:
Added test case for bug#16302: Quantified subquery without any tables gives wrong results
mysql-test/r/subselect.result:
Added test case for bug#16302: Quantified subquery without any tables gives wrong results
sql/item_subselect.cc:
Fixed bug#16302: Quantified subquery without any tables gives wrong results
The Item_in_subselect::single_value_transformer() function now checks
whether tables are specified for the subquery. If no then this subselect is
handled like a UNION using an Item_maxmin_subselect object.
Bug #10308: Parse 'purge master logs' with subselect correctly.
subselect.test:
Bug #10308: Test for 'purge master logs' with subselect.
subselect.result:
Bug #10308: Test result for 'purge master logs' with subselect.
mysql-test/r/subselect.result:
Bug #10308: Test result for 'purge master logs' with subselect.
mysql-test/t/subselect.test:
Bug #10308: Test for 'purge master logs' with subselect.
sql/sql_yacc.yy:
Bug #10308: Parse 'purge master logs' with subselect correctly.
Fixed bug #11479.
The JOIN::reinit method cannot call setup_tables
after the optimization phase since this function
removes some optimization settings for joined
tables. E.g. it resets values of the null_row flag to 0.
subselect.result, subselect.test:
Added a test case for bug #11479.
mysql-test/t/subselect.test:
Added a test case for bug #11479.
mysql-test/r/subselect.result:
Added a test case for bug #11479.
sql/sql_select.cc:
Fixed bug #11479.
The JOIN::reinit method cannot call setup_tables
after the optimization phase since this function
removes some optimization settings for joined
tables. E.g. it resets values of the null_row flag to 0.
mysql-test/r/subselect.result:
testst of IN subqueries with row
mysql-test/t/subselect.test:
tests of ion subqueries with row
sql/item.h:
add method to prevent of removing Item_ref_null_helper from HAVING
sql/item_cmpfunc.h:
Prevented removing of Item_test_isnotnull from HAVING
sql/item_subselect.cc:
fixed converting row IN subqueries
sql/sql_select.cc:
fixed debug print
Added a test case for bug #12392.
item_cmpfunc.cc:
Fixed bug #12392.
Missing handling of rows containing NULL components
when evaluating IN predicates caused a crash.
sql/item_cmpfunc.cc:
Fixed bug #12392.
Missing handling of rows containing NULL components
when evaluating IN predicates caused a crash.
mysql-test/r/subselect.result:
Added a test case for bug #12392.
mysql-test/t/subselect.test:
Added a test case for bug #12392.
- Fixed some error condtion when handling dates with 'T'
- Added extra test for bug #11867 (Wrong result with "... WHERE ROW( a, b ) IN ( SELECT DISTINCT a, b WHERE ...)" to show it's not yet fixed
- Safety fixes and cleanups
mysql-test/r/subselect.result:
Added extra test case to test case for bug #11867
(Result shows that current code is not yet right and needs to be fixed)
mysql-test/r/type_datetime.result:
More tests for dates of type CCYYMMDDTHHMMSS
mysql-test/t/subselect.test:
Added extra test case to test case for bug #11867
mysql-test/t/type_datetime.test:
More tests for dates of type CCYYMMDDTHHMMSS
sql-common/my_time.c:
Fixed handling of dates of type CCYYMMDDTHHMMSS
(Old code couldn't handle 2003-0304 or 2003-0003-02)
sql/slave.cc:
Indentation cleanup
sql/sql_parse.cc:
Added test of return value of get_system_var()
sql/sql_select.cc:
Removed unnecessary call to field->table->maybe_null
sql/sql_union.cc:
Indentation fixes
Added test case for bug #11867.
Fixed results for two existing test cases.
subselect.test:
Added test case for bug #11867.
item_subselect.cc:
Fixed bug #11867.
Added missing code in Item_in_subselect::row_value_transformer
that caused problems for queries with
ROW(elems) IN (SELECT DISTINCT cols FROM ...).
sql/item_subselect.cc:
Fixed bug #11867.
Added missing code in Item_in_subselect::row_value_transformer
that caused problems for queries with
ROW(elems) IN (SELECT DISTINCT cols FROM ...).
mysql-test/t/subselect.test:
Added test case for bug #11867.
mysql-test/r/subselect.result:
Added test case for bug #11867.
Fixed results for two existing test cases.
mysql-test/t/alias.test:
Added end marker for test to make future merges easier
mysql-test/t/alter_table.test:
Added end marker for test to make future merges easier
mysql-test/t/analyse.test:
Added end marker for test to make future merges easier
mysql-test/t/analyze.test:
Added end marker for test to make future merges easier
Fixed length of comment lines
mysql-test/t/ansi.test:
Added end marker for test to make future merges easier
mysql-test/t/archive.test:
Added end marker for test to make future merges easier
mysql-test/t/auto_increment.test:
Added end marker for test to make future merges easier
mysql-test/t/backup.test:
Added end marker for test to make future merges easier
mysql-test/t/bdb-alter-table-1.test:
Added end marker for test to make future merges easier
mysql-test/t/bdb-alter-table-2.test:
Added end marker for test to make future merges easier
mysql-test/t/bdb-crash.test:
Added end marker for test to make future merges easier
mysql-test/t/bdb-deadlock.test:
Added end marker for test to make future merges easier
mysql-test/t/bdb-deadlock.tminus:
Added end marker for test to make future merges easier
mysql-test/t/bdb.test:
Added end marker for test to make future merges easier
mysql-test/t/bdb_cache.test:
Added end marker for test to make future merges easier
mysql-test/t/bench_count_distinct.test:
Added end marker for test to make future merges easier
mysql-test/t/bigint.test:
Added end marker for test to make future merges easier
mysql-test/t/binary.test:
Added end marker for test to make future merges easier
mysql-test/t/blackhole.test:
Added end marker for test to make future merges easier
mysql-test/t/bool.test:
Added end marker for test to make future merges easier
mysql-test/t/bulk_replace.test:
Added end marker for test to make future merges easier
mysql-test/t/case.test:
Added end marker for test to make future merges easier
mysql-test/t/cast.test:
Added end marker for test to make future merges easier
mysql-test/t/check.test:
Added end marker for test to make future merges easier
mysql-test/t/comments.test:
Added end marker for test to make future merges easier
mysql-test/t/compare.test:
Added end marker for test to make future merges easier
mysql-test/t/connect.test:
Added end marker for test to make future merges easier
mysql-test/t/consistent_snapshot.test:
Added end marker for test to make future merges easier
mysql-test/t/constraints.test:
Added end marker for test to make future merges easier
mysql-test/t/count_distinct.test:
Added end marker for test to make future merges easier
mysql-test/t/count_distinct2.test:
Added end marker for test to make future merges easier
mysql-test/t/count_distinct3.test:
Added end marker for test to make future merges easier
mysql-test/t/create.test:
Added end marker for test to make future merges easier
mysql-test/t/create_select_tmp.test:
Added end marker for test to make future merges easier
mysql-test/t/csv.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_big5.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_collate.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_cp1250_ch.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_cp1251.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_cp932.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_create.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_gbk.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_latin1.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_latin1_de.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_latin2.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_many.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_mb.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_recoding.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_sjis.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_tis620.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_uca.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_ucs.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_ucs_binlog.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_ujis.test:
Added end marker for test to make future merges easier
mysql-test/t/ctype_utf8.test:
Added end marker for test to make future merges easier
mysql-test/t/date_formats.test:
Added end marker for test to make future merges easier
mysql-test/t/delayed.test:
Added end marker for test to make future merges easier
mysql-test/t/delete.test:
Added end marker for test to make future merges easier
mysql-test/t/derived.test:
Added end marker for test to make future merges easier
mysql-test/t/dirty_close.test:
Added end marker for test to make future merges easier
mysql-test/t/distinct.test:
Added end marker for test to make future merges easier
mysql-test/t/drop.test:
Added end marker for test to make future merges easier
mysql-test/t/drop_temp_table.test:
Added end marker for test to make future merges easier
mysql-test/t/empty_table.test:
Added end marker for test to make future merges easier
mysql-test/t/endspace.test:
Added end marker for test to make future merges easier
mysql-test/t/errors.test:
Added end marker for test to make future merges easier
mysql-test/t/exampledb.test:
Added end marker for test to make future merges easier
mysql-test/t/explain.test:
Added end marker for test to make future merges easier
mysql-test/t/flush.test:
Added end marker for test to make future merges easier
mysql-test/t/flush_block_commit.test:
Added end marker for test to make future merges easier
mysql-test/t/flush_table.test:
Added end marker for test to make future merges easier
mysql-test/t/foreign_key.test:
Added end marker for test to make future merges easier
mysql-test/t/fulltext.test:
Added end marker for test to make future merges easier
mysql-test/t/fulltext2.test:
Added end marker for test to make future merges easier
mysql-test/t/fulltext_cache.test:
Added end marker for test to make future merges easier
mysql-test/t/fulltext_distinct.test:
Added end marker for test to make future merges easier
mysql-test/t/fulltext_left_join.test:
Added end marker for test to make future merges easier
mysql-test/t/fulltext_multi.test:
Added end marker for test to make future merges easier
mysql-test/t/fulltext_order_by.test:
Added end marker for test to make future merges easier
mysql-test/t/fulltext_update.test:
Added end marker for test to make future merges easier
mysql-test/t/fulltext_var.test:
Added end marker for test to make future merges easier
mysql-test/t/func_compress.test:
Added end marker for test to make future merges easier
mysql-test/t/func_concat.test:
Added end marker for test to make future merges easier
mysql-test/t/func_crypt.test:
Added end marker for test to make future merges easier
mysql-test/t/func_date_add.test:
Added end marker for test to make future merges easier
mysql-test/t/func_default.test:
Added end marker for test to make future merges easier
mysql-test/t/func_des_encrypt.test:
Added end marker for test to make future merges easier
mysql-test/t/func_encrypt.test:
Added end marker for test to make future merges easier
mysql-test/t/func_encrypt_nossl.test:
Added end marker for test to make future merges easier
mysql-test/t/func_equal.test:
Added end marker for test to make future merges easier
mysql-test/t/func_gconcat.test:
Added end marker for test to make future merges easier
mysql-test/t/func_group.test:
Added end marker for test to make future merges easier
mysql-test/t/func_if.test:
Added end marker for test to make future merges easier
mysql-test/t/func_in.test:
Added end marker for test to make future merges easier
mysql-test/t/func_isnull.test:
Added end marker for test to make future merges easier
mysql-test/t/func_like.test:
Added end marker for test to make future merges easier
mysql-test/t/func_math.test:
Added end marker for test to make future merges easier
mysql-test/t/func_misc.test:
Added end marker for test to make future merges easier
mysql-test/t/func_op.test:
Added end marker for test to make future merges easier
mysql-test/t/func_regexp.test:
Added end marker for test to make future merges easier
mysql-test/t/func_sapdb.test:
Added end marker for test to make future merges easier
mysql-test/t/func_set.test:
Added end marker for test to make future merges easier
mysql-test/t/func_str.test:
Added end marker for test to make future merges easier
mysql-test/t/func_system.test:
Added end marker for test to make future merges easier
mysql-test/t/func_test.test:
Added end marker for test to make future merges easier
mysql-test/t/func_time.test:
Added end marker for test to make future merges easier
mysql-test/t/func_timestamp.test:
Added end marker for test to make future merges easier
mysql-test/t/gcc296.test:
Added end marker for test to make future merges easier
mysql-test/t/gis-rtree.test:
Added end marker for test to make future merges easier
mysql-test/t/gis.test:
Added end marker for test to make future merges easier
mysql-test/t/grant.test:
Added end marker for test to make future merges easier
mysql-test/t/grant2.test:
Added end marker for test to make future merges easier
mysql-test/t/grant_cache.test:
Added end marker for test to make future merges easier
mysql-test/t/group_by.test:
Added end marker for test to make future merges easier
mysql-test/t/handler.test:
Added end marker for test to make future merges easier
mysql-test/t/having.test:
Added end marker for test to make future merges easier
mysql-test/t/heap.test:
Added end marker for test to make future merges easier
mysql-test/t/heap_auto_increment.test:
Added end marker for test to make future merges easier
mysql-test/t/heap_btree.test:
Added end marker for test to make future merges easier
mysql-test/t/heap_hash.test:
Added end marker for test to make future merges easier
mysql-test/t/help.test:
Added end marker for test to make future merges easier
mysql-test/t/init_connect.test:
Added end marker for test to make future merges easier
mysql-test/t/init_file.test:
Added end marker for test to make future merges easier
mysql-test/t/innodb-deadlock.test:
Added end marker for test to make future merges easier
mysql-test/t/innodb-lock.test:
Added end marker for test to make future merges easier
mysql-test/t/innodb-replace.test:
Added end marker for test to make future merges easier
mysql-test/t/innodb.test:
Added end marker for test to make future merges easier
mysql-test/t/innodb_cache.test:
Added end marker for test to make future merges easier
mysql-test/t/innodb_handler.test:
Added end marker for test to make future merges easier
mysql-test/t/insert.test:
Added end marker for test to make future merges easier
mysql-test/t/insert_select-binlog.test:
Added end marker for test to make future merges easier
mysql-test/t/insert_select.test:
Added end marker for test to make future merges easier
mysql-test/t/insert_update.test:
Added end marker for test to make future merges easier
mysql-test/t/isam.test:
Added end marker for test to make future merges easier
mysql-test/t/join.test:
Added end marker for test to make future merges easier
mysql-test/t/join_crash.test:
Added end marker for test to make future merges easier
mysql-test/t/join_outer.test:
Added end marker for test to make future merges easier
mysql-test/t/key.test:
Added end marker for test to make future merges easier
mysql-test/t/key_cache.test:
Added end marker for test to make future merges easier
mysql-test/t/key_diff.test:
Added end marker for test to make future merges easier
mysql-test/t/key_primary.test:
Added end marker for test to make future merges easier
mysql-test/t/keywords.test:
Added end marker for test to make future merges easier
mysql-test/t/kill.test:
Added end marker for test to make future merges easier
mysql-test/t/limit.test:
Added end marker for test to make future merges easier
mysql-test/t/loaddata.test:
Added end marker for test to make future merges easier
mysql-test/t/lock.test:
Added end marker for test to make future merges easier
mysql-test/t/lock_multi.test:
Added end marker for test to make future merges easier
mysql-test/t/lock_tables_lost_commit.test:
Added end marker for test to make future merges easier
mysql-test/t/lowercase_table.test:
Added end marker for test to make future merges easier
mysql-test/t/lowercase_table2.test:
Added end marker for test to make future merges easier
mysql-test/t/lowercase_table3.test:
Added end marker for test to make future merges easier
mysql-test/t/lowercase_table_grant.test:
Added end marker for test to make future merges easier
mysql-test/t/lowercase_table_qcache.test:
Added end marker for test to make future merges easier
mysql-test/t/merge.test:
Added end marker for test to make future merges easier
mysql-test/t/metadata.test:
Added end marker for test to make future merges easier
mysql-test/t/mix_innodb_myisam_binlog.test:
Added end marker for test to make future merges easier
mysql-test/t/multi_statement.test:
Added end marker for test to make future merges easier
mysql-test/t/multi_update.test:
Added end marker for test to make future merges easier
mysql-test/t/myisam-blob.test:
Added end marker for test to make future merges easier
mysql-test/t/myisam.test:
Added end marker for test to make future merges easier
mysql-test/t/mysql_client_test.test:
Added end marker for test to make future merges easier
mysql-test/t/mysql_protocols.test:
Added end marker for test to make future merges easier
mysql-test/t/mysqlbinlog.test:
Added end marker for test to make future merges easier
mysql-test/t/mysqlbinlog2.test:
Added end marker for test to make future merges easier
mysql-test/t/mysqldump.test:
Added end marker for test to make future merges easier
mysql-test/t/mysqltest.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_alter_table.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_autodiscover.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_autodiscover2.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_basic.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_blob.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_cache.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_charset.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_config.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_database.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_grant.later:
Added end marker for test to make future merges easier
mysql-test/t/ndb_index.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_index_ordered.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_index_unique.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_insert.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_limit.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_lock.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_minmax.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_multi.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_replace.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_restore.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_subquery.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_transaction.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_truncate.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_types.test:
Added end marker for test to make future merges easier
mysql-test/t/ndb_update.test:
Added end marker for test to make future merges easier
mysql-test/t/negation_elimination.test:
Added end marker for test to make future merges easier
mysql-test/t/not_embedded_server.test:
Added end marker for test to make future merges easier
mysql-test/t/null.test:
Added end marker for test to make future merges easier
mysql-test/t/null_key.test:
Added end marker for test to make future merges easier
mysql-test/t/odbc.test:
Added end marker for test to make future merges easier
mysql-test/t/olap.test:
Added end marker for test to make future merges easier
mysql-test/t/openssl_1.test:
Added end marker for test to make future merges easier
mysql-test/t/order_by.test:
Added end marker for test to make future merges easier
mysql-test/t/order_fill_sortbuf.test:
Added end marker for test to make future merges easier
mysql-test/t/outfile.test:
Added end marker for test to make future merges easier
mysql-test/t/overflow.test:
Added end marker for test to make future merges easier
mysql-test/t/packet.test:
Added end marker for test to make future merges easier
mysql-test/t/preload.test:
Added end marker for test to make future merges easier
mysql-test/t/ps.test:
Added end marker for test to make future merges easier
mysql-test/t/ps_10nestset.test:
Added end marker for test to make future merges easier
mysql-test/t/ps_11bugs.test:
Added end marker for test to make future merges easier
mysql-test/t/ps_1general.test:
Added end marker for test to make future merges easier
mysql-test/t/ps_2myisam.test:
Added end marker for test to make future merges easier
mysql-test/t/ps_3innodb.test:
Added end marker for test to make future merges easier
mysql-test/t/ps_4heap.test:
Added end marker for test to make future merges easier
mysql-test/t/ps_5merge.test:
Added end marker for test to make future merges easier
mysql-test/t/ps_6bdb.test:
Added end marker for test to make future merges easier
mysql-test/t/ps_7ndb.test:
Added end marker for test to make future merges easier
mysql-test/t/ps_grant.test:
Added end marker for test to make future merges easier
mysql-test/t/query_cache.test:
Added end marker for test to make future merges easier
mysql-test/t/query_cache_merge.test:
Added end marker for test to make future merges easier
mysql-test/t/raid.test:
Added end marker for test to make future merges easier
mysql-test/t/range.test:
Added end marker for test to make future merges easier
mysql-test/t/rename.test:
Added end marker for test to make future merges easier
mysql-test/t/repair.test:
Added end marker for test to make future merges easier
mysql-test/t/replace.test:
Added end marker for test to make future merges easier
mysql-test/t/rollback.test:
Added end marker for test to make future merges easier
mysql-test/t/row.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl000001.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl000002.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl000004.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl000005.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl000006.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl000008.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl000009.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl000010.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl000011.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl000012.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl000013.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl000015.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl000017.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl000018.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_EE_error.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_alter.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_chain_temp_table.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_change_master.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_charset.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_commit_after_flush.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_create_database.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_ddl.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_deadlock.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_delete_all.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_do_grant.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_drop.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_drop_temp.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_empty_master_crash.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_error_ignored_table.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_failed_optimize.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_failsafe.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_flush_log_loop.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_flush_tables.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_free_items.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_get_lock.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_heap.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_ignore_grant.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_init_slave.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_innodb.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_insert_id.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_insert_ignore.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_loaddata.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_loaddata_rule_m.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_loaddata_rule_s.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_loaddatalocal.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_log.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_log_pos.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_many_optimize.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_master_pos_wait.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_max_relay_size.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_misc_functions.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_multi_delete.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_multi_delete2.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_multi_query.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_multi_update.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_multi_update2.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_multi_update3.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_mystery22.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_openssl.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_optimize.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_ps.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_redirect.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_relayrotate.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_relayspace.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_replicate_do.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_reset_slave.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_rewrite_db.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_rotate_logs.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_server_id1.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_server_id2.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_set_charset.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_skip_error.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_sporadic_master.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_start_stop_slave.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_temporary.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_timezone.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_trunc_binlog.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_until.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_user_variables.test:
Added end marker for test to make future merges easier
mysql-test/t/rpl_variables.test:
Added end marker for test to make future merges easier
mysql-test/t/select.test:
Added end marker for test to make future merges easier
mysql-test/t/select_found.test:
Added end marker for test to make future merges easier
mysql-test/t/select_safe.test:
Added end marker for test to make future merges easier
mysql-test/t/show_check.test:
Added end marker for test to make future merges easier
mysql-test/t/skip_name_resolve.test:
Added end marker for test to make future merges easier
mysql-test/t/sql_mode.test:
Added end marker for test to make future merges easier
mysql-test/t/status.test:
Added end marker for test to make future merges easier
mysql-test/t/subselect.test:
Added end marker for test to make future merges easier
mysql-test/t/subselect2.test:
Added end marker for test to make future merges easier
mysql-test/t/subselect_gis.test:
Added end marker for test to make future merges easier
mysql-test/t/subselect_innodb.test:
Added end marker for test to make future merges easier
mysql-test/t/symlink.test:
Added end marker for test to make future merges easier
mysql-test/t/synchronization.test:
Added end marker for test to make future merges easier
mysql-test/t/system_mysql_db.test:
Added end marker for test to make future merges easier
mysql-test/t/system_mysql_db_fix.test:
Added end marker for test to make future merges easier
mysql-test/t/system_mysql_db_refs.test:
Added end marker for test to make future merges easier
mysql-test/t/tablelock.test:
Added end marker for test to make future merges easier
mysql-test/t/temp_table.test:
Added end marker for test to make future merges easier
mysql-test/t/timezone.test:
Added end marker for test to make future merges easier
mysql-test/t/timezone2.test:
Added end marker for test to make future merges easier
mysql-test/t/timezone3.test:
Added end marker for test to make future merges easier
mysql-test/t/timezone_grant.test:
Added end marker for test to make future merges easier
mysql-test/t/truncate.test:
Added end marker for test to make future merges easier
mysql-test/t/type_blob.test:
Added end marker for test to make future merges easier
mysql-test/t/type_date.test:
Added end marker for test to make future merges easier
mysql-test/t/type_datetime.test:
Added end marker for test to make future merges easier
mysql-test/t/type_decimal.test:
Added end marker for test to make future merges easier
mysql-test/t/type_enum.test:
Added end marker for test to make future merges easier
mysql-test/t/type_float.test:
Added end marker for test to make future merges easier
mysql-test/t/type_nchar.test:
Added end marker for test to make future merges easier
mysql-test/t/type_ranges.test:
Added end marker for test to make future merges easier
mysql-test/t/type_set.test:
Added end marker for test to make future merges easier
mysql-test/t/type_time.test:
Added end marker for test to make future merges easier
mysql-test/t/type_timestamp.test:
Added end marker for test to make future merges easier
mysql-test/t/type_uint.test:
Added end marker for test to make future merges easier
mysql-test/t/type_year.test:
Added end marker for test to make future merges easier
mysql-test/t/union.test:
Added end marker for test to make future merges easier
mysql-test/t/update.test:
Added end marker for test to make future merges easier
mysql-test/t/user_var-binlog.test:
Added end marker for test to make future merges easier
mysql-test/t/user_var.test:
Added end marker for test to make future merges easier
mysql-test/t/varbinary.test:
Added end marker for test to make future merges easier
mysql-test/t/variables.test:
Added end marker for test to make future merges easier
mysql-test/t/warnings.test:
Added end marker for test to make future merges easier
mysql-test/r/subselect.result:
test fro bug 10020
mysql-test/t/subselect.test:
bug 10020 test suite
sql/item.cc:
any constant allowed here BUG#10020)
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
fixed bug in IN/ALL/ANY subqeries with HAVING clause (BUG#9350)
mysql-test/r/subselect.result:
added new subquery tests to make code covarage better
mysql-test/t/subselect.test:
added new subquery tests to make code covarage better
sql/item_subselect.cc:
fixed typo in comment
removed unused code
fixed bug with HAVING clause detectiuon (BUG#9350)
postreview changes
mysql-test/r/subselect.result:
result changing
fixed last test
test of transformation of left expression of subquery
mysql-test/t/subselect.test:
fixed last test
test of transformation of left expression of subquery
sql/item_subselect.cc:
fixfields made for left part of IN/ALL/ANY subquery before calling cols() to detect type of transformation (scalar or row)
similar action of both transformation moved to separate function
sql/item_subselect.h:
optimised field initialization and new method
into mysql.com:/home/psergey/mysql-4.1-bug8218
mysql-test/r/subselect.result:
Auto merged
mysql-test/t/subselect.test:
Auto merged
sql/sql_select.cc:
Auto merged
Remove TMP_TABLE_PARAM::copy_funcs_it. TMP_TABLE_PARAM is a member of JOIN which is
copied via memcpy, and List_iterator_fast TMP_TABLE_PARAM::copy_funcs_it ends up
pointing to the wrong List.
mysql-test/r/subselect.result:
Testcase for BUG#8218
mysql-test/t/subselect.test:
Testcase for BUG#8218
sql/sql_select.cc:
Fix for BUG#8218: Create/use own iterator since TMP_TABLE_PARAM::copy_funcs_it is removed.
mysql-test/r/subselect.result:
test depends on innodb moved from 'subselect' to 'subselect_innodb'
mysql-test/r/subselect_innodb.result:
test depends on innodb moved from 'subselect' to 'subselect_innodb'
mysql-test/t/subselect.test:
test depends on innodb moved from 'subselect' to 'subselect_innodb'
mysql-test/t/subselect_innodb.test:
test depends on innodb moved from 'subselect' to 'subselect_innodb'
mysql-test/r/subselect.result:
cleaning up of results of subselects test
mysql-test/t/subselect.test:
cleaning up of results of subselects test
sql/item_subselect.cc:
call result object cleupup on engine cleunup
sql/sql_class.cc:
added cleanup of select_max_min_finder_subselect
sql/sql_class.h:
added cleanup of select_max_min_finder_subselect
mysql-test/r/subselect.result:
Forward reference detection
mysql-test/t/subselect.test:
Forward reference detection
sql/item.cc:
now forward reference is detected via ref_pointer_array, because some literal constants are 'fixed' just after creation
sql/sql_base.cc:
fill ref_pointer_array with zerows for forward reference detection.
mysql-test/r/subselect.result:
Comparison subquery and row with nested rows
mysql-test/t/subselect.test:
Comparison subquery and row with nested rows
sql/item_subselect.cc:
check that row elements have the same dimention that SELECT list elements
fixed cols() method call (it have to be called only after fix_fields())
mysql-test/r/subselect.result:
Comparison subquery with * and row
mysql-test/t/subselect.test:
Comparison subquery with * and row
sql/item_cmpfunc.h:
initialization allowed_arg_cols for autodetection
sql/item_func.cc:
support of allowed_arg_cols autodetection by first argument
sql/item_func.h:
commant
sql/item_subselect.cc:
correct column number fetching for subqueries
sql/sql_lex.h:
method to check that UNION is prepared
mysql-test/r/subselect.result:
Testcase for BUG#7885
mysql-test/t/subselect.test:
Testcase for BUG#7885
sql/item_subselect.cc:
Fix for BUG#7885: In Item_subselect::fix_fields, return error if engine->prepare fails.
Also removed redundant code line.
Added a couple of new test cases for bug #7351.
mysql-test/t/subselect.test:
Added a couple of new test cases for bug #7351.
mysql-test/r/subselect.result:
Added a couple of new test cases for bug #7351.
Added test cases for bug #7351.
item_cmpfunc.cc:
Fixed bug #7351: incorrect result for a query with a
subquery returning empty set.
If in the predicate v IN (SELECT a FROM t WHERE cond)
v is null, then the result of the predicate is either
INKNOWN or FALSE. It is FALSE if the subquery returns
an empty set.
item_subselect.cc:
Fixed bug #7351: incorrect result for a query with a
subquery returning empty set.
The problem was due to not a quite legal transformation
for 'IN' subqueries. A subquery containing a predicate
of the form
v IN (SELECT a FROM t WHERE cond)
was transformed into
EXISTS(SELECT a FROM t WHERE cond AND (a=v OR a IS NULL)).
Yet, this transformation is valid only if v is not null.
If v is null, then, in the case when
(SELECT a FROM t WHERE cond) returns an empty set the value
of the predicate is FALSE, otherwise the result of the
predicate is INKNOWN.
The fix resolves this problem by changing the result
of the transformation to
EXISTS(SELECT a FROM t WHERE cond AND (v IS NULL OR (a=v OR a IS NULL)))
in the case when v is nullable.
The new transformation prevents applying the lookup
optimization for IN subqueries. To make it still
applicable we have to introduce guarded access methods.
sql/item_subselect.cc:
Fixed bug #7351: incorrect result for a query with a
subquery returning empty set.
The problem was due to not a quite legal transformation
for 'IN' subqueries. A subquery containing a predicate
of the form
v IN (SELECT a FROM t WHERE cond)
was transformed into
EXISTS(SELECT a FROM t WHERE cond AND (a=v OR a IS NULL)).
Yet, this transformation is valid only if v is not null.
If v is null, then, in the case when
(SELECT a FROM t WHERE cond) returns an empty set the value
of the predicate is FALSE, otherwise the result of the
predicate is INKNOWN.
The fix resolves this problem by changing the result
of the transformation to
EXISTS(SELECT a FROM t WHERE cond AND (v IS NULL OR (a=v OR a IS NULL)))
in the case when v is nullable.
The new transformation prevents applying the lookup
optimization for IN subqueries. To make it still
applicable we have to introduce guarded access methods.
sql/item_cmpfunc.cc:
Fixed bug #7351: incorrect result for a query with a
subquery returning empty set.
If in the predicate v IN (SELECT a FROM t WHERE cond)
v is null, then the result of the predicate is either
INKNOWN or FALSE. It is FALSE if the subquery returns
an empty set.
mysql-test/t/subselect.test:
Added test cases for bug #7351.
mysql-test/r/subselect.result:
Added test cases for bug #7351.
refernces if subqueri is not in HAVING clause (BUG#7079)
and the same used for subquery transformetion
mysql-test/r/subselect.result:
reference on changable fields from subquery
mysql-test/t/subselect.test:
reference on changable fields from subquery
sql/item.cc:
new reference which refer to current value not to result used
sql/item.h:
new reference which refer to current value not to result used
sql/item_subselect.cc:
new reference which refer to current value not to result used
sql/item_cmpfunc.cc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/item_sum.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/r/subselect.result:
SCCS merged
mysql-test/t/subselect.test:
SCCS merged
mysql-test/r/subselect.result:
Equal operation under row and empty subquery
mysql-test/t/subselect.test:
Equal operation under row and empty subquery
sql/item.h:
init values to avoid junk returning in case of null value asking without assigning value
results." a.k.a. "Proper cleanup of subqueries is missing for SET and DO
statements". (Version #2 with after-review fixes).
To perform proper cleanup for statements that can contain subqueries
but don't have main select we must call free_undelaid_joins().
mysql-test/r/subselect.result:
Added test for bug #6462 "Same request on same data returns different
results." a.k.a. "Proper cleanup of subqueries is missing for SET and DO
statements".
mysql-test/t/subselect.test:
Added test for bug #6462 "Same request on same data returns different
results." a.k.a. "Proper cleanup of subqueries is missing for SET and DO
statements".
sql/set_var.cc:
Added missing cleanup of joins used in subqueries to SET statement.
sql/sql_do.cc:
Added missing cleanup of joins used in subqueries to DO statement.