summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <sanja@askmonty.org>2013-03-18 15:07:52 +0200
committerunknown <sanja@askmonty.org>2013-03-18 15:07:52 +0200
commit2cd7cf8fe6fa41fca124c9239468fc22f8df9957 (patch)
tree783ad42c38b697e566e0d79d2425e0c5a5c93085
parent589247ae86b25eaa9bd75e4f26ecd06831469311 (diff)
downloadmariadb-git-2cd7cf8fe6fa41fca124c9239468fc22f8df9957.tar.gz
MDEV-4269 fix.
Item_default_value inherited form Item_field so should create temporary table field similary.
-rw-r--r--mysql-test/r/func_group_innodb.result14
-rw-r--r--mysql-test/t/func_group_innodb.test14
-rw-r--r--sql/sql_select.cc1
3 files changed, 29 insertions, 0 deletions
diff --git a/mysql-test/r/func_group_innodb.result b/mysql-test/r/func_group_innodb.result
index e68242a8191..9d64b63f8f0 100644
--- a/mysql-test/r/func_group_innodb.result
+++ b/mysql-test/r/func_group_innodb.result
@@ -185,3 +185,17 @@ member_id_to COUNT(*)
518491 5
DROP TABLE t1;
# End of test BUG#12713907
+#
+# MDEV-4269: crash when grouping by values()
+#
+SELECT @@storage_engine INTO @old_engine;
+set storage_engine=innodb;
+create table y select 1 b;
+select 1 from y group by b;
+1
+1
+select 1 from y group by values(b);
+1
+1
+drop table y;
+SET storage_engine=@old_engine;
diff --git a/mysql-test/t/func_group_innodb.test b/mysql-test/t/func_group_innodb.test
index 58f365bb244..accd1f6a6b5 100644
--- a/mysql-test/t/func_group_innodb.test
+++ b/mysql-test/t/func_group_innodb.test
@@ -127,3 +127,17 @@ SELECT member_id_to, COUNT(*) FROM t1 WHERE r_date =
DROP TABLE t1;
--echo # End of test BUG#12713907
+
+--echo #
+--echo # MDEV-4269: crash when grouping by values()
+--echo #
+
+SELECT @@storage_engine INTO @old_engine;
+set storage_engine=innodb;
+
+create table y select 1 b;
+select 1 from y group by b;
+select 1 from y group by values(b);
+drop table y;
+SET storage_engine=@old_engine;
+
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index bc8b7a9e815..24ca1ab0174 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -9922,6 +9922,7 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type,
}
case Item::FIELD_ITEM:
case Item::DEFAULT_VALUE_ITEM:
+ case Item::INSERT_VALUE_ITEM:
{
Item_field *field= (Item_field*) item;
bool orig_modify= modify_item;