mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-24920: Merge "old" SQL variable to "old_mode" sql variable
Analysis: There are 2 server variables- "old_mode" and "old". "old" is no longer needed as "old_mode" has replaced it (however still used in some places in the code). "old_mode" and "old" has same purpose- emulate behavior from previous MariaDB versions. So they can be merged to avoid confusion. Fix: Deprecate "old" variable and create another mode for @@old_mode to mimic behavior of previous "old" variable. Create specific modes for specifix task that --old sql variable was doing earlier and use the new modes instead.
This commit is contained in:
@@ -683,7 +683,8 @@ The following specify which files/extra groups are read (specified before remain
|
||||
--old-mode=name Used to emulate old behavior from earlier MariaDB or
|
||||
MySQL versions. Any combination of:
|
||||
NO_DUP_KEY_WARNINGS_WITH_IGNORE, NO_PROGRESS_INFO,
|
||||
ZERO_DATE_TIME_CAST, UTF8_IS_UTF8MB3
|
||||
ZERO_DATE_TIME_CAST, UTF8_IS_UTF8MB3,
|
||||
IGNORE_INDEX_ONLY_FOR_JOIN, COMPAT_5_1_CHECKSUM
|
||||
--old-passwords Use old password encryption method (needed for 4.0 and
|
||||
older clients)
|
||||
--old-style-user-limits
|
||||
|
@@ -17,7 +17,11 @@ select * from information_schema.session_variables where variable_name='old';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
OLD OFF
|
||||
set global old=1;
|
||||
Warnings:
|
||||
Warning 1287 '@@old' is deprecated and will be removed in a future release. Please use '@@old_mode' instead
|
||||
set session old=1;
|
||||
Warnings:
|
||||
Warning 1287 '@@old' is deprecated and will be removed in a future release. Please use '@@old_mode' instead
|
||||
select @@global.old;
|
||||
@@global.old
|
||||
1
|
||||
@@ -25,3 +29,5 @@ select @@session.old;
|
||||
@@session.old
|
||||
1
|
||||
set @@global.old=DEFAULT;
|
||||
Warnings:
|
||||
Warning 1287 '@@old' is deprecated and will be removed in a future release. Please use '@@old_mode' instead
|
||||
|
@@ -114,8 +114,8 @@ SET @@global.old_mode = 4;
|
||||
SELECT @@global.old_mode;
|
||||
@@global.old_mode
|
||||
ZERO_DATE_TIME_CAST
|
||||
SET @@global.old_mode = 16;
|
||||
ERROR 42000: Variable 'old_mode' can't be set to the value of '16'
|
||||
SET @@global.old_mode = 64;
|
||||
ERROR 42000: Variable 'old_mode' can't be set to the value of '64'
|
||||
SELECT @@global.old_mode;
|
||||
@@global.old_mode
|
||||
ZERO_DATE_TIME_CAST
|
||||
@@ -264,3 +264,42 @@ SET @@collation_database = @save_collation_database;
|
||||
#
|
||||
# End of 10.6 test
|
||||
#
|
||||
#
|
||||
# Beginning of 10.9 test
|
||||
#
|
||||
#
|
||||
# MDEV-24920: Merge "old" SQL variable to "old_mode" sql variable
|
||||
#
|
||||
# Checking that setting old will also set old_mode
|
||||
SELECT @@OLD_MODE;
|
||||
@@OLD_MODE
|
||||
UTF8_IS_UTF8MB3
|
||||
SET old= 1;
|
||||
Warnings:
|
||||
Warning 1287 '@@old' is deprecated and will be removed in a future release. Please use '@@old_mode' instead
|
||||
SELECT @@OLD_MODE;
|
||||
@@OLD_MODE
|
||||
NO_PROGRESS_INFO,UTF8_IS_UTF8MB3,IGNORE_INDEX_ONLY_FOR_JOIN,COMPAT_5_1_CHECKSUM
|
||||
SET old= DEFAULT;
|
||||
Warnings:
|
||||
Warning 1287 '@@old' is deprecated and will be removed in a future release. Please use '@@old_mode' instead
|
||||
SELECT @@OLD_MODE;
|
||||
@@OLD_MODE
|
||||
UTF8_IS_UTF8MB3
|
||||
# Checking that old_mode can be set independently as well
|
||||
SELECT @@OLD_MODE;
|
||||
@@OLD_MODE
|
||||
UTF8_IS_UTF8MB3
|
||||
SET @save_old_mode = @@OLD_MODE;
|
||||
SET @@OLD_MODE= IGNORE_INDEX_ONLY_FOR_JOIN;
|
||||
SELECT @@OLD_MODE;
|
||||
@@OLD_MODE
|
||||
IGNORE_INDEX_ONLY_FOR_JOIN
|
||||
SET @@OLD_MODE= COMPAT_5_1_CHECKSUM;
|
||||
SELECT @@OLD_MODE;
|
||||
@@OLD_MODE
|
||||
COMPAT_5_1_CHECKSUM
|
||||
SET @@OLD_MODE= @save_old_mode;
|
||||
#
|
||||
# End of 10.9 test
|
||||
#
|
||||
|
@@ -2219,7 +2219,7 @@ VARIABLE_COMMENT Used to emulate old behavior from earlier MariaDB or MySQL vers
|
||||
NUMERIC_MIN_VALUE NULL
|
||||
NUMERIC_MAX_VALUE NULL
|
||||
NUMERIC_BLOCK_SIZE NULL
|
||||
ENUM_VALUE_LIST NO_DUP_KEY_WARNINGS_WITH_IGNORE,NO_PROGRESS_INFO,ZERO_DATE_TIME_CAST,UTF8_IS_UTF8MB3
|
||||
ENUM_VALUE_LIST NO_DUP_KEY_WARNINGS_WITH_IGNORE,NO_PROGRESS_INFO,ZERO_DATE_TIME_CAST,UTF8_IS_UTF8MB3,IGNORE_INDEX_ONLY_FOR_JOIN,COMPAT_5_1_CHECKSUM
|
||||
READ_ONLY NO
|
||||
COMMAND_LINE_ARGUMENT REQUIRED
|
||||
VARIABLE_NAME OLD_PASSWORDS
|
||||
|
@@ -2389,7 +2389,7 @@ VARIABLE_COMMENT Used to emulate old behavior from earlier MariaDB or MySQL vers
|
||||
NUMERIC_MIN_VALUE NULL
|
||||
NUMERIC_MAX_VALUE NULL
|
||||
NUMERIC_BLOCK_SIZE NULL
|
||||
ENUM_VALUE_LIST NO_DUP_KEY_WARNINGS_WITH_IGNORE,NO_PROGRESS_INFO,ZERO_DATE_TIME_CAST,UTF8_IS_UTF8MB3
|
||||
ENUM_VALUE_LIST NO_DUP_KEY_WARNINGS_WITH_IGNORE,NO_PROGRESS_INFO,ZERO_DATE_TIME_CAST,UTF8_IS_UTF8MB3,IGNORE_INDEX_ONLY_FOR_JOIN,COMPAT_5_1_CHECKSUM
|
||||
READ_ONLY NO
|
||||
COMMAND_LINE_ARGUMENT REQUIRED
|
||||
VARIABLE_NAME OLD_PASSWORDS
|
||||
|
@@ -172,7 +172,7 @@ SET @@global.old_mode = 4;
|
||||
SELECT @@global.old_mode;
|
||||
|
||||
--Error ER_WRONG_VALUE_FOR_VAR
|
||||
SET @@global.old_mode = 16;
|
||||
SET @@global.old_mode = 64;
|
||||
SELECT @@global.old_mode;
|
||||
|
||||
# use of decimal values
|
||||
@@ -314,6 +314,39 @@ SET @@collation_database = @save_collation_database;
|
||||
--echo # End of 10.6 test
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # Beginning of 10.9 test
|
||||
--echo #
|
||||
--echo #
|
||||
--echo # MDEV-24920: Merge "old" SQL variable to "old_mode" sql variable
|
||||
--echo #
|
||||
|
||||
--echo # Checking that setting old will also set old_mode
|
||||
SELECT @@OLD_MODE;
|
||||
|
||||
SET old= 1;
|
||||
SELECT @@OLD_MODE;
|
||||
|
||||
SET old= DEFAULT;
|
||||
SELECT @@OLD_MODE;
|
||||
|
||||
--echo # Checking that old_mode can be set independently as well
|
||||
|
||||
SELECT @@OLD_MODE;
|
||||
|
||||
SET @save_old_mode = @@OLD_MODE;
|
||||
|
||||
SET @@OLD_MODE= IGNORE_INDEX_ONLY_FOR_JOIN;
|
||||
SELECT @@OLD_MODE;
|
||||
|
||||
SET @@OLD_MODE= COMPAT_5_1_CHECKSUM;
|
||||
SELECT @@OLD_MODE;
|
||||
|
||||
SET @@OLD_MODE= @save_old_mode;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.9 test
|
||||
--echo #
|
||||
################################################################
|
||||
# END OF old_mode TESTS #
|
||||
################################################################
|
||||
|
@@ -5810,7 +5810,8 @@ int handler::calculate_checksum()
|
||||
{
|
||||
Field *f= table->field[i];
|
||||
|
||||
if (! thd->variables.old_mode && f->is_real_null(0))
|
||||
if (! (thd->variables.old_behavior & OLD_MODE_COMPAT_5_1_CHECKSUM) &&
|
||||
f->is_real_null(0))
|
||||
{
|
||||
flush_checksum(&row_crc, &checksum_start, &checksum_length);
|
||||
continue;
|
||||
|
@@ -8490,6 +8490,14 @@ static int get_options(int *argc_ptr, char ***argv_ptr)
|
||||
between options, setting of multiple variables, etc.
|
||||
Do them here.
|
||||
*/
|
||||
|
||||
if (global_system_variables.old_mode)
|
||||
{
|
||||
global_system_variables.old_behavior|= (OLD_MODE_NO_PROGRESS_INFO |
|
||||
OLD_MODE_IGNORE_INDEX_ONLY_FOR_JOIN |
|
||||
OLD_MODE_COMPAT_5_1_CHECKSUM);
|
||||
}
|
||||
|
||||
if (global_system_variables.net_buffer_length >
|
||||
global_system_variables.max_allowed_packet)
|
||||
{
|
||||
|
@@ -192,6 +192,8 @@ enum enum_binlog_row_image {
|
||||
#define OLD_MODE_NO_PROGRESS_INFO (1 << 1)
|
||||
#define OLD_MODE_ZERO_DATE_TIME_CAST (1 << 2)
|
||||
#define OLD_MODE_UTF8_IS_UTF8MB3 (1 << 3)
|
||||
#define OLD_MODE_IGNORE_INDEX_ONLY_FOR_JOIN (1 << 4)
|
||||
#define OLD_MODE_COMPAT_5_1_CHECKSUM (1 << 5)
|
||||
|
||||
extern char internal_table_name[2];
|
||||
extern char empty_c_string[1];
|
||||
|
@@ -2921,8 +2921,7 @@ void mysqld_list_processes(THD *thd,const char *user, bool verbose)
|
||||
Item_empty_string(thd, "Info", arg.max_query_length),
|
||||
mem_root);
|
||||
field->set_maybe_null();;
|
||||
if (!thd->variables.old_mode &&
|
||||
!(thd->variables.old_behavior & OLD_MODE_NO_PROGRESS_INFO))
|
||||
if (!(thd->variables.old_behavior & OLD_MODE_NO_PROGRESS_INFO))
|
||||
{
|
||||
field_list.push_back(field= new (mem_root)
|
||||
Item_float(thd, "Progress", 0.0, 3, 7),
|
||||
@@ -2964,8 +2963,7 @@ void mysqld_list_processes(THD *thd,const char *user, bool verbose)
|
||||
thd_info->query_string.charset());
|
||||
else
|
||||
protocol->store_null();
|
||||
if (!thd->variables.old_mode &&
|
||||
!(thd->variables.old_behavior & OLD_MODE_NO_PROGRESS_INFO))
|
||||
if (!(thd->variables.old_behavior & OLD_MODE_NO_PROGRESS_INFO))
|
||||
protocol->store_double(thd_info->progress, 3);
|
||||
if (protocol->write())
|
||||
break; /* purecov: inspected */
|
||||
|
@@ -11901,8 +11901,10 @@ bool mysql_checksum_table(THD *thd, TABLE_LIST *tables,
|
||||
{
|
||||
/* Call ->checksum() if the table checksum matches 'old_mode' settings */
|
||||
if (!(check_opt->flags & T_EXTEND) &&
|
||||
(((t->file->ha_table_flags() & HA_HAS_OLD_CHECKSUM) && thd->variables.old_mode) ||
|
||||
((t->file->ha_table_flags() & HA_HAS_NEW_CHECKSUM) && !thd->variables.old_mode)))
|
||||
(((t->file->ha_table_flags() & HA_HAS_OLD_CHECKSUM) &&
|
||||
(thd->variables.old_behavior & OLD_MODE_COMPAT_5_1_CHECKSUM)) ||
|
||||
((t->file->ha_table_flags() & HA_HAS_NEW_CHECKSUM) &&
|
||||
!(thd->variables.old_behavior & OLD_MODE_COMPAT_5_1_CHECKSUM))))
|
||||
{
|
||||
if (t->file->info(HA_STATUS_VARIABLE) || t->file->stats.checksum_null)
|
||||
protocol->store_null();
|
||||
|
@@ -11757,7 +11757,8 @@ opt_outer:
|
||||
index_hint_clause:
|
||||
/* empty */
|
||||
{
|
||||
$$= thd->variables.old_mode ? INDEX_HINT_MASK_JOIN : INDEX_HINT_MASK_ALL;
|
||||
$$= (thd->variables.old_behavior & OLD_MODE_IGNORE_INDEX_ONLY_FOR_JOIN) ?
|
||||
INDEX_HINT_MASK_JOIN : INDEX_HINT_MASK_ALL;
|
||||
}
|
||||
| FOR_SYM JOIN_SYM { $$= INDEX_HINT_MASK_JOIN; }
|
||||
| FOR_SYM ORDER_SYM BY { $$= INDEX_HINT_MASK_ORDER; }
|
||||
|
@@ -2654,9 +2654,28 @@ static Sys_var_ulong Sys_net_retry_count(
|
||||
BLOCK_SIZE(1), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
|
||||
ON_UPDATE(fix_net_retry_count));
|
||||
|
||||
static bool set_old_mode (sys_var *self, THD *thd, enum_var_type type)
|
||||
{
|
||||
if (thd->variables.old_mode)
|
||||
{
|
||||
thd->variables.old_behavior|= (OLD_MODE_NO_PROGRESS_INFO |
|
||||
OLD_MODE_IGNORE_INDEX_ONLY_FOR_JOIN |
|
||||
OLD_MODE_COMPAT_5_1_CHECKSUM);
|
||||
}
|
||||
else
|
||||
{
|
||||
thd->variables.old_behavior&= ~(OLD_MODE_NO_PROGRESS_INFO|
|
||||
OLD_MODE_IGNORE_INDEX_ONLY_FOR_JOIN |
|
||||
OLD_MODE_COMPAT_5_1_CHECKSUM);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static Sys_var_mybool Sys_old_mode(
|
||||
"old", "Use compatible behavior from previous MariaDB version. See also --old-mode",
|
||||
SESSION_VAR(old_mode), CMD_LINE(OPT_ARG), DEFAULT(FALSE));
|
||||
SESSION_VAR(old_mode), CMD_LINE(OPT_ARG), DEFAULT(FALSE), 0, NOT_IN_BINLOG, ON_CHECK(0),
|
||||
ON_UPDATE(set_old_mode), DEPRECATED("'@@old_mode'"));
|
||||
|
||||
static const char *alter_algorithm_modes[]= {"DEFAULT", "COPY", "INPLACE",
|
||||
"NOCOPY", "INSTANT", NULL};
|
||||
@@ -3772,6 +3791,8 @@ static const char *old_mode_names[]=
|
||||
"NO_PROGRESS_INFO",
|
||||
"ZERO_DATE_TIME_CAST",
|
||||
"UTF8_IS_UTF8MB3",
|
||||
"IGNORE_INDEX_ONLY_FOR_JOIN",
|
||||
"COMPAT_5_1_CHECKSUM",
|
||||
0
|
||||
};
|
||||
|
||||
|
@@ -70,6 +70,8 @@ col3 double
|
||||
# Enable the old algorithm:
|
||||
set @tmp_old=@@old;
|
||||
set old=1;
|
||||
Warnings:
|
||||
Warning 1287 '@@old' is deprecated and will be removed in a future release. Please use '@@old_mode' instead
|
||||
checksum table t1;
|
||||
Table Checksum
|
||||
test.t1 0
|
||||
@@ -89,4 +91,6 @@ checksum table t1;
|
||||
Table Checksum
|
||||
test.t1 3183101003
|
||||
set old=@tmp_old;
|
||||
Warnings:
|
||||
Warning 1287 '@@old' is deprecated and will be removed in a future release. Please use '@@old_mode' instead
|
||||
drop table t1;
|
||||
|
Reference in New Issue
Block a user