summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <monty@mysql.com>2005-07-04 16:01:04 +0300
committerunknown <monty@mysql.com>2005-07-04 16:01:04 +0300
commit5d82b41e3adccc566b68542bf5be097ed45f5390 (patch)
tree5d98db8559f519e7aac489fe047ee7fb3f2b8d3b
parent3c82f72091d2c21519540ee5bcc3b2acadfbf198 (diff)
downloadmariadb-git-5d82b41e3adccc566b68542bf5be097ed45f5390.tar.gz
After merge fixes
mysql-test/r/group_by.result: After merge fix (Put test in same order as in 4.1) mysql-test/t/group_by.test: After merge fix (Put test in same order as in 4.1) sql/item_cmpfunc.cc: After merge fix (+ simple fix to not allow compiler to do tail optimization) sql/item_cmpfunc.h: After merge fix
-rw-r--r--mysql-test/r/group_by.result56
-rw-r--r--mysql-test/t/group_by.test68
-rw-r--r--sql/item_cmpfunc.cc10
-rw-r--r--sql/item_cmpfunc.h2
4 files changed, 71 insertions, 65 deletions
diff --git a/mysql-test/r/group_by.result b/mysql-test/r/group_by.result
index 34a9cc4221f..64446e63e6f 100644
--- a/mysql-test/r/group_by.result
+++ b/mysql-test/r/group_by.result
@@ -723,6 +723,34 @@ WHERE hostname LIKE '%aol%'
hostname no
cache-dtc-af05.proxy.aol.com 1
DROP TABLE t1;
+CREATE TABLE t1 (a int, b int);
+INSERT INTO t1 VALUES (1,2), (1,3);
+SELECT a, b FROM t1 GROUP BY 'const';
+a b
+1 2
+SELECT DISTINCT a, b FROM t1 GROUP BY 'const';
+a b
+1 2
+DROP TABLE t1;
+CREATE TABLE t1 (id INT, dt DATETIME);
+INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
+INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
+INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
+INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
+SELECT dt DIV 1 AS f, id FROM t1 GROUP BY f;
+f id
+20050501123000 1
+DROP TABLE t1;
+CREATE TABLE t1 (id varchar(20) NOT NULL);
+INSERT INTO t1 VALUES ('trans1'), ('trans2');
+CREATE TABLE t2 (id varchar(20) NOT NULL, err_comment blob NOT NULL);
+INSERT INTO t2 VALUES ('trans1', 'a problem');
+SELECT COUNT(DISTINCT(t1.id)), LEFT(err_comment, 256) AS comment
+FROM t1 LEFT JOIN t2 ON t1.id=t2.id GROUP BY comment;
+COUNT(DISTINCT(t1.id)) comment
+1 NULL
+1 a problem
+DROP TABLE t1, t2;
CREATE TABLE t1 (n int);
INSERT INTO t1 VALUES (1);
SELECT n+1 AS n FROM t1 GROUP BY n;
@@ -752,31 +780,3 @@ aaa
show warnings;
Level Code Message
drop table t1, t2;
-CREATE TABLE t1 (a int, b int);
-INSERT INTO t1 VALUES (1,2), (1,3);
-SELECT a, b FROM t1 GROUP BY 'const';
-a b
-1 2
-SELECT DISTINCT a, b FROM t1 GROUP BY 'const';
-a b
-1 2
-DROP TABLE t1;
-CREATE TABLE t1 (id INT, dt DATETIME);
-INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
-INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
-INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
-INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
-SELECT dt DIV 1 AS f, id FROM t1 GROUP BY f;
-f id
-20050501123000 1
-DROP TABLE t1;
-CREATE TABLE t1 (id varchar(20) NOT NULL);
-INSERT INTO t1 VALUES ('trans1'), ('trans2');
-CREATE TABLE t2 (id varchar(20) NOT NULL, err_comment blob NOT NULL);
-INSERT INTO t2 VALUES ('trans1', 'a problem');
-SELECT COUNT(DISTINCT(t1.id)), LEFT(err_comment, 256) AS comment
-FROM t1 LEFT JOIN t2 ON t1.id=t2.id GROUP BY comment;
-COUNT(DISTINCT(t1.id)) comment
-1 NULL
-1 a problem
-DROP TABLE t1, t2;
diff --git a/mysql-test/t/group_by.test b/mysql-test/t/group_by.test
index 2defb480deb..6f1880ae8fb 100644
--- a/mysql-test/t/group_by.test
+++ b/mysql-test/t/group_by.test
@@ -543,39 +543,6 @@ SELECT hostname, COUNT(DISTINCT user_id) as no FROM t1
DROP TABLE t1;
#
-# Bug#11211: Ambiguous column reference in GROUP BY.
-#
-
-create table t1 (c1 char(3), c2 char(3));
-create table t2 (c3 char(3), c4 char(3));
-insert into t1 values ('aaa', 'bb1'), ('aaa', 'bb2');
-insert into t2 values ('aaa', 'bb1'), ('aaa', 'bb2');
-
-# query with ambiguous column reference 'c2'
---disable_ps_protocol
-select t1.c1 as c2 from t1, t2 where t1.c2 = t2.c4
-group by c2;
-show warnings;
---enable_ps_protocol
-
-# this query has no ambiguity
-select t1.c1 as c2 from t1, t2 where t1.c2 = t2.c4
-group by t1.c1;
-
-show warnings;
-drop table t1, t2;
-
-#
-# Test for bug #11414: crash on Windows for a simple GROUP BY query
-#
-
-CREATE TABLE t1 (n int);
-INSERT INTO t1 VALUES (1);
---disable_ps_protocol
-SELECT n+1 AS n FROM t1 GROUP BY n;
---enable_ps_protocol
-DROP TABLE t1;
-
# Test for bug #8614: GROUP BY 'const' with DISTINCT
#
@@ -613,3 +580,38 @@ SELECT COUNT(DISTINCT(t1.id)), LEFT(err_comment, 256) AS comment
FROM t1 LEFT JOIN t2 ON t1.id=t2.id GROUP BY comment;
DROP TABLE t1, t2;
+
+#
+# Test for bug #11414: crash on Windows for a simple GROUP BY query
+#
+
+CREATE TABLE t1 (n int);
+INSERT INTO t1 VALUES (1);
+--disable_ps_protocol
+SELECT n+1 AS n FROM t1 GROUP BY n;
+--enable_ps_protocol
+DROP TABLE t1;
+
+#
+# Bug#11211: Ambiguous column reference in GROUP BY.
+#
+
+create table t1 (c1 char(3), c2 char(3));
+create table t2 (c3 char(3), c4 char(3));
+insert into t1 values ('aaa', 'bb1'), ('aaa', 'bb2');
+insert into t2 values ('aaa', 'bb1'), ('aaa', 'bb2');
+
+# query with ambiguous column reference 'c2'
+--disable_ps_protocol
+select t1.c1 as c2 from t1, t2 where t1.c2 = t2.c4
+group by c2;
+show warnings;
+--enable_ps_protocol
+
+# this query has no ambiguity
+select t1.c1 as c2 from t1, t2 where t1.c2 = t2.c4
+group by t1.c1;
+
+show warnings;
+drop table t1, t2;
+
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc
index bce6a58330f..5ed857319be 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -1578,17 +1578,21 @@ my_decimal *Item_func_case::val_decimal(my_decimal *decimal_value)
}
-bool Item_func_case::fix_fields(THD *thd, struct st_table_list *tables,
- Item **ref)
+bool Item_func_case::fix_fields(THD *thd, Item **ref)
{
/*
buff should match stack usage from
Item_func_case::val_int() -> Item_func_case::find_item()
*/
char buff[MAX_FIELD_WIDTH*2+sizeof(String)*2+sizeof(String*)*2+sizeof(double)*2+sizeof(longlong)*2];
+ bool res= Item_func::fix_fields(thd, ref);
+ /*
+ Call check_stack_overrun after fix_fields to be sure that stack variable
+ is not optimized away
+ */
if (check_stack_overrun(thd, STACK_MIN_SIZE, buff))
return TRUE; // Fatal error flag is set!
- return Item_func::fix_fields(thd, tables, ref);
+ return res;
}
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h
index c21e9ba4925..75c8411b844 100644
--- a/sql/item_cmpfunc.h
+++ b/sql/item_cmpfunc.h
@@ -566,7 +566,7 @@ public:
longlong val_int();
String *val_str(String *);
my_decimal *val_decimal(my_decimal *);
- bool fix_fields(THD *thd,struct st_table_list *tlist, Item **ref);
+ bool fix_fields(THD *thd, Item **ref);
void fix_length_and_dec();
uint decimal_precision() const;
table_map not_null_tables() const { return 0; }