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.
fixed null processing in NOT operation used in ALL subquery (Bug #6247)
mysql-test/r/subselect.result:
new tests of ALL/ANY wiews
mysql-test/t/subselect.test:
new tests of ALL/ANY wiews
sql/item_cmpfunc.cc:
fixed special NOT ALL processing
fixed processing max/min optimized subqueries with empty results (added methods to detect empty results) and special NOP operation to process them for SOME/ANY sobqueries
sql/item_cmpfunc.h:
fixed processing max/min optimized subqueries with empty results (added methods to detect empty results) and special NOP operation to process them for SOME/ANY sobqueries
sql/item_subselect.cc:
reporting empty result added for max/min subqueries
sql/item_subselect.h:
reporting empty result added for max/min subqueries
sql/item_sum.cc:
reporting empty result added fox max/min aggregate functions
sql/item_sum.h:
reporting empty result added fox max/min aggregate functions
sql/sql_class.cc:
reporting empty result added for max/min subqueries
sql/sql_parse.cc:
reporting empty result added for max/min subqueries
sql/sql_union.cc:
reporting empty result added for max/min subqueries
mysql-test/r/subselect.result:
subqueries with full text search
mysql-test/t/subselect.test:
subqueries with full text search
sql/ha_myisam.h:
backport Serg's fix of FT interface
sql/handler.h:
backport Serg's fix of FT interface
sql/opt_range.h:
backport Serg's fix of FT interface
sql/sql_select.cc:
comment for previous patch
fixed cleunup of TMP_TABLE_PARAM
(BUG#6406)
mysql-test/r/subselect.result:
primary query with temporary table and subquery with groupping
mysql-test/t/subselect.test:
primary query with temporary table and subquery with groupping
sql/sql_class.h:
fixed cleunup of TMP_TABLE_PARAM
sql/sql_select.cc:
uncacheable test made simplier
fixed joincleunup to avoid double deletin tables, and too earlyfull cleanup in case of EXPLAIN
mysql-test/r/subselect.result:
Subselect in non-select command just after connection
mysql-test/t/subselect.test:
Subselect in non-select command just after connection
sql/sql_lex.cc:
moved procedure initialization
sql/sql_parse.cc:
moved procedure initialization
improved mechanisn of detection posibility to be NULL for single row queries
switched off substitution optimisation for single row subqueries in PS due to problem in resolving substituted expressions
(changes to make subselects test working with PS protocol)
mysql-test/r/subselect.result:
removed incorrect error message about aggregate functions
improved mechanisn of detection posibility to be NULL for single row queries
mysql-test/t/subselect.test:
removed incorrect error message about aggregate functions
sql/item_subselect.cc:
removed incorrect error message about aggregate functions
switched off substitution optimisation for single row subqueries in PS due to problem in resolving substituted expressions
improved mechanisn of detection posibility to be NULL for single row queries
sql/item_subselect.h:
new method to help in NULL ability detection
prepared statements when LIMIT is used" and post-review comments.
The fix changes the approach we calculate the need for ORDER BY
in UNION: the previous was not PS friendly, as it damaged SELECT_LEX
options in case of single select.
mysql-test/r/ps.result:
Test results fixed: the test case for Bug#6088
mysql-test/r/subselect.result:
Test results fixed: now we don't perform ORDER BY for parts of UNION
if there is no LIMIT clause.
mysql-test/t/ps.test:
A test case for Bug#6088 "FOUND_ROWS returns wrong values for
prepared statements when LIMIT is used".
sql/sql_union.cc:
The actual fix for Bug#6088:
- don't modify SELECT_LEX'es
- use boolean variable can_skip_order_by to check if we can skip
ORDER BY in UNION
single row subquery always can return NULL (no rows found) (BUG#5590)
mysql-test/r/subselect.result:
maybe_null flag returning by subquwery for temporary table creation
mysql-test/t/subselect.test:
maybe_null flag returning by subquwery for temporary table creation
sql/item.cc:
storing maybe_null in type holder
sql/item_subselect.cc:
single row subquery always can return NULL (no rows found)
sql/sql_derived.cc:
fixed error handling if creating derived table failed
allowed parsing of table fields inside aggregate functions
added new tests of fields resolving in grouping
mysql-test/r/func_gconcat.result:
allowed parsing of table fields inside aggregate functions
mysql-test/r/subselect.result:
added new tests of fields resolving in grouping
mysql-test/t/func_gconcat.test:
allowed parsing of table fields inside aggregate functions
mysql-test/t/subselect.test:
added new tests of fields resolving in grouping
sql/item_subselect.cc:
allowed parsing of table fields inside aggregate functions
sql/item_subselect.cc:
Auto merged
sql/item_subselect.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
We have next problem here:
active_index is wrong in the subselect's handler on the second val_int() call.
Optimizer sees that we can use index-read for that kind of condition,
and matching_cond() (sql/opt_sum.cc) doesn't. I suspect, proper solution is
to add appropriate code to the matching_cond() but now just added
missed initialization.
mysql-test/r/subselect.result:
Appropriate test result
mysql-test/t/subselect.test:
Test case added
sql/records.cc:
index's initialization added
mysql-test/r/func_gconcat.result:
fix of test queries
mysql-test/r/subselect.result:
resolving fields of grouped outer SELECT
mysql-test/t/func_gconcat.test:
fix of test queries
mysql-test/t/subselect.test:
resolving fields of grouped outer SELECT
sql/item.cc:
skip resolving field in table list if table list is not accessable due to groupping
layout fixed
sql/item_subselect.cc:
detection of place of subquery
sql/item_subselect.h:
detection of place of subquery
sql/mysql_priv.h:
enum_parsing_place made global type
sql/sql_lex.cc:
enum_parsing_place made global type
sql/sql_lex.h:
enum_parsing_place made global type
sql/sql_yacc.yy:
enum_parsing_place made global type
mysql-test/r/subselect.result:
Optimized IN with compound index test
mysql-test/t/subselect.test:
Optimized IN with compound index test
sql/item_subselect.cc:
in case of compound index fill all parts
restoring current senect pointer before PS rexecution (backport from 5.0)
removed spaces at lines ends
mysql-test/r/subselect.result:
Aggregate function comparation with ALL/ANY/SOME subselect test
mysql-test/t/subselect.test:
Aggregate function comparation with ALL/ANY/SOME subselect test
sql/item_subselect.cc:
removed spaces at lines ends
aggregate functions check during substitution made only for single row subselects
sql/item_subselect.h:
removed spaces at lines ends
sql/sql_prepare.cc:
restoring current senect pointer before PS rexecution (backport from 5.0)
BitKeeper/etc/ignore:
auto-union
BitKeeper/etc/logging_ok:
auto-union
Build-tools/Do-compile:
Auto merged
include/my_global.h:
Auto merged
innobase/row/row0ins.c:
Auto merged
libmysql/libmysql.c:
Auto merged
libmysqld/Makefile.am:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysql-test/r/func_time.result:
Auto merged
mysql-test/r/subselect.result:
Auto merged
scripts/mysql_install_db.sh:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
innobase/fil/fil0fil.c:
merge (Use heikki's code)
Fixed problem with NULL and derived tables (Bug #4097)
Cleanup of new pushed code
BitKeeper/etc/ignore:
added mysql-test/ndb/ndbcluster
client/mysqltest.c:
simple cleanup
innobase/os/os0file.c:
fix for netware
libmysql/libmysql.c:
Fixed some byte order bugs with prepared statements on machines with
high-byte-first. (Bug #4173)
myisam/ft_boolean_search.c:
Comment cleanup
myisam/mi_check.c:
Removed not needed check (check is done in check_index())
myisam/mi_unique.c:
crc must be of type ha_checksum.
myisam/myisamchk.c:
Portability fix.
mysql-test/mysql-test-run.sh:
Simple cleanup
mysql-test/r/subselect.result:
Test problem with NULL and derived tables (Bug #4097)
mysql-test/t/subselect.test:
Test problem with NULL and derived tables (Bug #4097)
sql/mysqld.cc:
Remove not used defines
sql/sql_select.cc:
Fixed problem with NULL and derived tables (Bug #4097)
Indentation fixes
sql/sql_string.cc:
Code cleanup
sql/sql_yacc.yy:
Allow one to use DROP PREPARE ...
mysql-test/r/subselect.result:
new length in UNION
mysql-test/r/union.result:
new length in UNION
test of int with wrong display length
mysql-test/t/union.test:
test of int with wrong display length
sql/item.cc:
new length detection for non-string
sql/item.h:
new length detection for non-string
mysql-test/r/subselect.result:
outer fields resolving in INSERT/REPLACE and CRETE with SELECT
mysql-test/t/subselect.test:
outer fields resolving in INSERT/REPLACE and CRETE with SELECT
sql/sql_parse.cc:
fixed field resolving mode fo INSERT/REPLACE and CRETE with SELECT
sql/sql_prepare.cc:
fixed field resolving mode fo INSERT/REPLACE and CRETE with SELECT
close table before opening in optimize
mysql-test/r/subselect.result:
test of EXISTS(SELECT * ...)
mysql-test/t/subselect.test:
test of EXISTS(SELECT * ...)
sql/sql_base.cc:
EXISTS(SELECT * ...)
sql/sql_table.cc:
close table before opening one