2708 Georgi Kodinov 2008-11-24 [merge]
merged bug 39656 to 5.1-bugteam
modified:
mysql-test/r/func_group.result
mysql-test/t/func_group.test
sql/sql_select.cc
2707 Vladislav Vaintroub 2008-11-22 [merge]
merge
modified:
client/mysqlcheck.c
dbug/dbug.c
extra/yassl/include/cert_wrapper.hpp
extra/yassl/include/openssl/prefix_ssl.h
extra/yassl/include/openssl/ssl.h
extra/yassl/include/yassl_imp.hpp
extra/yassl/include/yassl_int.hpp
extra/yassl/include/yassl_types.hpp
extra/yassl/src/cert_wrapper.cpp
extra/yassl/src/ssl.cpp
extra/yassl/src/yassl_error.cpp
extra/yassl/src/yassl_imp.cpp
extra/yassl/src/yassl_int.cpp
include/my_dbug.h
include/my_global.h
libmysqld/examples/CMakeLists.txt
libmysqld/lib_sql.cc
libmysqld/libmysqld.def
mysql-test/mysql-test-run.pl
mysql-test/r/create.result
mysql-test/r/ctype_utf8.result
mysql-test/r/federated.result
mysql-test/r/fulltext.result
mysql-test/r/func_compress.result
mysql-test/r/information_schema.result
mysql-test/r/information_schema_part.result
mysql-test/r/max_allowed_packet_basic.result
mysql-test/r/max_allowed_packet_func.result
mysql-test/r/mysqlcheck.result
mysql-test/r/net_buffer_length_basic.result
mysql-test/r/openssl_1.result
mysql-test/r/packet.result
mysql-test/r/partition_innodb.result
mysql-test/r/show_check.result
mysql-test/r/type_newdecimal.result
mysql-test/r/union.result
mysql-test/r/variables.result
mysql-test/r/wait_timeout_func.result
mysql-test/suite/funcs_1/datadict/is_tables.inc
mysql-test/suite/funcs_1/r/is_character_sets.result
mysql-test/suite/funcs_1/r/is_collation_character_set_applicability.result
mysql-test/suite/funcs_1/r/is_collations.result
mysql-test/suite/funcs_1/r/is_columns.result
mysql-test/suite/funcs_1/r/is_columns_is.result
mysql-test/suite/funcs_1/r/is_routines.result
mysql-test/suite/funcs_1/r/is_schemata.result
mysql-test/suite/funcs_1/r/is_tables.result
mysql-test/t/ctype_utf8.test
mysql-test/t/federated.test
mysql-test/t/federated_innodb.test
mysql-test/t/fulltext.test
mysql-test/t/func_compress.test
mysql-test/t/information_schema.test
mysql-test/t/information_schema_part.test
mysql-test/t/innodb_bug34300.test
mysql-test/t/max_allowed_packet_basic.test
mysql-test/t/max_allowed_packet_func.test
mysql-test/t/mysqlcheck.test
mysql-test/t/net_buffer_length_basic.test
mysql-test/t/openssl_1.test
mysql-test/t/packet.test
mysql-test/t/partition_innodb.test
mysql-test/t/type_newdecimal.test
mysql-test/t/union.test
mysql-test/t/variables.test
mysql-test/t/wait_timeout_func.test
mysys/mf_tempdir.c
mysys/my_getopt.c
scripts/Makefile.am
scripts/mysql_config.pl.in
scripts/mysql_config.sh
sql/ha_partition.cc
sql/ha_partition.h
sql/handler.cc
sql/item_func.cc
sql/item_func.h
sql/item_timefunc.cc
sql/mysqld.cc
sql/parse_file.cc
sql/parse_file.h
sql/set_var.cc
sql/set_var.h
sql/share/errmsg.txt
sql/sql_class.cc
sql/sql_db.cc
sql/sql_show.cc
sql/sql_table.cc
sql/sql_trigger.cc
sql/sql_view.cc
sql/table.h
=== modified file 'mysql-test/r/func_group.result'
--- a/mysql-test/r/func_group.result 2008-10-02 14:44:26 +0000
+++ b/mysql-test/r/func_group.result 2008-11-24 15:59:46 +0000
@@ -1453,4 +1453,27 @@ LIMIT 1)
1
DROP TABLE derived1;
DROP TABLE D;
+CREATE TABLE t1 (a INT, b INT);
+INSERT INTO t1 VALUES (1,1), (1,2), (1,3);
+SET SQL_MODE='ONLY_FULL_GROUP_BY';
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+3
+SELECT COUNT(*) FROM t1 where a=1;
+COUNT(*)
+3
+SELECT COUNT(*),a FROM t1;
+ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is
illegal if there is no GROUP BY clause
+SELECT COUNT(*) FROM t1 a JOIN t1 b ON a.a= b.a;
+COUNT(*)
+9
+SELECT COUNT(*), (SELECT count(*) FROM t1 inr WHERE inr.a = outr.a)
+FROM t1 outr;
+ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is
illegal if there is no GROUP BY clause
+SELECT COUNT(*) FROM t1 a JOIN t1 outr
+ON a.a= (SELECT count(*) FROM t1 inr WHERE inr.a = outr.a);
+COUNT(*)
+0
+SET SQL_MODE=default;
+DROP TABLE t1;
End of 5.0 tests
=== modified file 'mysql-test/t/func_group.test'
--- a/mysql-test/t/func_group.test 2008-10-02 14:44:26 +0000
+++ b/mysql-test/t/func_group.test 2008-11-24 15:59:46 +0000
@@ -973,5 +973,34 @@ GROUP BY int_nokey LIMIT 1;
DROP TABLE derived1;
DROP TABLE D;
+#
+# Bug #39656: Behaviour different for agg functions with & without where -
+# ONLY_FULL_GROUP_BY
+#
+
+CREATE TABLE t1 (a INT, b INT);
+INSERT INTO t1 VALUES (1,1), (1,2), (1,3);
+
+SET SQL_MODE='ONLY_FULL_GROUP_BY';
+
+SELECT COUNT(*) FROM t1;
+SELECT COUNT(*) FROM t1 where a=1;
+
+--error ER_MIX_OF_GROUP_FUNC_AND_FIELDS
+SELECT COUNT(*),a FROM t1;
+
+SELECT COUNT(*) FROM t1 a JOIN t1 b ON a.a= b.a;
+
+--error ER_MIX_OF_GROUP_FUNC_AND_FIELDS
+SELECT COUNT(*), (SELECT count(*) FROM t1 inr WHERE inr.a = outr.a)
+ FROM t1 outr;
+
+SELECT COUNT(*) FROM t1 a JOIN t1 outr
+ ON a.a= (SELECT count(*) FROM t1 inr WHERE inr.a = outr.a);
+
+SET SQL_MODE=default;
+DROP TABLE t1;
+
+
###
--echo End of 5.0 tests
=== modified file 'sql/sql_select.cc'
--- a/sql/sql_select.cc 2008-11-03 10:40:35 +0000
+++ b/sql/sql_select.cc 2008-11-24 15:59:46 +0000
@@ -402,11 +402,21 @@ inline int setup_without_group(THD *thd,
{
int res;
nesting_map save_allow_sum_func=thd->lex->allow_sum_func ;
+ /*
+ Need to save the value, so we can turn off only the new NON_AGG_FIELD
+ additions coming from the WHERE
+ */
+ uint8 saved_flag= thd->lex->current_select->full_group_by_flag;
DBUG_ENTER("setup_without_group");
thd->lex->allow_sum_func&= ~(1 <<
thd->lex->current_select->nest_level);
res= setup_conds(thd, tables, leaves, conds);
+ /* it's not wrong to have non-aggregated columns in a WHERE */
+ if (thd->variables.sql_mode & MODE_ONLY_FULL_GROUP_BY)
+ thd->lex->current_select->full_group_by_flag= saved_flag |
+ (thd->lex->current_select->full_group_by_flag & ~NON_AGG_FIELD_USED);
+
thd->lex->allow_sum_func|= 1 <<
thd->lex->current_select->nest_level;
res= res || setup_order(thd, ref_pointer_array, tables, fields, all_fields,
order);
| Thread |
|---|
| • bzr push into mysql-5.1 branch (kgeorge:2707 to 2708) | Georgi Kodinov | 24 Nov |