diff options
-rw-r--r-- | mysql-test/r/ansi.result | 4 | ||||
-rw-r--r-- | mysql-test/t/ansi.test | 3 | ||||
-rw-r--r-- | sql/set_var.cc | 8 |
3 files changed, 11 insertions, 4 deletions
diff --git a/mysql-test/r/ansi.result b/mysql-test/r/ansi.result index 0b86634f67b..212d28f918b 100644 --- a/mysql-test/r/ansi.result +++ b/mysql-test/r/ansi.result @@ -6,7 +6,7 @@ NO_FIELD_OPTIONS,MYSQL40 set @@sql_mode="ANSI"; select @@sql_mode; @@sql_mode -REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI +REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI SELECT 'A' || 'B'; 'A' || 'B' AB @@ -14,6 +14,6 @@ CREATE TABLE t1 (id INT, id2 int); SELECT id,NULL,1,1.1,'a' FROM t1 GROUP BY id; id NULL 1 1.1 a SELECT id FROM t1 GROUP BY id2; -ERROR 42000: 'test.t1.id' isn't in GROUP BY +id drop table t1; SET @@SQL_MODE=""; diff --git a/mysql-test/t/ansi.test b/mysql-test/t/ansi.test index faf20f1e57e..9d235df5b46 100644 --- a/mysql-test/t/ansi.test +++ b/mysql-test/t/ansi.test @@ -19,7 +19,8 @@ SELECT 'A' || 'B'; CREATE TABLE t1 (id INT, id2 int); SELECT id,NULL,1,1.1,'a' FROM t1 GROUP BY id; ---error 1055 +#No --error 1055 error due to temporary fix for BUG#8510: +#ONLY_FULL_GROUP_BY is overly restrictive, so remove it from ANSI mode. SELECT id FROM t1 GROUP BY id2; drop table t1; diff --git a/sql/set_var.cc b/sql/set_var.cc index ca7987d2636..605480cb72f 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -3089,8 +3089,14 @@ ulong fix_sql_mode(ulong sql_mode) */ if (sql_mode & MODE_ANSI) + { sql_mode|= (MODE_REAL_AS_FLOAT | MODE_PIPES_AS_CONCAT | MODE_ANSI_QUOTES | - MODE_IGNORE_SPACE | MODE_ONLY_FULL_GROUP_BY); + MODE_IGNORE_SPACE); + /* + MODE_ONLY_FULL_GROUP_BY removed from ANSI mode because it is currently + overly restrictive (see BUG#8510). + */ + } if (sql_mode & MODE_ORACLE) sql_mode|= (MODE_PIPES_AS_CONCAT | MODE_ANSI_QUOTES | MODE_IGNORE_SPACE | |