They can drop table after table names list creation and before table opening.
We open non existing table and get ER_NO_SUCH_TABLE error.
In this case we do not store the record into I_S table and clear error.
sql/sql_show.cc:
Hide error for not existing table
conditions when executing an equijoin query with WHERE condition
containing a subquery predicate of the form join_attr NOT IN (SELECT ...).
To resolve a problem of the correct evaluation of the expression
attr NOT IN (SELECT ...)
an array of guards is created to make it possible to filter out some
predicates of the EXISTS subquery into which the original subquery
predicate is transformed, in the cases when a takes the NULL value.
If attr is defined as a field that cannot be NULL than such an array
is not needed and is not created.
However if the field a occurred also an an equijoin predicate t2.a=t1.b
and table t1 is accessed before table t2 then it may happen that the
the EXISTS subquery is pushed down to the condition evaluated just after
table t1 has been accessed. In this case any occurrence of t2.a is
substituted for t1.b. When t1.b takes the value of NULL an attempt is
made to turn on the corresponding guard. This action caused a crash as
no guard array had been created.
Now the code of Item_in_subselect::set_cond_guard_var checks that the guard
array has been created before setting a guard variable on. Otherwise the
method does nothing. It cannot results in returning a row that could be
rejected as the condition t2.a=t1.b will be checked later anyway.
mysql-test/r/subselect3.result:
Added a test case for bug #27870.
mysql-test/t/subselect3.test:
Added a test case for bug #27870.
sql/item_subselect.h:
Fixed bug #27870. The bug that causes crashes manifests itself at some
conditions when executing an equijoin query with WHERE condition
containing a subquery predicate of the form join_attr NOT IN (SELECT ...).
Forced Item_in_subselect::set_cond_guard_var to check that the guard
array has been created before setting a guard variable on. Otherwise the
method does nothing.
into moonbone.local:/mnt/gentoo64/work/27321-bug-5.0-opt-mysql
mysql-test/r/subselect3.result:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/r/subselect.result:
Manually merged
mysql-test/t/subselect.test:
Manually merged
mysql-test/t/subselect3.test:
Manually merged
The Item_outer_ref class based on the Item_direct_ref class was always used
to represent an outer field. But if the outer select is a grouping one and the
outer field isn't under an aggregate function which is aggregated in that
outer select an Item_ref object should be used to represent such a field.
If the outer select in which the outer field is resolved isn't grouping then
the Item_field class should be used to represent such a field.
This logic also should be used for an outer field resolved through its alias
name.
Now the Item_field::fix_outer_field() uses Item_outer_field objects to
represent aliased and non-aliased outer fields for grouping outer selects
only.
Now the fix_inner_refs() function chooses which class to use to access outer
field - the Item_ref or the Item_direct_ref. An object of the chosen class
substitutes the original field in the Item_outer_ref object.
The direct_ref and the found_in_select_list fields were added to the
Item_outer_ref class.
mysql-test/t/subselect3.test:
Some test cases were corrected after the fix for the bug#27321.
mysql-test/r/subselect3.result:
Some test cases were corrected after the fix for the bug#27321.
mysql-test/t/subselect.test:
Added a test case for the bug#27321: Wrong subquery result in a grouping select.
mysql-test/r/subselect.result:
Added a test case for the bug#27321: Wrong subquery result in a grouping select.
Some test cases were corrected after this fix.
sql/sql_union.cc:
Bug#27321: Wrong subquery result in a grouping select.
Cleanup of the inner_refs_list.
sql/sql_select.cc:
Bug#27321: Wrong subquery result in a grouping select.
Now the fix_inner_refs() function chooses which class to use to access outer
field - the Item_ref or the Item_direct_ref. An object of the chosen class
substitutes the original field in the Item_outer_ref object.
A comment is corrected.
sql/item.cc:
Bug#27321: Wrong subquery result in a grouping select.
Now the Item_field::fix_outer_field() uses Item_outer_field objects to
represent aliased and non-aliased outer fields for grouping outer selects
only.
sql/item.h:
Bug#27321: Wrong subquery result in a grouping select.
The direct_ref and the found_in_select_list fields were added to the
Item_outer_ref class.
Support of views wasn't implemented for the TRUNCATE statement.
Now TRUNCATE on views has the same semantics as DELETE FROM view:
mysql_truncate() checks whether the table is a view and falls back
to delete if so.
In order to initialize properly the LEX::updatable for a view
st_lex::can_use_merged() now allows usage of merged views for the
TRUNCATE statement.
mysql-test/r/truncate.result:
Added a test case for the Bug#5507: TRUNCATE does not work with views.
mysql-test/t/truncate.test:
Added a test case for the Bug#5507: TRUNCATE does not work with views.
sql/sql_lex.cc:
Bug#5507: TRUNCATE does not work with views.
can_use_merged() was denying of usage of merged views for a
TRUNCATE statement. This results in improper initialization
of view LEX::updatable. Fixed.
sql/sql_delete.cc:
Bug#5507: TRUNCATE does not work with views.
1.mysql_truncate() was lacking of check whether the table is view. Added.
2.mysql_truncate() calls mysql_delete(), but mysql_delete() always reports
errors as "DELETE" errors. Fixed.
mysql-test/t/view.test:
Updated test case for Bug#14540: OPTIMIZE, ANALYZE, REPAIR applied
to not a view.
mysql-test/r/view.result:
Updated test case for Bug#14540: OPTIMIZE, ANALYZE, REPAIR applied
to not a view.
- parse indexname using "split" instead of sscanf, as not to break at space
- test case with space in key
- enclose names in printout
mysql-test/r/ndb_restore.result:
Bug #27758 Restoring NDB backups makes table usable in SQL nodes
- change to using an index with space to reproduce bug
mysql-test/t/ndb_restore.test:
Bug #27758 Restoring NDB backups makes table usable in SQL nodes
- change to using an index with space to reproduce bug
ndb/tools/restore/consumer_restore.cpp:
Bug #27758 Restoring NDB backups makes table usable in SQL nodes
- parse indexname using "split" instead of sscanf, as not to break at space
- enclose names in printout
ndb/tools/restore/restore_main.cpp:
Bug #27758 Restoring NDB backups makes table usable in SQL nodes
- enclose names in printout
sql/ha_ndbcluster.cc:
Bug #27758 Restoring NDB backups makes table usable in SQL nodes
- correct error message
are used as arguments of the IN predicate.
Added a function to check compatibility of row expressions. Made sure that this
function to be called for Item_func_in objects by fix_length_and_dec().
mysql-test/r/row.result:
Added a test case for bug #27484.
mysql-test/t/row.test:
Added a test case for bug #27484.
- try to catch as many malloc failures as possible and give error messages
ndb/src/ndbapi/ObjectMap.cpp:
New BitKeeper file ``ndb/src/ndbapi/ObjectMap.cpp''
Back port of include change and copyright from 5.1
Makefile.am, zlib.m4:
Use separate libtool convenience library for the bundled
zlib to embed into executables and shared libraries created,
and one to install into the pkglib directory
zlib/Makefile.am:
Use separate libtool convenience library for the bundled
zlib to embed into executables and shared libraries created,
and one to install into the pkglib directory
config/ac-macros/zlib.m4:
Use separate libtool convenience library for the bundled
zlib to embed into executables and shared libraries created,
and one to install into the pkglib directory
mysys/my_memmem.c:
Back port of include change and copyright from 5.1
Added a test case.
The problem was fixed by the fix for bug #17379.
The problem was that because of some conditions
the optimizer always preferred range or full index
scan access methods to lookup access methods even
when the latter were much cheaper.
mysql-test/r/select.result:
Bug #19372: test case.
The problem was fixed by the patch for bug #17379
mysql-test/t/select.test:
Bug #19372: test case.
The problem was fixed by the patch for bug #17379
The optimizer transforms DISTINCT into a GROUP BY
when possible.
It does that by constructing the same structure
(a list of ORDER instances) the parser makes when
parsing GROUP BY.
While doing that it also eliminates duplicates.
But if a duplicate is found it doesn't advance the
pointer to ref_pointer array, so the next
(and subsequent) ORDER structures point to the wrong
element in the SELECT list.
Fixed by advancing the pointer in ref_pointer_array
even in the case of a duplicate.
mysql-test/r/distinct.result:
Bug #27659: test case
mysql-test/t/distinct.test:
Bug #27659: test case
sql/sql_select.cc:
Bug #27659: use correct ref_pointer_array element
issue an error in strict mode
if enum|set column has duplicates members in 'create table'
mysql-test/r/strict.result:
test case
mysql-test/t/strict.test:
test case
sql/sql_table.cc:
issue an error in strict mode
if enum|set has duplicates members