mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
A fix for Bug#22891 "session level max_allowed_packet can be
set but is ignored". This patch makes @@session.max_allowed_packed and @@session.net_buffer_length read-only as suggested in the bug report. The user will have to use SET GLOBAL (and reconnect) to alter the session values of these variables. The error string ER_VARIABLE_IS_READONLY is introduced. Tests are modified accordingly. sql/set_var.cc: The class sys_var_thd_ulong_session_readonly is introduced as a specialization of sys_var_thd_ulong implementing a read-only session variable. The class overrides check() and check_default() to achieve the read-only property for the session part of the variable. sql/set_var.h: The class sys_var_thd_ulong_session_readonly is introduced as a specialization of sys_var_thd_ulong implementing a read-only session variable. The class overrides check() and check_default() to achieve the read-only property for the session part of the variable. sql/share/errmsg.txt: New error ER_VARIABLE_IS_READONLY.
This commit is contained in:
@ -2,10 +2,7 @@ SET @start_global_value = @@global.max_allowed_packet;
|
||||
SELECT @start_global_value;
|
||||
@start_global_value
|
||||
1048576
|
||||
SET @start_session_value = @@session.max_allowed_packet;
|
||||
SELECT @start_session_value;
|
||||
@start_session_value
|
||||
1048576
|
||||
SET @@global.max_allowed_packet = DEFAULT;
|
||||
'#--------------------FN_DYNVARS_070_01-------------------------#'
|
||||
SET @@global.max_allowed_packet = 1000;
|
||||
Warnings:
|
||||
@ -15,7 +12,9 @@ SELECT @@global.max_allowed_packet;
|
||||
@@global.max_allowed_packet
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = 20000;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SET @@session.max_allowed_packet = DEFAULT;
|
||||
ERROR 42000: Variable 'max_allowed_packet' doesn't have a default value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1048576
|
||||
@ -24,10 +23,6 @@ SET @@global.max_allowed_packet = DEFAULT;
|
||||
SELECT @@global.max_allowed_packet = 1048576;
|
||||
@@global.max_allowed_packet = 1048576
|
||||
1
|
||||
SET @@session.max_allowed_packet = DEFAULT;
|
||||
SELECT @@session.max_allowed_packet = 1048576;
|
||||
@@session.max_allowed_packet = 1048576
|
||||
1
|
||||
'#--------------------FN_DYNVARS_070_03-------------------------#'
|
||||
SET @@global.max_allowed_packet = 1024;
|
||||
SELECT @@global.max_allowed_packet;
|
||||
@ -48,25 +43,30 @@ SELECT @@global.max_allowed_packet;
|
||||
1073740800
|
||||
'#--------------------FN_DYNVARS_070_04-------------------------#'
|
||||
SET @@session.max_allowed_packet = 1024;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1024
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = 1025;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1024
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = 65535;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
64512
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = 1073741824;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1073741824
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = 1073741823;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1073740800
|
||||
1048576
|
||||
'#------------------FN_DYNVARS_070_05-----------------------#'
|
||||
SET @@global.max_allowed_packet = 0;
|
||||
Warnings:
|
||||
@ -103,37 +103,33 @@ SELECT @@global.max_allowed_packet;
|
||||
@@global.max_allowed_packet
|
||||
1073741824
|
||||
SET @@session.max_allowed_packet = 0;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect max_allowed_packet value: '0'
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1024
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = 1023;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect max_allowed_packet value: '1023'
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1024
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = -2;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect max_allowed_packet value: '0'
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1024
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = 65530.34.;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1
|
||||
SET @@session.max_allowed_packet = 10737418241;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect max_allowed_packet value: '10737418241'
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1073741824
|
||||
1048576
|
||||
'Bug # 34837: Errors are not coming on assigning invalid values to variable';
|
||||
SET @@session.max_allowed_packet = test;
|
||||
ERROR 42000: Incorrect argument type to variable 'max_allowed_packet'
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1073741824
|
||||
1048576
|
||||
'#------------------FN_DYNVARS_070_06-----------------------#'
|
||||
SELECT @@global.max_allowed_packet = VARIABLE_VALUE
|
||||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
|
||||
@ -166,6 +162,7 @@ SELECT @@max_allowed_packet = @@global.max_allowed_packet;
|
||||
0
|
||||
'#---------------------FN_DYNVARS_070_10----------------------#'
|
||||
SET @@max_allowed_packet = 100000;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@max_allowed_packet = @@local.max_allowed_packet;
|
||||
@@max_allowed_packet = @@local.max_allowed_packet
|
||||
1
|
||||
@ -174,9 +171,10 @@ SELECT @@local.max_allowed_packet = @@session.max_allowed_packet;
|
||||
1
|
||||
'#---------------------FN_DYNVARS_070_11----------------------#'
|
||||
SET max_allowed_packet = 1024;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@max_allowed_packet;
|
||||
@@max_allowed_packet
|
||||
1024
|
||||
1048576
|
||||
SELECT local.max_allowed_packet;
|
||||
ERROR 42S02: Unknown table 'local' in field list
|
||||
SELECT session.max_allowed_packet;
|
||||
@ -187,7 +185,6 @@ SET @@global.max_allowed_packet = @start_global_value;
|
||||
SELECT @@global.max_allowed_packet;
|
||||
@@global.max_allowed_packet
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = @start_session_value;
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1048576
|
||||
|
Reference in New Issue
Block a user