3688 Jon Olav Hauglid 2011-02-21 [merge]
Merge from mysql-5.5 to mysql-trunk
No conflicts
modified:
mysql-test/r/alter_table.result
mysql-test/t/alter_table.test
3687 Jorgen Loland 2011-02-21
Bug#11766642: crash in Item_field::register_field_in_read_map
with view
(Former 59793)
Prior to the refactoring in this patch, Item_cond_xor behaved
partially as an Item_cond and partially as an Item_func. The
reasoning behind this was that XOR is currently not optimized
(thus should be Item_func instead of Item_cond), but it was
planned optimize it in the future (thus, made Item_cond anyway
to ease optimization later).
Even though Item_cond inherits from Item_func, there are
differences between these two. One difference is that the
arguments are stored differently. Item_cond stores them in a
list while Item_func store them in an args[].
BUG no 45221 was caused by Item_cond_xor storing arguments in
the list while users of the objects would look for them in
args[]. The fix back then was to store the arguments in both
locations.
In this bug, Item_cond_xor initially gets two Item_field
arguments. These are stored in the list inherited from
Item_cond and in args[] inherited from Item_func. During
resolution, find_field_in_view() replaces the Item_fields
stored in the list with Item_direct_view_refs, but args[]
still points to the unresolved Item_fields. This shows that
the fix for 45221 was incorrect.
The refactoring performed in this patch removes the confusion
by making the XOR item an Item_func period. A neg_transformer()
is also implemented for Item_func_xor to improve performance
when negating XOR expressions. An XOR is negated by negating
one of the operands.
@ mysql-test/include/subquery_sj.inc
Add test for BUG#11766642
@ mysql-test/r/negation_elimination.result
Add tests for XOR
@ mysql-test/r/subquery_sj_none.result
Add test for BUG#11766642
@ mysql-test/t/negation_elimination.test
Add tests for XOR
@ sql/item_cmpfunc.cc
Refactor XOR item: it is now a pure Item_func, inheriting from Item_bool_func2 instead of Item_cond. Also added neg_transformer() function to improve performance when XOR is negated.
@ sql/item_cmpfunc.h
Refactor XOR item: it is now a pure Item_func, inheriting from Item_bool_func2 instead of Item_cond. Also added neg_transformer() function to improve performance when XOR is negated.
@ sql/item_func.h
Refactor XOR item: it is now a pure Item_func, inheriting from Item_bool_func2 instead of Item_cond
@ sql/sql_yacc.yy
Refactor XOR item: it is now a pure Item_func, inheriting from Item_bool_func2 instead of Item_cond
@ unittest/gunit/item-t.cc
Add unit test for Item_func_xor
modified:
mysql-test/include/subquery_sj.inc
mysql-test/r/negation_elimination.result
mysql-test/r/subquery_sj_none.result
mysql-test/t/negation_elimination.test
sql/item_cmpfunc.cc
sql/item_cmpfunc.h
sql/item_func.h
sql/sql_yacc.yy
unittest/gunit/item-t.cc
=== modified file 'mysql-test/r/alter_table.result'
--- a/mysql-test/r/alter_table.result 2010-08-30 06:38:09 +0000
+++ b/mysql-test/r/alter_table.result 2011-02-21 11:34:23 +0000
@@ -1383,3 +1383,11 @@ ALTER TABLE t1 CHANGE a id INT;
affected rows: 0
info: Records: 0 Duplicates: 0 Warnings: 0
DROP TABLE t1;
+#
+# Bug#11754461 CANNOT ALTER TABLE WHEN KEY PREFIX TOO LONG
+#
+DROP DATABASE IF EXISTS db1;
+CREATE DATABASE db1 CHARACTER SET utf8;
+CREATE TABLE db1.t1 (bar TINYTEXT, KEY (bar(100)));
+ALTER TABLE db1.t1 ADD baz INT;
+DROP DATABASE db1;
=== modified file 'mysql-test/t/alter_table.test'
--- a/mysql-test/t/alter_table.test 2010-07-26 09:22:38 +0000
+++ b/mysql-test/t/alter_table.test 2011-02-21 11:30:08 +0000
@@ -1144,3 +1144,18 @@ INSERT INTO t1 VALUES (1, 1), (2, 2);
ALTER TABLE t1 CHANGE a id INT;
--disable_info
DROP TABLE t1;
+
+
+--echo #
+--echo # Bug#11754461 CANNOT ALTER TABLE WHEN KEY PREFIX TOO LONG
+--echo #
+
+--disable_warnings
+DROP DATABASE IF EXISTS db1;
+--enable_warnings
+
+CREATE DATABASE db1 CHARACTER SET utf8;
+CREATE TABLE db1.t1 (bar TINYTEXT, KEY (bar(100)));
+ALTER TABLE db1.t1 ADD baz INT;
+
+DROP DATABASE db1;
No bundle (reason: useless for push emails).
| Thread |
|---|
| • bzr push into mysql-trunk branch (jon.hauglid:3687 to 3688) | Jon Olav Hauglid | 21 Feb |