3406 Tor Didriksen 2011-08-26
Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
Followup patch.
The previous patch assumed that Item_field::fix_fields would tag the
select_lex with non_agg_field_used.
Item_fields for subqueries of the form 'select * from view'
do not go through fix_fields, but are created directly by
Field_iterator_table::create_item, and added to the select->non_agg_fields list.
The select_lex was however not tagged with the boolean flag.
@ mysql-test/include/subquery.inc
New test case.
@ mysql-test/r/subquery_nomat_nosj.result
New test case.
@ mysql-test/r/subquery_nomat_nosj_bka.result
New test case.
@ mysql-test/r/subquery_nomat_nosj_bka_nobnl.result
New test case.
@ mysql-test/r/subquery_none.result
New test case.
@ mysql-test/r/subquery_none_bka.result
New test case.
@ mysql-test/r/subquery_none_bka_nobnl.result
New test case.
@ sql/table.cc
Same logic as Item_field::fix_fields:
if the item is pushed into select->non_agg_fields,
then also tag the select_lex with set_non_agg_field_used(true).
modified:
mysql-test/include/subquery.inc
mysql-test/r/subquery_nomat_nosj.result
mysql-test/r/subquery_nomat_nosj_bka.result
mysql-test/r/subquery_nomat_nosj_bka_nobnl.result
mysql-test/r/subquery_none.result
mysql-test/r/subquery_none_bka.result
mysql-test/r/subquery_none_bka_nobnl.result
sql/table.cc
3405 Tor Didriksen 2011-08-26
BUG#11755836, tests have now been re-enabled, so make them run without deterministic failure ....
modified:
mysql-test/suite/rpl/r/rpl_spec_variables.result
mysql-test/suite/rpl/t/rpl_spec_variables.test
=== modified file 'mysql-test/include/subquery.inc'
--- a/mysql-test/include/subquery.inc 2011-08-17 10:30:04 +0000
+++ b/mysql-test/include/subquery.inc 2011-08-26 13:26:33 +0000
@@ -4058,6 +4058,37 @@ SET SESSION sql_mode=@old_sql_mode;
DROP TABLE t1, t2;
+--echo #
+--echo # Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
+--echo #
+
+create table t2(i int);
+insert into t2 values(0);
+
+SELECT @@session.sql_mode INTO @old_sql_mode;
+SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
+
+CREATE VIEW v1 AS
+SELECT 'f' FROM t2 UNION SELECT 'x' FROM t2
+;
+
+CREATE TABLE t1 (
+ pk int NOT NULL,
+ col_varchar_key varchar(1) DEFAULT NULL,
+ PRIMARY KEY (pk),
+ KEY col_varchar_key (col_varchar_key)
+);
+
+SELECT t1.pk
+FROM t1
+WHERE t1.col_varchar_key < ALL ( SELECT * FROM v1 )
+;
+
+SET SESSION sql_mode=@old_sql_mode;
+
+drop table t2, t1;
+drop view v1;
+
--echo End of 5.0 tests.
#
=== modified file 'mysql-test/r/subquery_nomat_nosj.result'
--- a/mysql-test/r/subquery_nomat_nosj.result 2011-08-19 11:39:15 +0000
+++ b/mysql-test/r/subquery_nomat_nosj.result 2011-08-26 13:26:33 +0000
@@ -5184,6 +5184,30 @@ SELECT 1 FROM t1 WHERE 1 < SOME (SELECT
1
SET SESSION sql_mode=@old_sql_mode;
DROP TABLE t1, t2;
+#
+# Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
+#
+create table t2(i int);
+insert into t2 values(0);
+SELECT @@session.sql_mode INTO @old_sql_mode;
+SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
+CREATE VIEW v1 AS
+SELECT 'f' FROM t2 UNION SELECT 'x' FROM t2
+;
+CREATE TABLE t1 (
+pk int NOT NULL,
+col_varchar_key varchar(1) DEFAULT NULL,
+PRIMARY KEY (pk),
+KEY col_varchar_key (col_varchar_key)
+);
+SELECT t1.pk
+FROM t1
+WHERE t1.col_varchar_key < ALL ( SELECT * FROM v1 )
+;
+pk
+SET SESSION sql_mode=@old_sql_mode;
+drop table t2, t1;
+drop view v1;
End of 5.0 tests.
create table t_out (subcase char(3),
a1 char(2), b1 char(2), c1 char(2));
=== modified file 'mysql-test/r/subquery_nomat_nosj_bka.result'
--- a/mysql-test/r/subquery_nomat_nosj_bka.result 2011-08-19 11:41:38 +0000
+++ b/mysql-test/r/subquery_nomat_nosj_bka.result 2011-08-26 13:26:33 +0000
@@ -5185,6 +5185,30 @@ SELECT 1 FROM t1 WHERE 1 < SOME (SELECT
1
SET SESSION sql_mode=@old_sql_mode;
DROP TABLE t1, t2;
+#
+# Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
+#
+create table t2(i int);
+insert into t2 values(0);
+SELECT @@session.sql_mode INTO @old_sql_mode;
+SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
+CREATE VIEW v1 AS
+SELECT 'f' FROM t2 UNION SELECT 'x' FROM t2
+;
+CREATE TABLE t1 (
+pk int NOT NULL,
+col_varchar_key varchar(1) DEFAULT NULL,
+PRIMARY KEY (pk),
+KEY col_varchar_key (col_varchar_key)
+);
+SELECT t1.pk
+FROM t1
+WHERE t1.col_varchar_key < ALL ( SELECT * FROM v1 )
+;
+pk
+SET SESSION sql_mode=@old_sql_mode;
+drop table t2, t1;
+drop view v1;
End of 5.0 tests.
create table t_out (subcase char(3),
a1 char(2), b1 char(2), c1 char(2));
=== modified file 'mysql-test/r/subquery_nomat_nosj_bka_nobnl.result'
--- a/mysql-test/r/subquery_nomat_nosj_bka_nobnl.result 2011-08-19 11:41:38 +0000
+++ b/mysql-test/r/subquery_nomat_nosj_bka_nobnl.result 2011-08-26 13:26:33 +0000
@@ -5185,6 +5185,30 @@ SELECT 1 FROM t1 WHERE 1 < SOME (SELECT
1
SET SESSION sql_mode=@old_sql_mode;
DROP TABLE t1, t2;
+#
+# Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
+#
+create table t2(i int);
+insert into t2 values(0);
+SELECT @@session.sql_mode INTO @old_sql_mode;
+SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
+CREATE VIEW v1 AS
+SELECT 'f' FROM t2 UNION SELECT 'x' FROM t2
+;
+CREATE TABLE t1 (
+pk int NOT NULL,
+col_varchar_key varchar(1) DEFAULT NULL,
+PRIMARY KEY (pk),
+KEY col_varchar_key (col_varchar_key)
+);
+SELECT t1.pk
+FROM t1
+WHERE t1.col_varchar_key < ALL ( SELECT * FROM v1 )
+;
+pk
+SET SESSION sql_mode=@old_sql_mode;
+drop table t2, t1;
+drop view v1;
End of 5.0 tests.
create table t_out (subcase char(3),
a1 char(2), b1 char(2), c1 char(2));
=== modified file 'mysql-test/r/subquery_none.result'
--- a/mysql-test/r/subquery_none.result 2011-08-19 11:39:15 +0000
+++ b/mysql-test/r/subquery_none.result 2011-08-26 13:26:33 +0000
@@ -5183,6 +5183,30 @@ SELECT 1 FROM t1 WHERE 1 < SOME (SELECT
1
SET SESSION sql_mode=@old_sql_mode;
DROP TABLE t1, t2;
+#
+# Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
+#
+create table t2(i int);
+insert into t2 values(0);
+SELECT @@session.sql_mode INTO @old_sql_mode;
+SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
+CREATE VIEW v1 AS
+SELECT 'f' FROM t2 UNION SELECT 'x' FROM t2
+;
+CREATE TABLE t1 (
+pk int NOT NULL,
+col_varchar_key varchar(1) DEFAULT NULL,
+PRIMARY KEY (pk),
+KEY col_varchar_key (col_varchar_key)
+);
+SELECT t1.pk
+FROM t1
+WHERE t1.col_varchar_key < ALL ( SELECT * FROM v1 )
+;
+pk
+SET SESSION sql_mode=@old_sql_mode;
+drop table t2, t1;
+drop view v1;
End of 5.0 tests.
create table t_out (subcase char(3),
a1 char(2), b1 char(2), c1 char(2));
=== modified file 'mysql-test/r/subquery_none_bka.result'
--- a/mysql-test/r/subquery_none_bka.result 2011-08-19 11:41:38 +0000
+++ b/mysql-test/r/subquery_none_bka.result 2011-08-26 13:26:33 +0000
@@ -5184,6 +5184,30 @@ SELECT 1 FROM t1 WHERE 1 < SOME (SELECT
1
SET SESSION sql_mode=@old_sql_mode;
DROP TABLE t1, t2;
+#
+# Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
+#
+create table t2(i int);
+insert into t2 values(0);
+SELECT @@session.sql_mode INTO @old_sql_mode;
+SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
+CREATE VIEW v1 AS
+SELECT 'f' FROM t2 UNION SELECT 'x' FROM t2
+;
+CREATE TABLE t1 (
+pk int NOT NULL,
+col_varchar_key varchar(1) DEFAULT NULL,
+PRIMARY KEY (pk),
+KEY col_varchar_key (col_varchar_key)
+);
+SELECT t1.pk
+FROM t1
+WHERE t1.col_varchar_key < ALL ( SELECT * FROM v1 )
+;
+pk
+SET SESSION sql_mode=@old_sql_mode;
+drop table t2, t1;
+drop view v1;
End of 5.0 tests.
create table t_out (subcase char(3),
a1 char(2), b1 char(2), c1 char(2));
=== modified file 'mysql-test/r/subquery_none_bka_nobnl.result'
--- a/mysql-test/r/subquery_none_bka_nobnl.result 2011-08-19 11:41:38 +0000
+++ b/mysql-test/r/subquery_none_bka_nobnl.result 2011-08-26 13:26:33 +0000
@@ -5184,6 +5184,30 @@ SELECT 1 FROM t1 WHERE 1 < SOME (SELECT
1
SET SESSION sql_mode=@old_sql_mode;
DROP TABLE t1, t2;
+#
+# Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
+#
+create table t2(i int);
+insert into t2 values(0);
+SELECT @@session.sql_mode INTO @old_sql_mode;
+SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
+CREATE VIEW v1 AS
+SELECT 'f' FROM t2 UNION SELECT 'x' FROM t2
+;
+CREATE TABLE t1 (
+pk int NOT NULL,
+col_varchar_key varchar(1) DEFAULT NULL,
+PRIMARY KEY (pk),
+KEY col_varchar_key (col_varchar_key)
+);
+SELECT t1.pk
+FROM t1
+WHERE t1.col_varchar_key < ALL ( SELECT * FROM v1 )
+;
+pk
+SET SESSION sql_mode=@old_sql_mode;
+drop table t2, t1;
+drop view v1;
End of 5.0 tests.
create table t_out (subcase char(3),
a1 char(2), b1 char(2), c1 char(2));
=== modified file 'sql/table.cc'
--- a/sql/table.cc 2011-08-24 14:47:26 +0000
+++ b/sql/table.cc 2011-08-26 13:26:33 +0000
@@ -4511,6 +4511,7 @@ Item *Field_iterator_table::create_item(
{
select->non_agg_fields.push_back(item);
item->marker= select->cur_pos_in_select_list;
+ select->set_non_agg_field_used(true);
}
return item;
}
No bundle (reason: useless for push emails).
| Thread |
|---|
| • bzr push into mysql-trunk branch (tor.didriksen:3405 to 3406) Bug#12763207 | Tor Didriksen | 29 Aug |