mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +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:
@ -38,9 +38,13 @@
|
||||
SET @start_global_value = @@global.net_buffer_length;
|
||||
# Due to differences in results of linux and windows
|
||||
#SELECT @start_global_value;
|
||||
SET @start_session_value = @@session.net_buffer_length;
|
||||
#SELECT @start_session_value;
|
||||
|
||||
# give a known value to @@session.net_buffer_length by assigning to
|
||||
# @@global and setting up a new connection (for deterministic result
|
||||
# file diffing)
|
||||
SET @@global.net_buffer_length = DEFAULT;
|
||||
connect(con1,localhost,root,,);
|
||||
connection con1;
|
||||
|
||||
--echo '#--------------------FN_DYNVARS_109_01-------------------------#'
|
||||
#################################################################
|
||||
@ -51,7 +55,9 @@ SET @@global.net_buffer_length = 10000;
|
||||
SET @@global.net_buffer_length = DEFAULT;
|
||||
SELECT @@global.net_buffer_length;
|
||||
|
||||
--Error ER_VARIABLE_IS_READONLY
|
||||
SET @@session.net_buffer_length = 20000;
|
||||
--Error ER_NO_DEFAULT
|
||||
SET @@session.net_buffer_length = DEFAULT;
|
||||
SELECT @@session.net_buffer_length;
|
||||
|
||||
@ -64,9 +70,6 @@ SELECT @@session.net_buffer_length;
|
||||
SET @@global.net_buffer_length = DEFAULT;
|
||||
SELECT @@global.net_buffer_length = 16384;
|
||||
|
||||
SET @@session.net_buffer_length = DEFAULT;
|
||||
SELECT @@session.net_buffer_length = 16384;
|
||||
|
||||
|
||||
--echo '#--------------------FN_DYNVARS_109_03-------------------------#'
|
||||
###########################################################################
|
||||
@ -91,17 +94,7 @@ SELECT @@global.net_buffer_length;
|
||||
# Change the value of net_buffer_length to a valid value for SESSION Scope #
|
||||
############################################################################
|
||||
|
||||
SET @@session.net_buffer_length = 1024;
|
||||
SELECT @@session.net_buffer_length;
|
||||
SET @@session.net_buffer_length = 1025;
|
||||
SELECT @@session.net_buffer_length;
|
||||
SET @@session.net_buffer_length = 1048576;
|
||||
SELECT @@session.net_buffer_length;
|
||||
SET @@session.net_buffer_length = 1048575;
|
||||
SELECT @@session.net_buffer_length;
|
||||
SET @@session.net_buffer_length = 65535;
|
||||
SELECT @@session.net_buffer_length;
|
||||
--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
|
||||
# Bug#22891: SESSION net_buffer_length is now read-only; assignments skipped
|
||||
|
||||
|
||||
--echo '#------------------FN_DYNVARS_109_05-----------------------#'
|
||||
@ -126,18 +119,8 @@ SELECT @@global.net_buffer_length;
|
||||
SET @@global.net_buffer_length = test;
|
||||
SELECT @@global.net_buffer_length;
|
||||
|
||||
SET @@session.net_buffer_length = 0;
|
||||
SELECT @@session.net_buffer_length;
|
||||
SET @@session.net_buffer_length = -2;
|
||||
SELECT @@session.net_buffer_length;
|
||||
SET @@session.net_buffer_length = 1048577;
|
||||
SELECT @@session.net_buffer_length;
|
||||
SET @@session.net_buffer_length = 1048576002;
|
||||
SELECT @@session.net_buffer_length;
|
||||
--Error ER_PARSE_ERROR
|
||||
SET @@session.net_buffer_length = 65530.34.;
|
||||
SET @@session.net_buffer_length = 65550;
|
||||
SELECT @@session.net_buffer_length;
|
||||
# Bug#22891: SESSION net_buffer_length is now read-only; assignments skipped
|
||||
|
||||
--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
|
||||
|
||||
--Error ER_WRONG_TYPE_FOR_VAR
|
||||
@ -190,9 +173,7 @@ SELECT @@net_buffer_length = @@global.net_buffer_length;
|
||||
# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable #
|
||||
########################################################################################################
|
||||
|
||||
SET @@net_buffer_length = 100000;
|
||||
SELECT @@net_buffer_length = @@local.net_buffer_length;
|
||||
SELECT @@local.net_buffer_length = @@session.net_buffer_length;
|
||||
# Bug#22891: SESSION net_buffer_length is now read-only; assignments skipped
|
||||
|
||||
|
||||
--echo '#---------------------FN_DYNVARS_109_11----------------------#'
|
||||
@ -200,7 +181,7 @@ SELECT @@local.net_buffer_length = @@session.net_buffer_length;
|
||||
# Check if net_buffer_length can be accessed with and without @@ sign #
|
||||
############################################################################
|
||||
|
||||
SET net_buffer_length = 1024;
|
||||
# Bug#22891: SESSION net_buffer_length is now read-only; assignments skipped
|
||||
SELECT @@net_buffer_length;
|
||||
--Error ER_UNKNOWN_TABLE
|
||||
SELECT local.net_buffer_length;
|
||||
@ -214,11 +195,11 @@ SELECT net_buffer_length = @@session.net_buffer_length;
|
||||
# Restore initial value #
|
||||
####################################
|
||||
|
||||
connection default;
|
||||
|
||||
SET @@global.net_buffer_length = @start_global_value;
|
||||
# Due to differences in results of linux and windows
|
||||
#SELECT @@global.net_buffer_length;
|
||||
SET @@session.net_buffer_length = @start_session_value;
|
||||
#SELECT @@session.net_buffer_length;
|
||||
|
||||
|
||||
######################################################
|
||||
|
Reference in New Issue
Block a user