mirror of
https://github.com/MariaDB/server.git
synced 2025-07-21 21:22:27 +03:00
ead61d9bd96b773a3bbacf16c20df7cc34d85c96
7 Commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
0994af43e5 |
MDEV-22058: Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed in Diagnostics_area::set_ok_status
Error state is not stored in check_and_do_in_subquery_rewrites() when there is illegal combination of optimizer switches. So all the functions eventually return false. Thus the assetion failure. |
|||
9cba6c5aa3 |
Updated mtr files to support different compiled in options
This allows one to run the test suite even if any of the following options are changed: - character-set-server - collation-server - join-cache-level - log-basename - max-allowed-packet - optimizer-switch - query-cache-size and query-cache-type - skip-name-resolve - table-definition-cache - table-open-cache - Some innodb options etc Changes: - Don't print out the value of system variables as one can't depend on them to being constants. - Don't set global variables to 'default' as the default may not be the same as the test was started with if there was an additional option file. Instead save original value and reset it at end of test. - Test that depends on the latin1 character set should include default_charset.inc or set the character set to latin1 - Test that depends on the original optimizer switch, should include default_optimizer_switch.inc - Test that depends on the value of a specific system variable should set it in the test (like optimizer_use_condition_selectivity) - Split subselect3.test into subselect3.test and subselect3.inc to make it easier to set and reset system variables. - Added .opt files for test that required specfic options that could be changed by external configuration files. - Fixed result files in rockdsb & tokudb that had not been updated for a while. |
|||
4cd19779c7 |
MDEV-69 SET optimizer_switch = REPLACE(...) causes ER_WRONG_VALUE_FOR_VAR
find_set() in typelib.c expected a zero-terminated string include/typelib.h: disable unused flags |
|||
76f0b94bb0 |
merge with 5.3
sql/sql_insert.cc: CREATE ... IF NOT EXISTS may do nothing, but it is still not a failure. don't forget to my_ok it. ****** CREATE ... IF NOT EXISTS may do nothing, but it is still not a failure. don't forget to my_ok it. sql/sql_table.cc: small cleanup ****** small cleanup |
|||
1756d087cd |
Fix for BUG#59894
"set optimizer_switch to e or d causes invalid memory writes/valgrind warnings": due to prefix support, the argument "e" was overwritten with its full value "engine_condition_pushdown", which caused a buffer overrun. This was wrong usage of find_type(); other wrong usages are fixed here too. Please start reading with the comment of typelib.c. client/mysqldump.c: A bug: find_type() expects a bitmap as 3rd argument (each bit is a flag controlling a behaviour of the function); here it was instead passed the length of the string to search! That could give random behaviour of find_type() depending on the string. We rather need to pass a correct flag to find_type(). The correct flag is FIND_TYPE_BASIC (0). Flag 8 is not needed as buff cannot have a comma (see how buff is filled). Flag 1 looks like a superfluous restriction. Flag 4 is not user-friendly (why use --compatible=2 rather than --compatible=mysql40 ?, and we probably not commit to "2" always meaning "mysql40" until the end of times). include/mysql.h.pp: This isn't a problematic API change as we go from char* to const char*: existing code will run unchanged. include/typelib.h: named constants. Not an enum to not significantly change the declaration of find_type() which would be an API change (typelib.h is included in mysql.h). mysql-test/r/mysqldump.result: correct result (see the two requested modes in SQL_MODE) mysql-test/suite/sys_vars/t/optimizer_switch_basic.test: test for BUG#59894. The second SET used to crash. mysql-test/t/mysqldump.test: we had no test for multiple modes in --compatible, which is supported according to --help mysys/typelib.c: Fix for BUG#59894. parse_name() is asked to match "e" with a row of the TYPELIB (the TYPELIB lists permitted flags of optimizer_switch; and comes from optimizer_switch_names[] of sys_vars.cc). find_type() is capable of supporting prefixes, but if it is not passed flag 2 in third argument, it will overwrite its first argument (the string to search for) with the complete name, here overwriting "e" with "engine_condition_pushdown". But as this "e" was a buffer allocated in an Item, it was not big enough to host the longer name, thus the crash. We don't need to know the complete flag's name; the output used from find_type() is just the flag's number (== function's return code). So we can pass flag 2 to find_type() in parse_name(). After doing this fix and the other fixes in this patch, all usages of find_type() were using flag 2; in most usages the string to search for, is not guaranteed to be long enough to host the complete name (it is either directly from argv, or from alloc_root/my_malloc done in an earlier call). Thus, flag 2 is here made implicit: callers need not pass it anymore, it is always automatically turned on. This allows to eliminate an oddity: parse_name() took a const char**, and then removed "const" before calling find_type(), which could theoretically modify the pointed data, thus lying on constness. Last, constants for find_type() are now named. sql-common/client.c: Two bugs: 1) The enum was not in sync with the array (due to a bad porting of WL 1054; the extra OPT_ values are about options present in 5.1 and deleted in 5.5); added a compile_time_assert() to make sure this doesn't happen again 2) find_type() was writing past the end of opt_arg; as opt_arg was allocated with alloc_root() with no extra space, this was an overrun; it could be seen when ** building with -DWITH_VALGRIND -DHAVE_purify -DEXTRA_DEBUG ** making execution go through the faulty code; this faulty code is executed only if the client asks to read a configuration file like this: mysql_options(mysql, MYSQL_READ_DEFAULT_FILE, "/tmp/cnf.cnf"); so by adding such line to the start of mysql_client_test.c::client_connect(), we could see the valgrind warning: ==30548== Invalid write of size 1 ==30548== at 0x4C2624C: strcpy (mc_replace_strmem.c:303) ==30548== by 0x48DC29: find_type (typelib.c:120) ==30548== by 0x465686: mysql_read_default_options (client.c:1344) ==30548== by 0x46830F: mysql_real_connect (client.c:2971) ==30548== by 0x409339: client_connect (mysql_client_test.c:331) ==30548== by 0x463A7F: main (mysql_client_test.c:19902) ==30548== Address 0x61875ad is 0 bytes after a block of size 29 alloc'd ==30548== at 0x4C25153: malloc (vg_replace_malloc.c:195) ==30548== by 0x49BFF1: my_malloc (my_malloc.c:38) ==30548== by 0x49C65C: alloc_root (my_alloc.c:166) ==30548== by 0x48EF97: handle_default_option (default.c:381) ==30548== by 0x49068C: search_default_file_with_ext (default.c:992) ==30548== by 0x48F929: search_default_file (default.c:670) ==30548== by 0x48EDC4: my_search_option_files (default.c:312) ==30548== by 0x48F4B1: my_load_defaults (default.c:576) ==30548== by 0x46517A: mysql_read_default_options (client.c:1207) ==30548== by 0x46830F: mysql_real_connect (client.c:2971) ==30548== by 0x409339: client_connect (mysql_client_test.c:331) ==30548== by 0x463A7F: main (mysql_client_test.c:19902) This is fixed by having find_type() not overwrite anymore. sql/sql_help.cc: cast not needed anymore. sql/table.cc: cast not needed anymore. |
|||
013dcdbd67 |
Modified and added tests following review of WL#4738.
- Added tests for innodb and semisync plugin - Modified existing tests to include variable values in I_S tables - Updated the all_vars test to include optional checkes for INNODB and semisync plugin if loaded mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_adaptive_hash_index_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_change_buffering_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_file_format_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_io_capacity_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_old_blocks_pct_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_old_blocks_time_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_read_ahead_threshold_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_read_io_threads_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_replication_delay_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_spin_wait_delay_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_stats_on_metadata_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_stats_sample_pages_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_strict_mode_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_thread_sleep_delay_basic.result: Updated result file mysql-test/suite/sys_vars/r/innodb_use_sys_malloc_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_version_basic.result: New result file mysql-test/suite/sys_vars/r/innodb_write_io_threads_basic.result: New result file mysql-test/suite/sys_vars/r/last_insert_id_basic.result: Updated result file mysql-test/suite/sys_vars/r/lc_messages_basic.result: Updated result file mysql-test/suite/sys_vars/r/log_slow_queries_basic.result: Updated result file mysql-test/suite/sys_vars/r/lower_case_file_system_basic.result: Updated result file mysql-test/suite/sys_vars/r/lower_case_table_names_basic.result: Updated result file mysql-test/suite/sys_vars/r/max_join_size_basic.result: Updated result file mysql-test/suite/sys_vars/r/old_alter_table_basic.result: Updated result file mysql-test/suite/sys_vars/r/optimizer_switch_basic.result: Updated result file mysql-test/suite/sys_vars/r/profiling_basic.result: Updated result file mysql-test/suite/sys_vars/r/profiling_history_size_basic.result: Updated result file mysql-test/suite/sys_vars/r/pseudo_thread_id_basic.result: Updated result file mysql-test/suite/sys_vars/r/rand_seed1_basic.result: Updated result file mysql-test/suite/sys_vars/r/rand_seed2_basic.result: Updated result file mysql-test/suite/sys_vars/r/relay_log_recovery_basic.result: Updated result file mysql-test/suite/sys_vars/r/rpl_semi_sync_master_enabled_basic.result: New result file mysql-test/suite/sys_vars/r/rpl_semi_sync_master_timeout_basic.result: New result file mysql-test/suite/sys_vars/r/rpl_semi_sync_master_trace_level_basic.result: New result file mysql-test/suite/sys_vars/r/rpl_semi_sync_master_wait_no_slave_basic.result: New result file mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_enabled_basic.result: New result file mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_trace_level_basic.result: New result file mysql-test/suite/sys_vars/r/sql_log_update_basic.result: Added check for variable values in I_S tables mysql-test/suite/sys_vars/r/sql_max_join_size_basic.result: Added check for variable values in I_S tables mysql-test/suite/sys_vars/r/sql_select_limit_basic.result: Added check for variable values in I_S tables mysql-test/suite/sys_vars/r/thread_cache_size_basic.result: Added check for variable values in I_S tables mysql-test/suite/sys_vars/t/all_vars-master.opt: Added opt file for all_vars.test mysql-test/suite/sys_vars/t/all_vars.test: Modified test to check for semisync plugin and innodb mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_adaptive_hash_index_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_change_buffering_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_file_format_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_io_capacity_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_old_blocks_pct_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_old_blocks_time_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_read_ahead_threshold_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_read_io_threads_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_replication_delay_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_spin_wait_delay_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_stats_on_metadata_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_stats_sample_pages_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_strict_mode_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_thread_sleep_delay_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_use_sys_malloc_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_version_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/innodb_write_io_threads_basic.test: Added test for innodb variable mysql-test/suite/sys_vars/t/last_insert_id_basic.test: Added check for variable values in I_S tables mysql-test/suite/sys_vars/t/lc_messages_basic.test: Added check for variable values in I_S tables mysql-test/suite/sys_vars/t/log_slow_queries_basic.test: Added check for variable values in I_S tables mysql-test/suite/sys_vars/t/lower_case_file_system_basic.test: Added check for variable values in I_S tables mysql-test/suite/sys_vars/t/lower_case_table_names_basic.test: Added check for variable values in I_S tables mysql-test/suite/sys_vars/t/max_join_size_basic.test: Added check for variable values in I_S tables mysql-test/suite/sys_vars/t/old_alter_table_basic.test: Added check for variable values in I_S tables mysql-test/suite/sys_vars/t/optimizer_switch_basic.test: Added check for variable values in I_S tables mysql-test/suite/sys_vars/t/profiling_basic.test: Added check for variable values in I_S tables mysql-test/suite/sys_vars/t/profiling_history_size_basic.test: Added check for variable values in I_S tables mysql-test/suite/sys_vars/t/pseudo_thread_id_basic.test: Added check for variable values in I_S tables and check for session variable being numeric mysql-test/suite/sys_vars/t/rand_seed1_basic.test: Added check for variable values in I_S tables mysql-test/suite/sys_vars/t/rand_seed2_basic.test: Added check for variable values in I_S tables mysql-test/suite/sys_vars/t/relay_log_recovery_basic.test: Added check for variable values in I_S tables mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic-master.opt: Added option file for semisync variable test mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic.test: Added test file for semisync variable mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic-master.opt: Added option file for semisync variable test mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic.test: Added test file for semisync variable mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic-master.opt: Added option file for semisync variable test mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic.test: Added test file for semisync variable mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic-master.opt: Added option file for semisync variable test mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic.test: Added test file for semisync variable mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic-master.opt: Added option file for semisync variable test mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic.test: Added test file for semisync variable mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic-master.opt: Added option file for semisync variable test mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic.test: Added test file for semisync variable mysql-test/suite/sys_vars/t/sql_log_update_basic.test: Added check for variable values in I_S tables and check for ON/OFF value changes mysql-test/suite/sys_vars/t/sql_max_join_size_basic.test: Added check for variable values in I_S tables mysql-test/suite/sys_vars/t/sql_select_limit_basic.test: Added check for variable values in I_S tables mysql-test/suite/sys_vars/t/thread_cache_size_basic.test: Added check for variable values in I_S tables |
|||
1ad5bb1a69 |
WL#4738 streamline/simplify @@variable creation process
Bug#16565 mysqld --help --verbose does not order variablesBug#20413 sql_slave_skip_counter is not shown in show variables Bug#20415 Output of mysqld --help --verbose is incomplete Bug#25430 variable not found in SELECT @@global.ft_max_word_len; Bug#32902 plugin variables don't know their names Bug#34599 MySQLD Option and Variable Reference need to be consistent in formatting! Bug#34829 No default value for variable and setting default does not raise error Bug#34834 ? Is accepted as a valid sql mode Bug#34878 Few variables have default value according to documentation but error occurs Bug#34883 ft_boolean_syntax cant be assigned from user variable to global var. Bug#37187 `INFORMATION_SCHEMA`.`GLOBAL_VARIABLES`: inconsistent status Bug#40988 log_output_basic.test succeeded though syntactically false. Bug#41010 enum-style command-line options are not honoured (maria.maria-recover fails) Bug#42103 Setting key_buffer_size to a negative value may lead to very large allocations Bug#44691 Some plugins configured as MYSQL_PLUGIN_MANDATORY in can be disabled Bug#44797 plugins w/o command-line options have no disabling option in --help Bug#46314 string system variables don't support expressions Bug#46470 sys_vars.max_binlog_cache_size_basic_32 is broken Bug#46586 When using the plugin interface the type "set" for options caused a crash. Bug#47212 Crash in DBUG_PRINT in mysqltest.cc when trying to print octal number Bug#48758 mysqltest crashes on sys_vars.collation_server_basic in gcov builds Bug#49417 some complaints about mysqld --help --verbose output Bug#49540 DEFAULT value of binlog_format isn't the default value Bug#49640 ambiguous option '--skip-skip-myisam' (double skip prefix) Bug#49644 init_connect and \0 Bug#49645 init_slave and multi-byte characters Bug#49646 mysql --show-warnings crashes when server dies CMakeLists.txt: Bug#44691 Some plugins configured as MYSQL_PLUGIN_MANDATORY in can be disabled client/mysql.cc: don't crash with --show-warnings when mysqld dies config/ac-macros/plugins.m4: Bug#44691 Some plugins configured as MYSQL_PLUGIN_MANDATORY in can be disabled include/my_getopt.h: comments include/my_pthread.h: fix double #define mysql-test/mysql-test-run.pl: run sys_vars suite by default properly recognize envirinment variables (e.g. MTR_MAX_SAVE_CORE) set to 0 escape gdb command line arguments mysql-test/suite/sys_vars/r/rpl_init_slave_func.result: init_slave+utf8 bug mysql-test/suite/sys_vars/t/rpl_init_slave_func.test: init_slave+utf8 bug mysys/my_getopt.c: Bug#34599 MySQLD Option and Variable Reference need to be consistent in formatting! Bug#46586 When using the plugin interface the type "set" for options caused a crash. Bug#49640 ambiguous option '--skip-skip-myisam' (double skip prefix) mysys/typelib.c: support for flagset sql/ha_ndbcluster.cc: backport from telco tree sql/item_func.cc: Bug#49644 init_connect and \0 Bug#49645 init_slave and multi-byte characters sql/sql_builtin.cc.in: Bug#44691 Some plugins configured as MYSQL_PLUGIN_MANDATORY in can be disabled sql/sql_plugin.cc: Bug#44691 Some plugins configured as MYSQL_PLUGIN_MANDATORY in can be disabled Bug#32902 plugin variables don't know their names Bug#44797 plugins w/o command-line options have no disabling option in --help sql/sys_vars.cc: all server variables are defined here storage/myisam/ft_parser.c: remove unnecessary updates of param->quot storage/myisam/ha_myisam.cc: myisam_* variables belong here strings/my_vsnprintf.c: %o and %llx unittest/mysys/my_vsnprintf-t.c: %o and %llx tests vio/viosocket.c: bugfix: fix @@wait_timeout to work with socket timeouts (vs. alarm thread) |