mariadb/sql
unknown 4d143a6ff6 Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
Currently in the ONLY_FULL_GROUP_BY mode no hidden fields are allowed in the
select list. To ensure this each expression in the select list is checked
to be a constant, an aggregate function or to occur in the GROUP BY list.
The last two requirements are wrong and doesn't allow valid expressions like
"MAX(b) - MIN(b)" or "a + 1" in a query with grouping by a.

The correct check implemented by the patch will ensure that:
any field reference in the [sub]expressions of the select list 
  is under an aggregate function or
  is mentioned as member of the group list or
  is an outer reference or
  is part of the select list element that coincide with a grouping element.

The Item_field objects now can contain the position of the select list
expression which they belong to. The position is saved during the
field's Item_field::fix_fields() call.

The non_agg_fields list for non-aggregated fields is added to the SELECT_LEX
class. The SELECT_LEX::cur_pos_in_select_list now contains the position in the
select list of the expression being currently fixed.


sql/item.cc:
  Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
  The Item_field objects now contain the position of the select list
  expression which they belong to. The position is saved at the field's
  Item_field::fix_fields() call.
sql/item.h:
  Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
  The Item_field objects now can store the position in the select list of the
  expression to which they are belongs to.
sql/mysql_priv.h:
  Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
  Added the UNDEF_POS constant.
sql/sql_base.cc:
  Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
  Now the setup_fields() function maintains the cur_pos_in_select_list variable.
sql/sql_lex.cc:
  Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
  Set the cur_pos_in_select_list variable and the non_agg_fields list to their initial state.
sql/sql_lex.h:
  Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
  The non_agg_fields list for non-aggregated fields is added to the SELECT_LEX
  class. The SELECT_LEX::cur_pos_in_select_list now stores the position in the
  select list of the expression being currently fixed.
sql/sql_select.cc:
  Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
  Each select now keeps the list of fields that aren't
  used under any aggregate function. If an expression from the select list
  isn't found in the GROUP BY list the setup_group() function additionally
  checks whether non-aggregated fields occur in that expression.
  If there at least one such field and it isn't found in the GROUP BY list
  then an error is thrown.
sql/sql_union.cc:
  Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
  Clean up of the non_agg_fields list.
mysql-test/r/group_by.result:
  Added a test case for the bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
mysql-test/t/group_by.test:
  Added a test case for the bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode.
2007-01-11 23:18:01 +03:00
..
examples my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
share Merge mysql.com:/d2/hf/clean/my50-clean 2006-12-31 12:39:20 +04:00
.cvsignore
add_errmsg
client_settings.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
CMakeLists.txt my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
custom_conf.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
derror.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
des_key_file.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
discover.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
field.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
field.h Bug#14171: Wrong internal default value for a BINARY field. 2007-01-09 22:35:30 +03:00
field_conv.cc Many files: 2006-12-23 20:17:15 +01:00
filesort.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
frm_crypt.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
gen_lex_hash.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
gstream.cc Many files: 2006-12-23 20:17:15 +01:00
gstream.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
ha_archive.cc Many files: 2006-12-23 20:17:15 +01:00
ha_archive.h Many files: 2006-12-23 20:17:15 +01:00
ha_berkeley.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
ha_berkeley.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
ha_blackhole.cc Many files: 2006-12-23 20:17:15 +01:00
ha_blackhole.h Many files: 2006-12-23 20:17:15 +01:00
ha_federated.cc Merge xiphis.org:/home/antony/work2/mysql-5.0-engines 2006-12-26 16:23:05 -08:00
ha_federated.h Many files: 2006-12-23 20:17:15 +01:00
ha_heap.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
ha_heap.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
ha_innodb.cc Many files: 2006-12-23 20:17:15 +01:00
ha_innodb.h Many files: 2006-12-23 20:17:15 +01:00
ha_myisam.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
ha_myisam.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
ha_myisammrg.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
ha_myisammrg.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
ha_ndbcluster.cc Many files: 2006-12-23 20:17:15 +01:00
ha_ndbcluster.h Many files: 2006-12-23 20:17:15 +01:00
handler.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
handler.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
hash_filo.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
hash_filo.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
hostname.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
init.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
item.cc Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode. 2007-01-11 23:18:01 +03:00
item.h Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode. 2007-01-11 23:18:01 +03:00
item_buff.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
item_cmpfunc.cc Merge olga.mysql.com:/home/igor/mysql-5.0-opt 2007-01-09 10:26:28 -08:00
item_cmpfunc.h Merge olga.mysql.com:/home/igor/mysql-5.0-opt 2007-01-09 10:26:28 -08:00
item_create.cc Many files: 2006-12-23 20:17:15 +01:00
item_create.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
item_func.cc Fixed bug#16861: User defined variable can have a wrong value if a tmp table was 2007-01-09 23:24:56 +03:00
item_func.h Fixed bug#16861: User defined variable can have a wrong value if a tmp table was 2007-01-09 23:24:56 +03:00
item_geofunc.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
item_geofunc.h Many files: 2006-12-23 20:17:15 +01:00
item_row.cc Many files: 2006-12-23 20:17:15 +01:00
item_row.h Many files: 2006-12-23 20:17:15 +01:00
item_strfunc.cc Merge mysql.com:/d2/hf/clean/my50-clean 2006-12-31 12:39:20 +04:00
item_strfunc.h Many files: 2006-12-23 20:17:15 +01:00
item_subselect.cc Merge mysql.com:/d2/hf/common/my50-common 2007-01-03 11:13:01 +04:00
item_subselect.h Merge mysql.com:/d2/hf/common/my50-common 2007-01-03 11:13:01 +04:00
item_sum.cc Many files: 2006-12-23 20:17:15 +01:00
item_sum.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
item_timefunc.cc Many files: 2006-12-23 20:17:15 +01:00
item_timefunc.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
item_uniq.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
item_uniq.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
key.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
lex.h Many files: 2006-12-23 20:17:15 +01:00
lex_symbol.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
lock.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
log.cc Many files: 2006-12-23 20:17:15 +01:00
log_event.cc Many files: 2006-12-23 20:17:15 +01:00
log_event.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
Makefile.am my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
matherr.c my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
message.mc make dist changes for Cmake build 2006-09-01 10:32:12 +02:00
mf_iocache.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
my_decimal.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
my_decimal.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
my_lock.c my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
mysql_priv.h Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode. 2007-01-11 23:18:01 +03:00
mysqld.cc Merge bk@192.168.21.1:mysql-5.0-opt 2007-01-11 13:18:49 +04:00
mysqld_suffix.h Many files: 2006-12-23 20:17:15 +01:00
net_serv.cc Many files: 2006-12-23 20:17:15 +01:00
nt_servc.cc
nt_servc.h
opt_range.cc Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-5.0 2006-12-31 01:04:07 +01:00
opt_range.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
opt_sum.cc Many files: 2006-12-23 20:17:15 +01:00
parse_file.cc Many files: 2006-12-23 20:17:15 +01:00
parse_file.h Many files: 2006-12-23 20:17:15 +01:00
password.c my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
procedure.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
procedure.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
protocol.cc Many files: 2006-12-23 20:17:15 +01:00
protocol.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
records.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
repl_failsafe.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
repl_failsafe.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
set_var.cc Many files: 2006-12-23 20:17:15 +01:00
set_var.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
slave.cc Many files: 2006-12-23 20:17:15 +01:00
slave.h Many files: 2006-12-23 20:17:15 +01:00
sp.cc Many files: 2006-12-23 20:17:15 +01:00
sp.h Many files: 2006-12-23 20:17:15 +01:00
sp_cache.cc Many files: 2006-12-23 20:17:15 +01:00
sp_cache.h Many files: 2006-12-23 20:17:15 +01:00
sp_head.cc Many files: 2006-12-23 20:17:15 +01:00
sp_head.h Many files: 2006-12-23 20:17:15 +01:00
sp_pcontext.cc Many files: 2006-12-23 20:17:15 +01:00
sp_pcontext.h Many files: 2006-12-23 20:17:15 +01:00
sp_rcontext.cc Many files: 2006-12-23 20:17:15 +01:00
sp_rcontext.h Many files: 2006-12-23 20:17:15 +01:00
spatial.cc Many files: 2006-12-23 20:17:15 +01:00
spatial.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_acl.cc Many files: 2006-12-23 20:17:15 +01:00
sql_acl.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_analyse.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_analyse.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_array.h Many files: 2006-12-23 20:17:15 +01:00
sql_base.cc Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode. 2007-01-11 23:18:01 +03:00
sql_bitmap.h Many files: 2006-12-23 20:17:15 +01:00
sql_cache.cc Many files: 2006-12-23 20:17:15 +01:00
sql_cache.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_class.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_class.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_client.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_crypt.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_crypt.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_cursor.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_cursor.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_db.cc Many files: 2006-12-23 20:17:15 +01:00
sql_delete.cc Many files: 2006-12-23 20:17:15 +01:00
sql_derived.cc Many files: 2006-12-23 20:17:15 +01:00
sql_do.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_error.cc Many files: 2006-12-23 20:17:15 +01:00
sql_error.h Many files: 2006-12-23 20:17:15 +01:00
sql_handler.cc Many files: 2006-12-23 20:17:15 +01:00
sql_help.cc Many files: 2006-12-23 20:17:15 +01:00
sql_insert.cc Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-5.0 2006-12-31 01:04:07 +01:00
sql_lex.cc Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode. 2007-01-11 23:18:01 +03:00
sql_lex.h Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode. 2007-01-11 23:18:01 +03:00
sql_list.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_list.h Many files: 2006-12-23 20:17:15 +01:00
sql_load.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_locale.cc Many files: 2006-12-23 20:17:15 +01:00
sql_manager.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_manager.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_map.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_map.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_olap.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_parse.cc Merge xiphis.org:/home/antony/work2/mysql-5.0-engines 2006-12-26 16:23:05 -08:00
sql_prepare.cc Merge mysql.com:/d2/hf/common/my41-common 2007-01-02 17:50:55 +04:00
sql_rename.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_repl.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_repl.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_select.cc Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode. 2007-01-11 23:18:01 +03:00
sql_select.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_show.cc Many files: 2006-12-23 20:17:15 +01:00
sql_sort.h Many files: 2006-12-23 20:17:15 +01:00
sql_state.c Many files: 2006-12-23 20:17:15 +01:00
sql_string.cc Many files: 2006-12-23 20:17:15 +01:00
sql_string.h Many files: 2006-12-23 20:17:15 +01:00
sql_table.cc Many files: 2006-12-23 20:17:15 +01:00
sql_test.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_trigger.cc Many files: 2006-12-23 20:17:15 +01:00
sql_trigger.h Many files: 2006-12-23 20:17:15 +01:00
sql_udf.cc Merge bk-internal:/home/bk/mysql-5.0-opt 2007-01-03 18:29:39 +02:00
sql_udf.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_union.cc Bug#23417: Too strict checks against GROUP BY in the ONLY_FULL_GROUP_BY mode. 2007-01-11 23:18:01 +03:00
sql_update.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql_view.cc Many files: 2006-12-23 20:17:15 +01:00
sql_view.h Many files: 2006-12-23 20:17:15 +01:00
sql_yacc.yy Many files: 2006-12-23 20:17:15 +01:00
stacktrace.c Many files: 2006-12-23 20:17:15 +01:00
stacktrace.h Many files: 2006-12-23 20:17:15 +01:00
strfunc.cc Many files: 2006-12-23 20:17:15 +01:00
structs.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
table.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
table.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
thr_malloc.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
time.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
tzfile.h Many files: 2006-12-23 20:17:15 +01:00
tztime.cc Many files: 2006-12-23 20:17:15 +01:00
tztime.h Many files: 2006-12-23 20:17:15 +01:00
udf_example.c Many files: 2006-12-23 20:17:15 +01:00
udf_example.def Add the two new functions to udf_example.def so they will be exported by dll's 2006-11-16 16:19:29 +01:00
uniques.cc Many files: 2006-12-23 20:17:15 +01:00
unireg.cc my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
unireg.h my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
watchdog_mysqld