mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug#40657: assertion with out of range variables and traditional sql_mode
In STRICT mode, out-of-bounds values caused an error message to be queued (rather than just a warning), without any further error-like processing happening. (The error is queued during update, at which time it's too late. For it to be processed properly, it would need to be queued during check-stage.) The assertion rightfully complains that we're trying to send an OK while having an error queued. Changeset breaks a lot of tests out into check-stage. This also allows us to send more correct warnings/error messages. mysql-test/r/auto_increment_increment_basic.result: update test results reflecting more correct warnings mysql-test/r/auto_increment_increment_func.result: update test results reflecting more correct warnings mysql-test/r/auto_increment_offset_basic.result: update test results reflecting more correct warnings mysql-test/r/auto_increment_offset_func.result: update test results reflecting more correct warnings mysql-test/r/concurrent_insert_basic.result: update test results reflecting more correct warnings mysql-test/r/connect_timeout_basic.result: update test results reflecting more correct warnings mysql-test/r/default_week_format_basic.result: update test results reflecting more correct warnings mysql-test/r/delayed_insert_timeout_basic.result: update test results reflecting more correct warnings mysql-test/r/div_precision_increment_basic.result: update test results reflecting more correct warnings mysql-test/r/expire_logs_days_basic.result: update test results reflecting more correct warnings mysql-test/r/group_concat_max_len_basic.result: update test results reflecting more correct warnings mysql-test/r/interactive_timeout_basic.result: update test results reflecting more correct warnings mysql-test/r/max_allowed_packet_basic.result: update test results reflecting more correct warnings mysql-test/r/max_binlog_size_basic.result: update test results reflecting more correct warnings mysql-test/r/max_connections_basic.result: update test results reflecting more correct warnings mysql-test/r/max_delayed_threads_basic.result: update test results reflecting more correct warnings mysql-test/r/max_error_count_basic.result: update test results reflecting more correct warnings mysql-test/r/max_insert_delayed_threads_basic.result: update test results reflecting more correct warnings mysql-test/r/max_length_for_sort_data_basic.result: update test results reflecting more correct warnings mysql-test/r/max_prepared_stmt_count_basic.result: update test results reflecting more correct warnings mysql-test/r/max_relay_log_size_basic.result: update test results reflecting more correct warnings mysql-test/r/max_sort_length_basic.result: update test results reflecting more correct warnings mysql-test/r/max_sp_recursion_depth_basic.result: update test results reflecting more correct warnings mysql-test/r/myisam_data_pointer_size_basic.result: update test results reflecting more correct warnings mysql-test/r/net_buffer_length_basic.result: update test results reflecting more correct warnings mysql-test/r/net_read_timeout_basic.result: update test results reflecting more correct warnings mysql-test/r/net_write_timeout_basic.result: update test results reflecting more correct warnings mysql-test/r/optimizer_prune_level_basic.result: update test results reflecting more correct warnings mysql-test/r/optimizer_search_depth_basic.result: update test results reflecting more correct warnings mysql-test/r/preload_buffer_size_basic.result: update test results reflecting more correct warnings mysql-test/r/ps.result: update test results reflecting more correct warnings mysql-test/r/read_buffer_size_basic.result: update test results reflecting more correct warnings mysql-test/r/read_rnd_buffer_size_basic.result: update test results reflecting more correct warnings mysql-test/r/slave_net_timeout_basic.result: update test results reflecting more correct warnings mysql-test/r/slow_launch_time_basic.result: update test results reflecting more correct warnings mysql-test/r/table_definition_cache_basic.result: update test results reflecting more correct warnings mysql-test/r/table_lock_wait_timeout_basic.result: update test results reflecting more correct warnings mysql-test/r/table_open_cache_basic.result: update test results reflecting more correct warnings mysql-test/r/variables.result: add test case that throws error (rather than warning) in the middle of trying to set a system-variable. mysql-test/t/variables.test: add test case that throws error (rather than warning) in the middle of trying to set a system-variable. sql/set_var.cc: Add comments. Prevent double-warnings. Through warnings for negative values given to unsigned system-variables. Process errors and warnings at check() stage rather than update() stage, since we may only issue warnings at the latter.
This commit is contained in:
@ -1077,3 +1077,38 @@ SET @@session.thread_stack= 7;
|
||||
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||
SET @@global.thread_stack= 7;
|
||||
#
|
||||
|
||||
#
|
||||
# Bug #40657 - assertion with out of range variables and traditional sql_mode
|
||||
#
|
||||
|
||||
SELECT @@global.expire_logs_days INTO @old_eld;
|
||||
|
||||
SET GLOBAL expire_logs_days = -1;
|
||||
--echo needs to've been adjusted (0)
|
||||
SELECT @@global.expire_logs_days;
|
||||
|
||||
SET GLOBAL expire_logs_days = 11;
|
||||
SET @old_mode=@@sql_mode;
|
||||
SET SESSION sql_mode = 'TRADITIONAL';
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
SET GLOBAL expire_logs_days = 100;
|
||||
--echo needs to be unchanged (11)
|
||||
SELECT @@global.expire_logs_days;
|
||||
SET SESSION sql_mode = @old_mode;
|
||||
|
||||
SET GLOBAL expire_logs_days = 100;
|
||||
--echo needs to've been adjusted (99)
|
||||
SELECT @@global.expire_logs_days;
|
||||
|
||||
SET GLOBAL expire_logs_days = 11;
|
||||
SET GLOBAL expire_logs_days = 99;
|
||||
--echo needs to pass with no warnings (99)
|
||||
SELECT @@global.expire_logs_days;
|
||||
|
||||
# cleanup
|
||||
SET GLOBAL expire_logs_days = @old_eld;
|
||||
|
||||
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
Reference in New Issue
Block a user