mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge mysql.com:/home/jimw/my/tmp_merge
into mysql.com:/home/jimw/my/mysql-5.1-clean
This commit is contained in:
@ -343,6 +343,7 @@ our @data_dir_lst;
|
|||||||
sub main ();
|
sub main ();
|
||||||
sub initial_setup ();
|
sub initial_setup ();
|
||||||
sub command_line_setup ();
|
sub command_line_setup ();
|
||||||
|
sub snapshot_setup ();
|
||||||
sub executable_setup ();
|
sub executable_setup ();
|
||||||
sub environment_setup ();
|
sub environment_setup ();
|
||||||
sub kill_running_server ();
|
sub kill_running_server ();
|
||||||
@ -357,7 +358,7 @@ sub ndbcluster_install_slave ();
|
|||||||
sub ndbcluster_start_slave ($);
|
sub ndbcluster_start_slave ($);
|
||||||
sub ndbcluster_stop_slave ();
|
sub ndbcluster_stop_slave ();
|
||||||
sub run_benchmarks ($);
|
sub run_benchmarks ($);
|
||||||
sub run_tests ();
|
sub initialize_servers ();
|
||||||
sub mysql_install_db ();
|
sub mysql_install_db ();
|
||||||
sub install_db ($$);
|
sub install_db ($$);
|
||||||
sub run_testcase ($);
|
sub run_testcase ($);
|
||||||
@ -388,7 +389,7 @@ sub main () {
|
|||||||
command_line_setup();
|
command_line_setup();
|
||||||
executable_setup();
|
executable_setup();
|
||||||
|
|
||||||
check_ndbcluster_support();
|
check_ndbcluster_support(); # We check whether to actually use it later
|
||||||
check_ssl_support();
|
check_ssl_support();
|
||||||
|
|
||||||
environment_setup();
|
environment_setup();
|
||||||
@ -404,49 +405,37 @@ sub main () {
|
|||||||
gprof_prepare();
|
gprof_prepare();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! $glob_use_running_server )
|
if ( $opt_bench )
|
||||||
{
|
|
||||||
if ( $opt_start_dirty )
|
|
||||||
{
|
|
||||||
kill_running_server();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
kill_and_cleanup();
|
|
||||||
mysql_install_db();
|
|
||||||
if ( $opt_force )
|
|
||||||
{
|
|
||||||
save_installed_db();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $opt_start_dirty )
|
|
||||||
{
|
|
||||||
if ( ndbcluster_start($opt_with_ndbcluster) )
|
|
||||||
{
|
|
||||||
mtr_error("Can't start ndbcluster");
|
|
||||||
}
|
|
||||||
if ( mysqld_start('master',0,[],[],$using_ndbcluster_master) )
|
|
||||||
{
|
|
||||||
mtr_report("Servers started, exiting");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mtr_error("Can't start the mysqld server");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
elsif ( $opt_bench )
|
|
||||||
{
|
{
|
||||||
|
initialize_servers();
|
||||||
run_benchmarks(shift); # Shift what? Extra arguments?!
|
run_benchmarks(shift); # Shift what? Extra arguments?!
|
||||||
}
|
}
|
||||||
elsif ( $opt_stress )
|
elsif ( $opt_stress )
|
||||||
{
|
{
|
||||||
|
initialize_servers();
|
||||||
run_stress_test()
|
run_stress_test()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
run_tests();
|
# Figure out which tests we are going to run
|
||||||
|
my $tests= collect_test_cases($opt_suite);
|
||||||
|
|
||||||
|
# Turn off NDB and other similar options if no tests use it
|
||||||
|
my ($need_ndbcluster,$need_im,$need_slave);
|
||||||
|
foreach my $test (@$tests)
|
||||||
|
{
|
||||||
|
$need_ndbcluster||= $test->{ndb_test};
|
||||||
|
$need_im||= $test->{component_id} eq 'im';
|
||||||
|
$need_slave||= $test->{slave_num};
|
||||||
|
}
|
||||||
|
$opt_with_ndbcluster= 0 unless $need_ndbcluster;
|
||||||
|
$opt_skip_im= 1 unless $need_im;
|
||||||
|
$opt_skip_rpl= 1 unless $need_slave;
|
||||||
|
|
||||||
|
snapshot_setup();
|
||||||
|
initialize_servers();
|
||||||
|
|
||||||
|
run_suite($opt_suite, $tests);
|
||||||
}
|
}
|
||||||
|
|
||||||
mtr_exit(0);
|
mtr_exit(0);
|
||||||
@ -996,20 +985,29 @@ sub command_line_setup () {
|
|||||||
$path_mysqltest_log= "$opt_vardir/log/mysqltest.log";
|
$path_mysqltest_log= "$opt_vardir/log/mysqltest.log";
|
||||||
|
|
||||||
$path_snapshot= "$opt_tmpdir/snapshot_$opt_master_myport/";
|
$path_snapshot= "$opt_tmpdir/snapshot_$opt_master_myport/";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub snapshot_setup () {
|
||||||
|
|
||||||
# Make a list of all data_dirs
|
# Make a list of all data_dirs
|
||||||
@data_dir_lst = (
|
@data_dir_lst = (
|
||||||
$master->[0]->{'path_myddir'},
|
$master->[0]->{'path_myddir'},
|
||||||
$master->[1]->{'path_myddir'},
|
$master->[1]->{'path_myddir'});
|
||||||
$slave->[0]->{'path_myddir'},
|
|
||||||
$slave->[1]->{'path_myddir'},
|
|
||||||
$slave->[2]->{'path_myddir'});
|
|
||||||
|
|
||||||
foreach my $instance (@{$instance_manager->{'instances'}})
|
unless ($opt_skip_rpl)
|
||||||
{
|
{
|
||||||
push(@data_dir_lst, $instance->{'path_datadir'});
|
push @data_dir_lst, ($slave->[0]->{'path_myddir'},
|
||||||
|
$slave->[1]->{'path_myddir'},
|
||||||
|
$slave->[2]->{'path_myddir'});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unless ($opt_skip_im)
|
||||||
|
{
|
||||||
|
foreach my $instance (@{$instance_manager->{'instances'}})
|
||||||
|
{
|
||||||
|
push(@data_dir_lst, $instance->{'path_datadir'});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1440,7 +1438,7 @@ sub check_ndbcluster_support () {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mtr_report("Using ndbcluster, mysqld supports it");
|
mtr_report("Using ndbcluster if necessary, mysqld supports it");
|
||||||
$opt_with_ndbcluster= 1;
|
$opt_with_ndbcluster= 1;
|
||||||
if ( $opt_ndbconnectstring )
|
if ( $opt_ndbconnectstring )
|
||||||
{
|
{
|
||||||
@ -1728,12 +1726,9 @@ sub run_benchmarks ($) {
|
|||||||
|
|
||||||
# FIXME how to specify several suites to run? Comma separated list?
|
# FIXME how to specify several suites to run? Comma separated list?
|
||||||
|
|
||||||
sub run_tests () {
|
|
||||||
run_suite($opt_suite);
|
|
||||||
}
|
|
||||||
|
|
||||||
sub run_suite () {
|
sub run_suite () {
|
||||||
my $suite= shift;
|
my ($suite, $tests)= @_;
|
||||||
|
|
||||||
mtr_print_thick_line();
|
mtr_print_thick_line();
|
||||||
|
|
||||||
@ -1741,8 +1736,6 @@ sub run_suite () {
|
|||||||
|
|
||||||
mtr_timer_start($glob_timers,"suite", 60 * $opt_suite_timeout);
|
mtr_timer_start($glob_timers,"suite", 60 * $opt_suite_timeout);
|
||||||
|
|
||||||
my $tests= collect_test_cases($suite);
|
|
||||||
|
|
||||||
mtr_report("Starting Tests in the '$suite' suite");
|
mtr_report("Starting Tests in the '$suite' suite");
|
||||||
|
|
||||||
mtr_print_header();
|
mtr_print_header();
|
||||||
@ -1784,14 +1777,37 @@ sub run_suite () {
|
|||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
sub initialize_servers () {
|
||||||
|
if ( ! $glob_use_running_server )
|
||||||
|
{
|
||||||
|
if ( $opt_start_dirty )
|
||||||
|
{
|
||||||
|
kill_running_server();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
kill_and_cleanup();
|
||||||
|
mysql_install_db();
|
||||||
|
if ( $opt_force )
|
||||||
|
{
|
||||||
|
save_installed_db();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sub mysql_install_db () {
|
sub mysql_install_db () {
|
||||||
|
|
||||||
# FIXME not exactly true I think, needs improvements
|
# FIXME not exactly true I think, needs improvements
|
||||||
install_db('master', $master->[0]->{'path_myddir'});
|
install_db('master', $master->[0]->{'path_myddir'});
|
||||||
install_db('master', $master->[1]->{'path_myddir'});
|
install_db('master', $master->[1]->{'path_myddir'});
|
||||||
install_db('slave', $slave->[0]->{'path_myddir'});
|
|
||||||
install_db('slave', $slave->[1]->{'path_myddir'});
|
if ( ! $opt_skip_rpl )
|
||||||
install_db('slave', $slave->[2]->{'path_myddir'});
|
{
|
||||||
|
install_db('slave', $slave->[0]->{'path_myddir'});
|
||||||
|
install_db('slave', $slave->[1]->{'path_myddir'});
|
||||||
|
install_db('slave', $slave->[2]->{'path_myddir'});
|
||||||
|
}
|
||||||
|
|
||||||
if ( ! $opt_skip_im )
|
if ( ! $opt_skip_im )
|
||||||
{
|
{
|
||||||
@ -2243,10 +2259,11 @@ sub run_testcase ($) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
# If --start-and-exit given, stop here to let user manually run tests
|
# If --start-and-exit or --start-dirty given, stop here to let user manually
|
||||||
|
# run tests
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
if ( $opt_start_and_exit )
|
if ( $opt_start_and_exit or $opt_start_dirty )
|
||||||
{
|
{
|
||||||
mtr_report("\nServers started, exiting");
|
mtr_report("\nServers started, exiting");
|
||||||
exit(0);
|
exit(0);
|
||||||
@ -3700,11 +3717,12 @@ Misc options
|
|||||||
comment=STR Write STR to the output
|
comment=STR Write STR to the output
|
||||||
notimer Don't show test case execution time
|
notimer Don't show test case execution time
|
||||||
script-debug Debug this script itself
|
script-debug Debug this script itself
|
||||||
start-and-exit Only initiate and start the "mysqld" servers, use
|
start-and-exit Only initialize and start the servers, using the
|
||||||
the startup settings for the specified test case if any
|
startup settings for the specified test case (if any)
|
||||||
start-dirty Only start the "mysqld" servers without initiation
|
start-dirty Only start the servers (without initialization) for
|
||||||
fast Don't try to cleanup from earlier runs
|
the specified test case (if any)
|
||||||
reorder Reorder tests to get less server restarts
|
fast Don't try to clean up from earlier runs
|
||||||
|
reorder Reorder tests to get fewer server restarts
|
||||||
help Get this help text
|
help Get this help text
|
||||||
unified-diff | udiff When presenting differences, use unified diff
|
unified-diff | udiff When presenting differences, use unified diff
|
||||||
|
|
||||||
|
@ -264,7 +264,7 @@ done
|
|||||||
# test if Ndb Cluster starts properly
|
# test if Ndb Cluster starts properly
|
||||||
|
|
||||||
if [ `expr $VERBOSE \> 1` = 1 ] ; then
|
if [ `expr $VERBOSE \> 1` = 1 ] ; then
|
||||||
echo "Waiting for started..."
|
echo "Waiting for NDB data nodes to start..."
|
||||||
fi
|
fi
|
||||||
if ( $exec_waiter ) | grep "NDBT_ProgramExit: 0 - OK" > /dev/null 2>&1 ; then :; else
|
if ( $exec_waiter ) | grep "NDBT_ProgramExit: 0 - OK" > /dev/null 2>&1 ; then :; else
|
||||||
if [ `expr $VERBOSE \> 0` = 1 ] ; then
|
if [ `expr $VERBOSE \> 0` = 1 ] ; then
|
||||||
|
@ -392,3 +392,16 @@ HAVING HU.PROJ.CITY = HU.STAFF.CITY);
|
|||||||
EMPNUM GRADE*1000
|
EMPNUM GRADE*1000
|
||||||
E3 13000
|
E3 13000
|
||||||
DROP SCHEMA HU;
|
DROP SCHEMA HU;
|
||||||
|
USE test;
|
||||||
|
create table t1(f1 int);
|
||||||
|
select f1 from t1 having max(f1)=f1;
|
||||||
|
f1
|
||||||
|
select f1 from t1 group by f1 having max(f1)=f1;
|
||||||
|
f1
|
||||||
|
set session sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
select f1 from t1 having max(f1)=f1;
|
||||||
|
ERROR 42000: non-grouping field 'f1' is used in HAVING clause
|
||||||
|
select f1 from t1 group by f1 having max(f1)=f1;
|
||||||
|
f1
|
||||||
|
set session sql_mode='';
|
||||||
|
drop table t1;
|
||||||
|
@ -215,9 +215,6 @@ select @@version;
|
|||||||
select @@global.version;
|
select @@global.version;
|
||||||
@@global.version
|
@@global.version
|
||||||
#
|
#
|
||||||
select @@session.VERSION;
|
|
||||||
@@session.VERSION
|
|
||||||
#
|
|
||||||
set @first_var= NULL;
|
set @first_var= NULL;
|
||||||
create table t1 select @first_var;
|
create table t1 select @first_var;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
|
@ -275,7 +275,7 @@ ERROR HY000: Variable 'autocommit' is a SESSION variable and can't be used with
|
|||||||
select @@global.timestamp;
|
select @@global.timestamp;
|
||||||
ERROR HY000: Variable 'timestamp' is a SESSION variable
|
ERROR HY000: Variable 'timestamp' is a SESSION variable
|
||||||
set @@version='';
|
set @@version='';
|
||||||
ERROR HY000: Unknown system variable 'version'
|
ERROR HY000: Variable 'version' is a read only variable
|
||||||
set @@concurrent_insert=1;
|
set @@concurrent_insert=1;
|
||||||
ERROR HY000: Variable 'concurrent_insert' is a GLOBAL variable and should be set with SET GLOBAL
|
ERROR HY000: Variable 'concurrent_insert' is a GLOBAL variable and should be set with SET GLOBAL
|
||||||
set @@global.sql_auto_is_null=1;
|
set @@global.sql_auto_is_null=1;
|
||||||
@ -384,6 +384,7 @@ select @@sql_max_join_size,@@max_join_size;
|
|||||||
set sql_quote_show_create=1;
|
set sql_quote_show_create=1;
|
||||||
set sql_safe_updates=1;
|
set sql_safe_updates=1;
|
||||||
set sql_select_limit=1;
|
set sql_select_limit=1;
|
||||||
|
set sql_select_limit=default;
|
||||||
set sql_warnings=1;
|
set sql_warnings=1;
|
||||||
set global table_open_cache=100;
|
set global table_open_cache=100;
|
||||||
set storage_engine=myisam;
|
set storage_engine=myisam;
|
||||||
@ -584,3 +585,31 @@ set @@global.character_set_filesystem=default;
|
|||||||
select @@global.character_set_filesystem;
|
select @@global.character_set_filesystem;
|
||||||
@@global.character_set_filesystem
|
@@global.character_set_filesystem
|
||||||
binary
|
binary
|
||||||
|
set @old_sql_big_selects = @@sql_big_selects;
|
||||||
|
set @@sql_big_selects = 1;
|
||||||
|
show variables like 'sql_big_selects';
|
||||||
|
Variable_name Value
|
||||||
|
sql_big_selects ON
|
||||||
|
set @@sql_big_selects = @old_sql_big_selects;
|
||||||
|
set @@sql_notes = 0, @@sql_warnings = 0;
|
||||||
|
show variables like 'sql_notes';
|
||||||
|
Variable_name Value
|
||||||
|
sql_notes OFF
|
||||||
|
show variables like 'sql_warnings';
|
||||||
|
Variable_name Value
|
||||||
|
sql_warnings OFF
|
||||||
|
set @@sql_notes = 1, @@sql_warnings = 1;
|
||||||
|
show variables like 'sql_notes';
|
||||||
|
Variable_name Value
|
||||||
|
sql_notes ON
|
||||||
|
show variables like 'sql_warnings';
|
||||||
|
Variable_name Value
|
||||||
|
sql_warnings ON
|
||||||
|
select @@system_time_zone;
|
||||||
|
@@system_time_zone
|
||||||
|
#
|
||||||
|
select @@version, @@version_comment, @@version_compile_machine,
|
||||||
|
@@version_compile_os;
|
||||||
|
@@version @@version_comment @@version_compile_machine @@version_compile_os
|
||||||
|
# # # #
|
||||||
|
End of 5.0 tests
|
||||||
|
@ -393,3 +393,16 @@ SELECT EMPNUM, GRADE*1000
|
|||||||
HAVING HU.PROJ.CITY = HU.STAFF.CITY);
|
HAVING HU.PROJ.CITY = HU.STAFF.CITY);
|
||||||
|
|
||||||
DROP SCHEMA HU;
|
DROP SCHEMA HU;
|
||||||
|
USE test;
|
||||||
|
#
|
||||||
|
# Bug#18739: non-standard HAVING extension was allowed in strict ANSI sql mode.
|
||||||
|
#
|
||||||
|
create table t1(f1 int);
|
||||||
|
select f1 from t1 having max(f1)=f1;
|
||||||
|
select f1 from t1 group by f1 having max(f1)=f1;
|
||||||
|
set session sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
--error 1463
|
||||||
|
select f1 from t1 having max(f1)=f1;
|
||||||
|
select f1 from t1 group by f1 having max(f1)=f1;
|
||||||
|
set session sql_mode='';
|
||||||
|
drop table t1;
|
||||||
|
@ -143,8 +143,6 @@ select @@Max_Allowed_Packet;
|
|||||||
select @@version;
|
select @@version;
|
||||||
--replace_column 1 #
|
--replace_column 1 #
|
||||||
select @@global.version;
|
select @@global.version;
|
||||||
--replace_column 1 #
|
|
||||||
select @@session.VERSION;
|
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
|
@ -169,7 +169,7 @@ set collation_connection=NULL;
|
|||||||
set global autocommit=1;
|
set global autocommit=1;
|
||||||
--error 1238
|
--error 1238
|
||||||
select @@global.timestamp;
|
select @@global.timestamp;
|
||||||
--error 1193
|
--error 1238
|
||||||
set @@version='';
|
set @@version='';
|
||||||
--error 1229
|
--error 1229
|
||||||
set @@concurrent_insert=1;
|
set @@concurrent_insert=1;
|
||||||
@ -258,6 +258,8 @@ select @@sql_max_join_size,@@max_join_size;
|
|||||||
set sql_quote_show_create=1;
|
set sql_quote_show_create=1;
|
||||||
set sql_safe_updates=1;
|
set sql_safe_updates=1;
|
||||||
set sql_select_limit=1;
|
set sql_select_limit=1;
|
||||||
|
# reset it, so later tests don't get confused
|
||||||
|
set sql_select_limit=default;
|
||||||
set sql_warnings=1;
|
set sql_warnings=1;
|
||||||
set global table_open_cache=100;
|
set global table_open_cache=100;
|
||||||
set storage_engine=myisam;
|
set storage_engine=myisam;
|
||||||
@ -472,4 +474,38 @@ select @@character_set_filesystem;
|
|||||||
set @@global.character_set_filesystem=default;
|
set @@global.character_set_filesystem=default;
|
||||||
select @@global.character_set_filesystem;
|
select @@global.character_set_filesystem;
|
||||||
|
|
||||||
# End of 5.0 tests
|
#
|
||||||
|
# Bug #17849: Show sql_big_selects in SHOW VARIABLES
|
||||||
|
#
|
||||||
|
set @old_sql_big_selects = @@sql_big_selects;
|
||||||
|
set @@sql_big_selects = 1;
|
||||||
|
show variables like 'sql_big_selects';
|
||||||
|
set @@sql_big_selects = @old_sql_big_selects;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #16195: SHOW VARIABLES doesn't report correctly sql_warnings and
|
||||||
|
# sql_notes values
|
||||||
|
#
|
||||||
|
set @@sql_notes = 0, @@sql_warnings = 0;
|
||||||
|
show variables like 'sql_notes';
|
||||||
|
show variables like 'sql_warnings';
|
||||||
|
set @@sql_notes = 1, @@sql_warnings = 1;
|
||||||
|
show variables like 'sql_notes';
|
||||||
|
show variables like 'sql_warnings';
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #12792: @@system_time_zone is not SELECTable.
|
||||||
|
#
|
||||||
|
# Don't actually output, since it depends on the system
|
||||||
|
--replace_column 1 #
|
||||||
|
select @@system_time_zone;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #15684: system variables cannot be SELECTed (e.g. @@version_comment)
|
||||||
|
#
|
||||||
|
# Don't actually output, since it depends on the system
|
||||||
|
--replace_column 1 # 2 # 3 # 4 #
|
||||||
|
select @@version, @@version_comment, @@version_compile_machine,
|
||||||
|
@@version_compile_os;
|
||||||
|
|
||||||
|
--echo End of 5.0 tests
|
||||||
|
18
sql/item.cc
18
sql/item.cc
@ -3154,7 +3154,8 @@ static Item** find_field_in_group_list(Item *find_item, ORDER *group_list)
|
|||||||
both clauses contain different fields with the same names, a warning is
|
both clauses contain different fields with the same names, a warning is
|
||||||
issued that name of 'ref' is ambiguous. We extend ANSI SQL in that when no
|
issued that name of 'ref' is ambiguous. We extend ANSI SQL in that when no
|
||||||
GROUP BY column is found, then a HAVING name is resolved as a possibly
|
GROUP BY column is found, then a HAVING name is resolved as a possibly
|
||||||
derived SELECT column.
|
derived SELECT column. This extension is allowed only if the
|
||||||
|
MODE_ONLY_FULL_GROUP_BY sql mode isn't enabled.
|
||||||
|
|
||||||
NOTES
|
NOTES
|
||||||
The resolution procedure is:
|
The resolution procedure is:
|
||||||
@ -3164,7 +3165,9 @@ static Item** find_field_in_group_list(Item *find_item, ORDER *group_list)
|
|||||||
in the GROUP BY clause of Q.
|
in the GROUP BY clause of Q.
|
||||||
- If found different columns with the same name in GROUP BY and SELECT
|
- If found different columns with the same name in GROUP BY and SELECT
|
||||||
- issue a warning and return the GROUP BY column,
|
- issue a warning and return the GROUP BY column,
|
||||||
- otherwise return the found SELECT column.
|
- otherwise
|
||||||
|
- if the MODE_ONLY_FULL_GROUP_BY mode is enabled return error
|
||||||
|
- else return the found SELECT column.
|
||||||
|
|
||||||
|
|
||||||
RETURN
|
RETURN
|
||||||
@ -3209,6 +3212,17 @@ resolve_ref_in_select_and_group(THD *thd, Item_ident *ref, SELECT_LEX *select)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (thd->variables.sql_mode & MODE_ONLY_FULL_GROUP_BY &&
|
||||||
|
select_ref != not_found_item && !group_by_ref)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
Report the error if fields was found only in the SELECT item list and
|
||||||
|
the strict mode is enabled.
|
||||||
|
*/
|
||||||
|
my_error(ER_NON_GROUPING_FIELD_USED, MYF(0),
|
||||||
|
ref->name, "HAVING");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
if (select_ref != not_found_item || group_by_ref)
|
if (select_ref != not_found_item || group_by_ref)
|
||||||
{
|
{
|
||||||
if (select_ref != not_found_item && !ambiguous_fields)
|
if (select_ref != not_found_item && !ambiguous_fields)
|
||||||
|
@ -4559,12 +4559,6 @@ Item *get_system_var(THD *thd, enum_var_type var_type, LEX_STRING name,
|
|||||||
sys_var *var;
|
sys_var *var;
|
||||||
LEX_STRING *base_name, *component_name;
|
LEX_STRING *base_name, *component_name;
|
||||||
|
|
||||||
if (component.str == 0 &&
|
|
||||||
!my_strcasecmp(system_charset_info, name.str, "VERSION"))
|
|
||||||
return new Item_string(NULL, server_version,
|
|
||||||
(uint) strlen(server_version),
|
|
||||||
system_charset_info, DERIVATION_SYSCONST);
|
|
||||||
|
|
||||||
if (component.str)
|
if (component.str)
|
||||||
{
|
{
|
||||||
base_name= &component;
|
base_name= &component;
|
||||||
|
@ -438,6 +438,8 @@ sys_var_thd_storage_engine sys_storage_engine("storage_engine",
|
|||||||
sys_var_sync_binlog_period sys_sync_binlog_period("sync_binlog", &sync_binlog_period);
|
sys_var_sync_binlog_period sys_sync_binlog_period("sync_binlog", &sync_binlog_period);
|
||||||
#endif
|
#endif
|
||||||
sys_var_bool_ptr sys_sync_frm("sync_frm", &opt_sync_frm);
|
sys_var_bool_ptr sys_sync_frm("sync_frm", &opt_sync_frm);
|
||||||
|
sys_var_const_str sys_system_time_zone("system_time_zone",
|
||||||
|
system_time_zone);
|
||||||
sys_var_long_ptr sys_table_def_size("table_definition_cache",
|
sys_var_long_ptr sys_table_def_size("table_definition_cache",
|
||||||
&table_def_size);
|
&table_def_size);
|
||||||
sys_var_long_ptr sys_table_cache_size("table_open_cache",
|
sys_var_long_ptr sys_table_cache_size("table_open_cache",
|
||||||
@ -455,6 +457,13 @@ sys_var_thd_ulong sys_tmp_table_size("tmp_table_size",
|
|||||||
&SV::tmp_table_size);
|
&SV::tmp_table_size);
|
||||||
sys_var_bool_ptr sys_timed_mutexes("timed_mutexes",
|
sys_var_bool_ptr sys_timed_mutexes("timed_mutexes",
|
||||||
&timed_mutexes);
|
&timed_mutexes);
|
||||||
|
sys_var_const_str sys_version("version", server_version);
|
||||||
|
sys_var_const_str sys_version_comment("version_comment",
|
||||||
|
MYSQL_COMPILATION_COMMENT);
|
||||||
|
sys_var_const_str sys_version_compile_machine("version_compile_machine",
|
||||||
|
MACHINE_TYPE);
|
||||||
|
sys_var_const_str sys_version_compile_os("version_compile_os",
|
||||||
|
SYSTEM_TYPE);
|
||||||
sys_var_thd_ulong sys_net_wait_timeout("wait_timeout",
|
sys_var_thd_ulong sys_net_wait_timeout("wait_timeout",
|
||||||
&SV::net_wait_timeout);
|
&SV::net_wait_timeout);
|
||||||
|
|
||||||
@ -622,7 +631,6 @@ sys_var_thd_time_zone sys_time_zone("time_zone");
|
|||||||
|
|
||||||
/* Read only variables */
|
/* Read only variables */
|
||||||
|
|
||||||
sys_var_const_str sys_os("version_compile_os", SYSTEM_TYPE);
|
|
||||||
sys_var_have_variable sys_have_archive_db("have_archive", &have_archive_db);
|
sys_var_have_variable sys_have_archive_db("have_archive", &have_archive_db);
|
||||||
sys_var_have_variable sys_have_berkeley_db("have_bdb", &have_berkeley_db);
|
sys_var_have_variable sys_have_berkeley_db("have_bdb", &have_berkeley_db);
|
||||||
sys_var_have_variable sys_have_blackhole_db("have_blackhole_engine",
|
sys_var_have_variable sys_have_blackhole_db("have_blackhole_engine",
|
||||||
@ -949,10 +957,11 @@ SHOW_VAR init_vars[]= {
|
|||||||
#ifdef HAVE_SYS_UN_H
|
#ifdef HAVE_SYS_UN_H
|
||||||
{"socket", (char*) &mysqld_unix_port, SHOW_CHAR_PTR},
|
{"socket", (char*) &mysqld_unix_port, SHOW_CHAR_PTR},
|
||||||
#endif
|
#endif
|
||||||
{sys_sort_buffer.name, (char*) &sys_sort_buffer, SHOW_SYS},
|
{sys_sort_buffer.name, (char*) &sys_sort_buffer, SHOW_SYS},
|
||||||
|
{sys_big_selects.name, (char*) &sys_big_selects, SHOW_SYS},
|
||||||
{sys_sql_mode.name, (char*) &sys_sql_mode, SHOW_SYS},
|
{sys_sql_mode.name, (char*) &sys_sql_mode, SHOW_SYS},
|
||||||
{"sql_notes", (char*) &sys_sql_notes, SHOW_BOOL},
|
{"sql_notes", (char*) &sys_sql_notes, SHOW_SYS},
|
||||||
{"sql_warnings", (char*) &sys_sql_warnings, SHOW_BOOL},
|
{"sql_warnings", (char*) &sys_sql_warnings, SHOW_SYS},
|
||||||
{sys_storage_engine.name, (char*) &sys_storage_engine, SHOW_SYS},
|
{sys_storage_engine.name, (char*) &sys_storage_engine, SHOW_SYS},
|
||||||
#ifdef HAVE_REPLICATION
|
#ifdef HAVE_REPLICATION
|
||||||
{sys_sync_binlog_period.name,(char*) &sys_sync_binlog_period, SHOW_SYS},
|
{sys_sync_binlog_period.name,(char*) &sys_sync_binlog_period, SHOW_SYS},
|
||||||
@ -981,10 +990,11 @@ SHOW_VAR init_vars[]= {
|
|||||||
{sys_tx_isolation.name, (char*) &sys_tx_isolation, SHOW_SYS},
|
{sys_tx_isolation.name, (char*) &sys_tx_isolation, SHOW_SYS},
|
||||||
{sys_updatable_views_with_limit.name,
|
{sys_updatable_views_with_limit.name,
|
||||||
(char*) &sys_updatable_views_with_limit,SHOW_SYS},
|
(char*) &sys_updatable_views_with_limit,SHOW_SYS},
|
||||||
{"version", server_version, SHOW_CHAR},
|
{sys_version.name, (char*) &sys_version, SHOW_SYS},
|
||||||
{"version_comment", (char*) MYSQL_COMPILATION_COMMENT, SHOW_CHAR},
|
{sys_version_comment.name, (char*) &sys_version_comment, SHOW_SYS},
|
||||||
{"version_compile_machine", (char*) MACHINE_TYPE, SHOW_CHAR},
|
{sys_version_compile_machine.name, (char*) &sys_version_compile_machine,
|
||||||
{sys_os.name, (char*) &sys_os, SHOW_SYS},
|
SHOW_SYS},
|
||||||
|
{sys_version_compile_os.name, (char*) &sys_version_compile_os, SHOW_SYS},
|
||||||
{sys_net_wait_timeout.name, (char*) &sys_net_wait_timeout, SHOW_SYS},
|
{sys_net_wait_timeout.name, (char*) &sys_net_wait_timeout, SHOW_SYS},
|
||||||
{NullS, NullS, SHOW_LONG}
|
{NullS, NullS, SHOW_LONG}
|
||||||
};
|
};
|
||||||
|
@ -5822,6 +5822,8 @@ ER_MAX_PREPARED_STMT_COUNT_REACHED 42000
|
|||||||
eng "Can't create more than max_prepared_stmt_count statements (current value: %lu)"
|
eng "Can't create more than max_prepared_stmt_count statements (current value: %lu)"
|
||||||
ER_VIEW_RECURSIVE
|
ER_VIEW_RECURSIVE
|
||||||
eng "`%-.64s`.`%-.64s` contains view recursion"
|
eng "`%-.64s`.`%-.64s` contains view recursion"
|
||||||
|
ER_NON_GROUPING_FIELD_USED 42000
|
||||||
|
eng "non-grouping field '%-.64s' is used in %-.64s clause"
|
||||||
ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR
|
ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR
|
||||||
eng "Cannot switch out of the row-based binary log format when the session has open temporary tables"
|
eng "Cannot switch out of the row-based binary log format when the session has open temporary tables"
|
||||||
ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT
|
ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT
|
||||||
|
@ -12690,6 +12690,10 @@ setup_group(THD *thd, Item **ref_pointer_array, TABLE_LIST *tables,
|
|||||||
if (item->type() != Item::SUM_FUNC_ITEM && !item->marker &&
|
if (item->type() != Item::SUM_FUNC_ITEM && !item->marker &&
|
||||||
!item->const_item())
|
!item->const_item())
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
TODO: change ER_WRONG_FIELD_WITH_GROUP to more detailed
|
||||||
|
ER_NON_GROUPING_FIELD_USED
|
||||||
|
*/
|
||||||
my_error(ER_WRONG_FIELD_WITH_GROUP, MYF(0), item->full_name());
|
my_error(ER_WRONG_FIELD_WITH_GROUP, MYF(0), item->full_name());
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user