Skip to content

Commit e60c8c8

Browse files
author
Staale Smedseng
committed
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.
1 parent b8cd172 commit e60c8c8

18 files changed

+176
-239
lines changed

mysql-test/r/func_compress.result

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ Warnings:
6868
Error 1259 ZLIB: Input data corrupted
6969
Error 1256 Uncompressed data size too large; the maximum size is 1048576 (probably, length of uncompressed data was corrupted)
7070
drop table t1;
71-
set @@max_allowed_packet=1048576*100;
71+
set @@global.max_allowed_packet=1048576*100;
7272
select compress(repeat('aaaaaaaaaa', IF(XXX, 10, 10000000))) is null;
7373
compress(repeat('aaaaaaaaaa', IF(XXX, 10, 10000000))) is null
7474
0

mysql-test/r/max_allowed_packet_basic.result

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@ SET @start_global_value = @@global.max_allowed_packet;
22
SELECT @start_global_value;
33
@start_global_value
44
1048576
5-
SET @start_session_value = @@session.max_allowed_packet;
6-
SELECT @start_session_value;
7-
@start_session_value
8-
1048576
5+
SET @@global.max_allowed_packet = DEFAULT;
96
'#--------------------FN_DYNVARS_070_01-------------------------#'
107
SET @@global.max_allowed_packet = 1000;
118
Warnings:
@@ -15,7 +12,9 @@ SELECT @@global.max_allowed_packet;
1512
@@global.max_allowed_packet
1613
1048576
1714
SET @@session.max_allowed_packet = 20000;
15+
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
1816
SET @@session.max_allowed_packet = DEFAULT;
17+
ERROR 42000: Variable 'max_allowed_packet' doesn't have a default value
1918
SELECT @@session.max_allowed_packet;
2019
@@session.max_allowed_packet
2120
1048576
@@ -24,10 +23,6 @@ SET @@global.max_allowed_packet = DEFAULT;
2423
SELECT @@global.max_allowed_packet = 1048576;
2524
@@global.max_allowed_packet = 1048576
2625
1
27-
SET @@session.max_allowed_packet = DEFAULT;
28-
SELECT @@session.max_allowed_packet = 1048576;
29-
@@session.max_allowed_packet = 1048576
30-
1
3126
'#--------------------FN_DYNVARS_070_03-------------------------#'
3227
SET @@global.max_allowed_packet = 1024;
3328
SELECT @@global.max_allowed_packet;
@@ -48,25 +43,30 @@ SELECT @@global.max_allowed_packet;
4843
1073740800
4944
'#--------------------FN_DYNVARS_070_04-------------------------#'
5045
SET @@session.max_allowed_packet = 1024;
46+
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
5147
SELECT @@session.max_allowed_packet;
5248
@@session.max_allowed_packet
53-
1024
49+
1048576
5450
SET @@session.max_allowed_packet = 1025;
51+
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
5552
SELECT @@session.max_allowed_packet;
5653
@@session.max_allowed_packet
57-
1024
54+
1048576
5855
SET @@session.max_allowed_packet = 65535;
56+
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
5957
SELECT @@session.max_allowed_packet;
6058
@@session.max_allowed_packet
61-
64512
59+
1048576
6260
SET @@session.max_allowed_packet = 1073741824;
61+
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
6362
SELECT @@session.max_allowed_packet;
6463
@@session.max_allowed_packet
65-
1073741824
64+
1048576
6665
SET @@session.max_allowed_packet = 1073741823;
66+
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
6767
SELECT @@session.max_allowed_packet;
6868
@@session.max_allowed_packet
69-
1073740800
69+
1048576
7070
'#------------------FN_DYNVARS_070_05-----------------------#'
7171
SET @@global.max_allowed_packet = 0;
7272
Warnings:
@@ -103,37 +103,33 @@ SELECT @@global.max_allowed_packet;
103103
@@global.max_allowed_packet
104104
1073741824
105105
SET @@session.max_allowed_packet = 0;
106-
Warnings:
107-
Warning 1292 Truncated incorrect max_allowed_packet value: '0'
106+
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
108107
SELECT @@session.max_allowed_packet;
109108
@@session.max_allowed_packet
110-
1024
109+
1048576
111110
SET @@session.max_allowed_packet = 1023;
112-
Warnings:
113-
Warning 1292 Truncated incorrect max_allowed_packet value: '1023'
111+
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
114112
SELECT @@session.max_allowed_packet;
115113
@@session.max_allowed_packet
116-
1024
114+
1048576
117115
SET @@session.max_allowed_packet = -2;
118-
Warnings:
119-
Warning 1292 Truncated incorrect max_allowed_packet value: '0'
116+
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
120117
SELECT @@session.max_allowed_packet;
121118
@@session.max_allowed_packet
122-
1024
119+
1048576
123120
SET @@session.max_allowed_packet = 65530.34.;
124121
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
125122
SET @@session.max_allowed_packet = 10737418241;
126-
Warnings:
127-
Warning 1292 Truncated incorrect max_allowed_packet value: '10737418241'
123+
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
128124
SELECT @@session.max_allowed_packet;
129125
@@session.max_allowed_packet
130-
1073741824
126+
1048576
131127
'Bug # 34837: Errors are not coming on assigning invalid values to variable';
132128
SET @@session.max_allowed_packet = test;
133129
ERROR 42000: Incorrect argument type to variable 'max_allowed_packet'
134130
SELECT @@session.max_allowed_packet;
135131
@@session.max_allowed_packet
136-
1073741824
132+
1048576
137133
'#------------------FN_DYNVARS_070_06-----------------------#'
138134
SELECT @@global.max_allowed_packet = VARIABLE_VALUE
139135
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -166,6 +162,7 @@ SELECT @@max_allowed_packet = @@global.max_allowed_packet;
166162
0
167163
'#---------------------FN_DYNVARS_070_10----------------------#'
168164
SET @@max_allowed_packet = 100000;
165+
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
169166
SELECT @@max_allowed_packet = @@local.max_allowed_packet;
170167
@@max_allowed_packet = @@local.max_allowed_packet
171168
1
@@ -174,9 +171,10 @@ SELECT @@local.max_allowed_packet = @@session.max_allowed_packet;
174171
1
175172
'#---------------------FN_DYNVARS_070_11----------------------#'
176173
SET max_allowed_packet = 1024;
174+
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
177175
SELECT @@max_allowed_packet;
178176
@@max_allowed_packet
179-
1024
177+
1048576
180178
SELECT local.max_allowed_packet;
181179
ERROR 42S02: Unknown table 'local' in field list
182180
SELECT session.max_allowed_packet;
@@ -187,7 +185,6 @@ SET @@global.max_allowed_packet = @start_global_value;
187185
SELECT @@global.max_allowed_packet;
188186
@@global.max_allowed_packet
189187
1048576
190-
SET @@session.max_allowed_packet = @start_session_value;
191188
SELECT @@session.max_allowed_packet;
192189
@@session.max_allowed_packet
193190
1048576

mysql-test/r/max_allowed_packet_func.result

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,15 @@ name BLOB
1010
'#--------------------FN_DYNVARS_070_01-------------------------#'
1111
## Setting value of max_allowed packet and net_buffer_length to 1024 ##
1212
SET @@session.max_allowed_packet = 1024;
13-
SET @@session.net_buffer_length = 1024;
13+
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
1414
SELECT @@session.max_allowed_packet;
1515
@@session.max_allowed_packet
16-
1024
16+
1048576
17+
SET @@session.net_buffer_length = 1024;
18+
ERROR HY000: SESSION variable 'net_buffer_length' is read-only. Use SET GLOBAL to assign the value
1719
SELECT @@session.net_buffer_length;
1820
@@session.net_buffer_length
19-
1024
20-
## Inserting and fetching data of length greater than 1024 ##
21-
INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
22-
SELECT length("aaaaaasssssssssssdddddddfffffgggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk") as len;
23-
len
24-
1470
25-
## Verifying record in table t1 ##
26-
SELECT * from t1;
27-
id name
28-
1 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
29-
'Bug#35381: Error is not coming on inserting and fetching data of length'
30-
'greater than max_allowed_packet size at session level';
21+
16384
3122
'#--------------------FN_DYNVARS_070_02-------------------------#'
3223
## Setting value of max_allowed packet and net_buffer_length to 1024 ##
3324
SET @@global.max_allowed_packet = 1024;

mysql-test/r/net_buffer_length_basic.result

Lines changed: 5 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
SET @start_global_value = @@global.net_buffer_length;
2-
SET @start_session_value = @@session.net_buffer_length;
2+
SET @@global.net_buffer_length = DEFAULT;
33
'#--------------------FN_DYNVARS_109_01-------------------------#'
44
SET @@global.net_buffer_length = 10000;
55
SET @@global.net_buffer_length = DEFAULT;
66
SELECT @@global.net_buffer_length;
77
@@global.net_buffer_length
88
16384
99
SET @@session.net_buffer_length = 20000;
10+
ERROR HY000: SESSION variable 'net_buffer_length' is read-only. Use SET GLOBAL to assign the value
1011
SET @@session.net_buffer_length = DEFAULT;
12+
ERROR 42000: Variable 'net_buffer_length' doesn't have a default value
1113
SELECT @@session.net_buffer_length;
1214
@@session.net_buffer_length
1315
16384
@@ -16,10 +18,6 @@ SET @@global.net_buffer_length = DEFAULT;
1618
SELECT @@global.net_buffer_length = 16384;
1719
@@global.net_buffer_length = 16384
1820
1
19-
SET @@session.net_buffer_length = DEFAULT;
20-
SELECT @@session.net_buffer_length = 16384;
21-
@@session.net_buffer_length = 16384
22-
1
2321
'#--------------------FN_DYNVARS_109_03-------------------------#'
2422
SET @@global.net_buffer_length = 1024;
2523
SELECT @@global.net_buffer_length;
@@ -43,27 +41,6 @@ SELECT @@global.net_buffer_length;
4341
64512
4442
'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
4543
'#--------------------FN_DYNVARS_109_04-------------------------#'
46-
SET @@session.net_buffer_length = 1024;
47-
SELECT @@session.net_buffer_length;
48-
@@session.net_buffer_length
49-
1024
50-
SET @@session.net_buffer_length = 1025;
51-
SELECT @@session.net_buffer_length;
52-
@@session.net_buffer_length
53-
1024
54-
SET @@session.net_buffer_length = 1048576;
55-
SELECT @@session.net_buffer_length;
56-
@@session.net_buffer_length
57-
1048576
58-
SET @@session.net_buffer_length = 1048575;
59-
SELECT @@session.net_buffer_length;
60-
@@session.net_buffer_length
61-
1047552
62-
SET @@session.net_buffer_length = 65535;
63-
SELECT @@session.net_buffer_length;
64-
@@session.net_buffer_length
65-
64512
66-
'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
6744
'#------------------FN_DYNVARS_109_05-----------------------#'
6845
SET @@global.net_buffer_length = 0;
6946
Warnings:
@@ -105,42 +82,12 @@ ERROR 42000: Incorrect argument type to variable 'net_buffer_length'
10582
SELECT @@global.net_buffer_length;
10683
@@global.net_buffer_length
10784
1048576
108-
SET @@session.net_buffer_length = 0;
109-
Warnings:
110-
Warning 1292 Truncated incorrect net_buffer_length value: '0'
111-
SELECT @@session.net_buffer_length;
112-
@@session.net_buffer_length
113-
1024
114-
SET @@session.net_buffer_length = -2;
115-
Warnings:
116-
Warning 1292 Truncated incorrect net_buffer_length value: '0'
117-
SELECT @@session.net_buffer_length;
118-
@@session.net_buffer_length
119-
1024
120-
SET @@session.net_buffer_length = 1048577;
121-
Warnings:
122-
Warning 1292 Truncated incorrect net_buffer_length value: '1048577'
123-
SELECT @@session.net_buffer_length;
124-
@@session.net_buffer_length
125-
1048576
126-
SET @@session.net_buffer_length = 1048576002;
127-
Warnings:
128-
Warning 1292 Truncated incorrect net_buffer_length value: '1048576002'
129-
SELECT @@session.net_buffer_length;
130-
@@session.net_buffer_length
131-
1048576
132-
SET @@session.net_buffer_length = 65530.34.;
133-
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
134-
SET @@session.net_buffer_length = 65550;
135-
SELECT @@session.net_buffer_length;
136-
@@session.net_buffer_length
137-
65536
13885
'Bug # 34837: Errors are not coming on assigning invalid values to variable';
13986
SET @@session.net_buffer_length = test;
14087
ERROR 42000: Incorrect argument type to variable 'net_buffer_length'
14188
SELECT @@session.net_buffer_length;
14289
@@session.net_buffer_length
143-
65536
90+
16384
14491
'#------------------FN_DYNVARS_109_06-----------------------#'
14592
SELECT @@global.net_buffer_length = VARIABLE_VALUE
14693
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
@@ -172,23 +119,14 @@ SELECT @@net_buffer_length = @@global.net_buffer_length;
172119
@@net_buffer_length = @@global.net_buffer_length
173120
0
174121
'#---------------------FN_DYNVARS_109_10----------------------#'
175-
SET @@net_buffer_length = 100000;
176-
SELECT @@net_buffer_length = @@local.net_buffer_length;
177-
@@net_buffer_length = @@local.net_buffer_length
178-
1
179-
SELECT @@local.net_buffer_length = @@session.net_buffer_length;
180-
@@local.net_buffer_length = @@session.net_buffer_length
181-
1
182122
'#---------------------FN_DYNVARS_109_11----------------------#'
183-
SET net_buffer_length = 1024;
184123
SELECT @@net_buffer_length;
185124
@@net_buffer_length
186-
1024
125+
16384
187126
SELECT local.net_buffer_length;
188127
ERROR 42S02: Unknown table 'local' in field list
189128
SELECT session.net_buffer_length;
190129
ERROR 42S02: Unknown table 'session' in field list
191130
SELECT net_buffer_length = @@session.net_buffer_length;
192131
ERROR 42S22: Unknown column 'net_buffer_length' in 'field list'
193132
SET @@global.net_buffer_length = @start_global_value;
194-
SET @@session.net_buffer_length = @start_session_value;

0 commit comments

Comments
 (0)