#At file:///home/ss156133/z/b22891/
2705 staale.smedseng@stripped 2008-09-03
A fix for Bug#22891 "session level max_allowed_packet can be set
but is ignored".
This patch makes @@session.max_allowed_packed read-only as suggested
in the bug report. The user will have to use SET GLOBAL (and reconnect)
to alter the value of max_allowed_packet. A new error code
ER_SESSION_COUNTERPART_IS_READONLY is introduced.
The implementation introduces a new class sys_var_max_allowed_packet,
inherited from sys_var_thd. Tests are modified accordingly.
modified:
mysql-test/r/func_compress.result
mysql-test/r/max_allowed_packet_basic.result
mysql-test/r/max_allowed_packet_func.result
mysql-test/r/packet.result
mysql-test/r/union.result
mysql-test/r/variables.result
mysql-test/t/func_compress.test
mysql-test/t/innodb_bug34300.test
mysql-test/t/max_allowed_packet_basic.test
mysql-test/t/max_allowed_packet_func.test
mysql-test/t/packet.test
mysql-test/t/union.test
mysql-test/t/variables.test
sql/set_var.cc
sql/set_var.h
sql/share/errmsg.txt
per-file messages:
mysql-test/r/func_compress.result
Modified tests to honor error code for read-only variable max_allowed_packet,
and using SET GLOBAL and reconnecting where appropriate.
mysql-test/r/max_allowed_packet_basic.result
Modified tests to honor error code for read-only variable max_allowed_packet,
and using SET GLOBAL and reconnecting where appropriate.
mysql-test/r/max_allowed_packet_func.result
Modified tests to honor error code for read-only variable max_allowed_packet,
and using SET GLOBAL and reconnecting where appropriate.
mysql-test/r/packet.result
Modified tests to honor error code for read-only variable max_allowed_packet,
and using SET GLOBAL and reconnecting where appropriate.
mysql-test/r/union.result
Modified tests to honor error code for read-only variable max_allowed_packet,
and using SET GLOBAL and reconnecting where appropriate.
mysql-test/r/variables.result
Modified tests to honor error code for read-only variable max_allowed_packet,
and using SET GLOBAL and reconnecting where appropriate.
mysql-test/t/func_compress.test
Modified tests to honor error code for read-only variable max_allowed_packet,
and using SET GLOBAL and reconnecting where appropriate.
mysql-test/t/innodb_bug34300.test
Modified tests to honor error code for read-only variable max_allowed_packet,
and using SET GLOBAL and reconnecting where appropriate.
mysql-test/t/max_allowed_packet_basic.test
Modified tests to honor error code for read-only variable max_allowed_packet,
and using SET GLOBAL and reconnecting where appropriate.
mysql-test/t/max_allowed_packet_func.test
Modified tests to honor error code for read-only variable max_allowed_packet,
and using SET GLOBAL and reconnecting where appropriate.
mysql-test/t/packet.test
Modified tests to honor error code for read-only variable max_allowed_packet,
and using SET GLOBAL and reconnecting where appropriate.
mysql-test/t/union.test
Modified tests to honor error code for read-only variable max_allowed_packet,
and using SET GLOBAL and reconnecting where appropriate.
mysql-test/t/variables.test
Modified tests to honor error code for read-only variable max_allowed_packet,
and using SET GLOBAL and reconnecting where appropriate.
sql/set_var.cc
Added new class sys_var_max_allowed_packed inherited from sys_var_thd to
implement the read-only aspect of max_allowed_packet.
sql/set_var.h
Added new class sys_var_max_allowed_packed inherited from sys_var_thd to
implement the read-only aspect of max_allowed_packet.
sql/share/errmsg.txt
New error message indicating read-only variable.
=== modified file 'mysql-test/r/func_compress.result'
--- a/mysql-test/r/func_compress.result 2008-07-14 12:49:19 +0000
+++ b/mysql-test/r/func_compress.result 2008-09-03 13:15:00 +0000
@@ -68,7 +68,7 @@ Warnings:
Warning 1259 ZLIB: Input data corrupted
Warning 1256 Uncompressed data size too large; the maximum size is 1048576 (probably,
length of uncompressed data was corrupted)
drop table t1;
-set @@max_allowed_packet=1048576*100;
+set global max_allowed_packet=1048576*100;
select compress(repeat('aaaaaaaaaa', IF(XXX, 10, 10000000))) is null;
compress(repeat('aaaaaaaaaa', IF(XXX, 10, 10000000))) is null
0
=== modified file 'mysql-test/r/max_allowed_packet_basic.result'
--- a/mysql-test/r/max_allowed_packet_basic.result 2008-04-10 13:14:28 +0000
+++ b/mysql-test/r/max_allowed_packet_basic.result 2008-09-03 13:15:00 +0000
@@ -15,7 +15,7 @@ SELECT @@global.max_allowed_packet;
@@global.max_allowed_packet
1048576
SET @@session.max_allowed_packet = 20000;
-SET @@session.max_allowed_packet = DEFAULT;
+ERROR HY000: Session variable max_allowed_packet is a constant. Use SET GLOBAL to assign
the global value
SELECT @@session.max_allowed_packet;
@@session.max_allowed_packet
1048576
@@ -24,10 +24,6 @@ SET @@global.max_allowed_packet = DEFAUL
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 +44,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 a constant. Use SET GLOBAL to assign
the global 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 a constant. Use SET GLOBAL to assign
the global 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 a constant. Use SET GLOBAL to assign
the global 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 a constant. Use SET GLOBAL to assign
the global 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 a constant. Use SET GLOBAL to assign
the global 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 +104,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 a constant. Use SET GLOBAL to assign
the global 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 a constant. Use SET GLOBAL to assign
the global 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 a constant. Use SET GLOBAL to assign
the global 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 a constant. Use SET GLOBAL to assign
the global 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 +163,7 @@ SELECT @@max_allowed_packet = @@global.m
0
'#---------------------FN_DYNVARS_070_10----------------------#'
SET @@max_allowed_packet = 100000;
+ERROR HY000: Session variable max_allowed_packet is a constant. Use SET GLOBAL to assign
the global value
SELECT @@max_allowed_packet = @@local.max_allowed_packet;
@@max_allowed_packet = @@local.max_allowed_packet
1
@@ -174,9 +172,10 @@ SELECT @@local.max_allowed_packet = @@se
1
'#---------------------FN_DYNVARS_070_11----------------------#'
SET max_allowed_packet = 1024;
+ERROR HY000: Session variable max_allowed_packet is a constant. Use SET GLOBAL to assign
the global 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 +186,6 @@ SET @@global.max_allowed_packet = @start
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
=== modified file 'mysql-test/r/max_allowed_packet_func.result'
--- a/mysql-test/r/max_allowed_packet_func.result 2008-04-18 09:38:41 +0000
+++ b/mysql-test/r/max_allowed_packet_func.result 2008-09-03 13:15:00 +0000
@@ -10,24 +10,7 @@ name BLOB
'#--------------------FN_DYNVARS_070_01-------------------------#'
## Setting value of max_allowed packet and net_buffer_length to 1024 ##
SET @@session.max_allowed_packet = 1024;
-SET @@session.net_buffer_length = 1024;
-SELECT @@session.max_allowed_packet;
-@@session.max_allowed_packet
-1024
-SELECT @@session.net_buffer_length;
-@@session.net_buffer_length
-1024
-## Inserting and fetching data of length greater than 1024 ##
-INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg,
askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj!
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
-SELECT length("aaaaaasssssssssssdddddddfffffgggg,
askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj!
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk")
as len;
-len
-1470
-## Verifying record in table t1 ##
-SELECT * from t1;
-id name
-1 aaassssssssddddddddffffffgggggggg,
askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj!
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
-'Bug#35381: Error is not coming on inserting and fetching data of length'
-'greater than max_allowed_packet size at session level';
+ERROR HY000: Session variable max_allowed_packet is a constant. Use SET GLOBAL to assign
the global value
'#--------------------FN_DYNVARS_070_02-------------------------#'
## Setting value of max_allowed packet and net_buffer_length to 1024 ##
SET @@global.max_allowed_packet = 1024;
=== modified file 'mysql-test/r/packet.result'
--- a/mysql-test/r/packet.result 2007-11-30 05:32:04 +0000
+++ b/mysql-test/r/packet.result 2008-09-03 13:15:00 +0000
@@ -1,35 +1,27 @@
set global max_allowed_packet=100;
Warnings:
Warning 1292 Truncated incorrect max_allowed_packet value: '100'
-set max_allowed_packet=100;
-Warnings:
-Warning 1292 Truncated incorrect max_allowed_packet value: '100'
set global net_buffer_length=100;
Warnings:
Warning 1292 Truncated incorrect net_buffer_length value: '100'
-set net_buffer_length=100;
-Warnings:
-Warning 1292 Truncated incorrect net_buffer_length value: '100'
SELECT
length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
len
1024
select repeat('a',2000);
repeat('a',2000)
-NULL
-Warnings:
-Warning 1301 Result of repeat() was larger than max_allowed_packet (1024) - truncated
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!
aaaaaaaaaaaaaaaaaaaaaaaa
select @@net_buffer_length, @@max_allowed_packet;
@@net_buffer_length @@max_allowed_packet
1024 1024
SELECT
length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
ERROR 08S01: Got a packet bigger than 'max_allowed_packet' bytes
set global max_allowed_packet=default;
-set max_allowed_packet=default;
set global net_buffer_length=default;
-set net_buffer_length=default;
SELECT
length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
as len;
len
100
select length(repeat('a',2000));
length(repeat('a',2000))
-2000
+NULL
+Warnings:
+Warning 1301 Result of repeat() was larger than max_allowed_packet (1024) - truncated
=== modified file 'mysql-test/r/union.result'
--- a/mysql-test/r/union.result 2008-05-13 15:15:40 +0000
+++ b/mysql-test/r/union.result 2008-09-03 13:15:00 +0000
@@ -1301,10 +1301,10 @@ t3 CREATE TABLE `t3` (
`left(a,100000000)` longtext
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop tables t1,t2,t3;
-SELECT @tmp_max:= @@max_allowed_packet;
-@tmp_max:= @@max_allowed_packet
+SELECT @tmp_max:= @@global.max_allowed_packet;
+@tmp_max:= @@global.max_allowed_packet
1048576
-SET max_allowed_packet=25000000;
+SET @@global.max_allowed_packet=25000000;
CREATE TABLE t1 (a mediumtext);
CREATE TABLE t2 (b varchar(20));
INSERT INTO t1 VALUES ('a');
@@ -1342,7 +1342,7 @@ t3 CREATE TABLE `t3` (
`a` varbinary(510) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLES t1,t2,t3;
-SET max_allowed_packet:= @tmp_max;
+SET @@global.max_allowed_packet:= @tmp_max;
create table t1 ( id int not null auto_increment, primary key (id), col1 int);
insert into t1 (col1) values (2),(3),(4),(5),(6);
select 99 union all select id from t1 order by 1;
=== modified file 'mysql-test/r/variables.result'
--- a/mysql-test/r/variables.result 2008-05-29 12:56:51 +0000
+++ b/mysql-test/r/variables.result 2008-09-03 13:15:00 +0000
@@ -461,7 +461,7 @@ select @@long_query_time;
@@long_query_time
100.000001
set low_priority_updates=1;
-set max_allowed_packet=100;
+set global max_allowed_packet=100;
Warnings:
Warning 1292 Truncated incorrect max_allowed_packet value: '100'
set global max_binlog_cache_size=100;
=== modified file 'mysql-test/t/func_compress.test'
--- a/mysql-test/t/func_compress.test 2006-10-13 14:09:22 +0000
+++ b/mysql-test/t/func_compress.test 2008-09-03 13:15:00 +0000
@@ -43,8 +43,11 @@ drop table t1;
# note that when LOW_MEMORY is set the "test" below is meaningless
#
-set @@max_allowed_packet=1048576*100;
+set global max_allowed_packet=1048576*100;
--replace_result "''" XXX "'1'" XXX
+
+# reconnect to make the new max packet size take effect
+--connect (newconn, localhost, root,,)
eval select compress(repeat('aaaaaaaaaa', IF('$LOW_MEMORY', 10, 10000000))) is null;
#
=== modified file 'mysql-test/t/innodb_bug34300.test'
--- a/mysql-test/t/innodb_bug34300.test 2008-06-12 00:08:07 +0000
+++ b/mysql-test/t/innodb_bug34300.test 2008-09-03 13:15:00 +0000
@@ -8,7 +8,9 @@
-- disable_query_log
-- disable_result_log
-SET @@max_allowed_packet=16777216;
+# set packet size and reconnect
+SET global max_allowed_packet=16777216;
+--connect (newconn, localhost, root,,)
DROP TABLE IF EXISTS bug34300;
CREATE TABLE bug34300 (
=== modified file 'mysql-test/t/max_allowed_packet_basic.test'
--- a/mysql-test/t/max_allowed_packet_basic.test 2008-04-10 13:14:28 +0000
+++ b/mysql-test/t/max_allowed_packet_basic.test 2008-09-03 13:15:00 +0000
@@ -49,8 +49,8 @@ SET @@global.max_allowed_packet = 1000;
SET @@global.max_allowed_packet = DEFAULT;
SELECT @@global.max_allowed_packet;
+--Error ER_SESSION_COUNTERPART_IS_READONLY
SET @@session.max_allowed_packet = 20000;
-SET @@session.max_allowed_packet = DEFAULT;
SELECT @@session.max_allowed_packet;
@@ -62,9 +62,6 @@ SELECT @@session.max_allowed_packet;
SET @@global.max_allowed_packet = DEFAULT;
SELECT @@global.max_allowed_packet = 1048576;
-SET @@session.max_allowed_packet = DEFAULT;
-SELECT @@session.max_allowed_packet = 1048576;
-
--echo '#--------------------FN_DYNVARS_070_03-------------------------#'
############################################################################
@@ -86,14 +83,19 @@ SELECT @@global.max_allowed_packet;
# Change the value of max_allowed_packet to a valid value for SESSION Scope #
#############################################################################
+--Error ER_SESSION_COUNTERPART_IS_READONLY
SET @@session.max_allowed_packet = 1024;
SELECT @@session.max_allowed_packet;
+--Error ER_SESSION_COUNTERPART_IS_READONLY
SET @@session.max_allowed_packet = 1025;
SELECT @@session.max_allowed_packet;
+--Error ER_SESSION_COUNTERPART_IS_READONLY
SET @@session.max_allowed_packet = 65535;
SELECT @@session.max_allowed_packet;
+--Error ER_SESSION_COUNTERPART_IS_READONLY
SET @@session.max_allowed_packet = 1073741824;
SELECT @@session.max_allowed_packet;
+--Error ER_SESSION_COUNTERPART_IS_READONLY
SET @@session.max_allowed_packet = 1073741823;
SELECT @@session.max_allowed_packet;
@@ -118,14 +120,18 @@ SELECT @@global.max_allowed_packet;
SET @@global.max_allowed_packet = test;
SELECT @@global.max_allowed_packet;
+--Error ER_SESSION_COUNTERPART_IS_READONLY
SET @@session.max_allowed_packet = 0;
SELECT @@session.max_allowed_packet;
+--Error ER_SESSION_COUNTERPART_IS_READONLY
SET @@session.max_allowed_packet = 1023;
SELECT @@session.max_allowed_packet;
+--Error ER_SESSION_COUNTERPART_IS_READONLY
SET @@session.max_allowed_packet = -2;
SELECT @@session.max_allowed_packet;
--Error ER_PARSE_ERROR
SET @@session.max_allowed_packet = 65530.34.;
+--Error ER_SESSION_COUNTERPART_IS_READONLY
SET @@session.max_allowed_packet = 10737418241;
SELECT @@session.max_allowed_packet;
--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
@@ -140,11 +146,11 @@ SELECT @@session.max_allowed_packet;
# Check if the value in GLOBAL Table matches value in variable #
####################################################################
-
SELECT @@global.max_allowed_packet = VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME='max_allowed_packet';
+
--echo '#------------------FN_DYNVARS_070_07-----------------------#'
####################################################################
# Check if the value in SESSION Table matches value in variable #
@@ -180,6 +186,7 @@ SELECT @@max_allowed_packet = @@global.m
# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same
session variable #
########################################################################################################
+--Error ER_SESSION_COUNTERPART_IS_READONLY
SET @@max_allowed_packet = 100000;
SELECT @@max_allowed_packet = @@local.max_allowed_packet;
SELECT @@local.max_allowed_packet = @@session.max_allowed_packet;
@@ -190,6 +197,7 @@ SELECT @@local.max_allowed_packet = @@se
# Check if max_allowed_packet can be accessed with and without @@ sign #
#############################################################################
+--Error ER_SESSION_COUNTERPART_IS_READONLY
SET max_allowed_packet = 1024;
SELECT @@max_allowed_packet;
--Error ER_UNKNOWN_TABLE
@@ -206,7 +214,6 @@ SELECT max_allowed_packet = @@session.ma
SET @@global.max_allowed_packet = @start_global_value;
SELECT @@global.max_allowed_packet;
-SET @@session.max_allowed_packet = @start_session_value;
SELECT @@session.max_allowed_packet;
=== modified file 'mysql-test/t/max_allowed_packet_func.test'
--- a/mysql-test/t/max_allowed_packet_func.test 2008-04-23 09:36:17 +0000
+++ b/mysql-test/t/max_allowed_packet_func.test 2008-09-03 13:15:00 +0000
@@ -43,26 +43,14 @@ name BLOB
--echo '#--------------------FN_DYNVARS_070_01-------------------------#'
###############################################################################
-# Setting initial value of max_allowed_packet to 1024 at session level and
-# verifying its behavior after inserting data greater than 1024 bytes
+# Setting initial value of max_allowed_packet to 1024 at session level
+# should result in an error (session variable is readonly)
###############################################################################
--echo ## Setting value of max_allowed packet and net_buffer_length to 1024 ##
+--error ER_SESSION_COUNTERPART_IS_READONLY
SET @@session.max_allowed_packet = 1024;
-SET @@session.net_buffer_length = 1024;
-SELECT @@session.max_allowed_packet;
-SELECT @@session.net_buffer_length;
-
---echo ## Inserting and fetching data of length greater than 1024 ##
-INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg,
askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj!
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
-
-SELECT length("aaaaaasssssssssssdddddddfffffgggg,
askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj!
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk")
as len;
-
---echo ## Verifying record in table t1 ##
-SELECT * from t1;
---echo 'Bug#35381: Error is not coming on inserting and fetching data of length'
---echo 'greater than max_allowed_packet size at session level';
--echo '#--------------------FN_DYNVARS_070_02-------------------------#'
###############################################################################
=== modified file 'mysql-test/t/packet.test'
--- a/mysql-test/t/packet.test 2005-08-04 00:38:55 +0000
+++ b/mysql-test/t/packet.test 2008-09-03 13:15:00 +0000
@@ -8,30 +8,24 @@
# Check protocol handling
#
-connect (con1,localhost,root,,);
-
-connection con1;
+# setting values below minimum threshold of 1024 will cause truncating
set global max_allowed_packet=100;
-set max_allowed_packet=100;
set global net_buffer_length=100;
-set net_buffer_length=100;
-# Have to be > 1024 as min value of net_buffer_length is 1024
+
+# is not yet in effect
SELECT
length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
-# Should return NULL as 2000 is bigger than max_allowed_packet
select repeat('a',2000);
#
-# Connection 2 should get error for too big packets
+# Connection 1 should get error for too big packets
#
-connect (con2,localhost,root,,);
-connection con2;
+connect (con1,localhost,root,,);
+connection con1;
select @@net_buffer_length, @@max_allowed_packet;
--error 1153
SELECT
length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
set global max_allowed_packet=default;
-set max_allowed_packet=default;
set global net_buffer_length=default;
-set net_buffer_length=default;
SELECT
length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
as len;
select length(repeat('a',2000));
=== modified file 'mysql-test/t/union.test'
--- a/mysql-test/t/union.test 2008-05-13 15:15:40 +0000
+++ b/mysql-test/t/union.test 2008-09-03 13:15:00 +0000
@@ -802,8 +802,10 @@ drop tables t1,t2,t3;
# exceeds mediumtext maximum length
#
-SELECT @tmp_max:= @@max_allowed_packet;
-SET max_allowed_packet=25000000;
+SELECT @tmp_max:= @@global.max_allowed_packet;
+SET @@global.max_allowed_packet=25000000;
+# switching connection to allow the new max_allowed_packet take effect
+--connect (newconn, localhost, root,,)
CREATE TABLE t1 (a mediumtext);
CREATE TABLE t2 (b varchar(20));
INSERT INTO t1 VALUES ('a');
@@ -825,7 +827,9 @@ INSERT INTO t1 VALUES ('a');
CREATE TABLE t3 SELECT REPEAT(a,2) AS a FROM t1 UNION SELECT b FROM t2;
SHOW CREATE TABLE t3;
DROP TABLES t1,t2,t3;
-SET max_allowed_packet:= @tmp_max;
+--connection default
+SET @@global.max_allowed_packet:= @tmp_max;
+--disconnect newconn
#
# Bug #10032 Bug in parsing UNION with ORDER BY when one node does not use FROM
=== modified file 'mysql-test/t/variables.test'
--- a/mysql-test/t/variables.test 2008-06-17 20:04:19 +0000
+++ b/mysql-test/t/variables.test 2008-09-03 13:15:00 +0000
@@ -274,7 +274,7 @@ select @@long_query_time;
set long_query_time=100.000001;
select @@long_query_time;
set low_priority_updates=1;
-set max_allowed_packet=100;
+set global max_allowed_packet=100;
set global max_binlog_cache_size=100;
set global max_binlog_size=100;
set global max_connect_errors=100;
=== modified file 'sql/set_var.cc'
--- a/sql/set_var.cc 2008-08-08 01:33:43 +0000
+++ b/sql/set_var.cc 2008-09-03 13:15:00 +0000
@@ -294,8 +294,16 @@ static sys_var_thd_bool sys_sql_low_prio
&SV::low_priority_updates,
fix_low_priority_updates);
#endif
-static sys_var_thd_ulong sys_max_allowed_packet(&vars, "max_allowed_packet",
+/*@ss static sys_var_thd_ulong sys_max_allowed_packet(&vars, "max_allowed_packet",
&SV::max_allowed_packet);
+static uchar *get_max_allowed_packet(THD *thd)
+{
+ return (uchar*) &thd->variables.max_allowed_packet;
+}
+static sys_var_readonly sys_max_allowed_packet(&vars, "max_allowed_packet",
OPT_SESSION,
+ SHOW_LONG, get_max_allowed_packet); */
+static sys_var_max_allowed_packet sys_max_allowed_packet(&vars,
"max_allowed_packet");
+
static sys_var_long_ptr sys_max_binlog_cache_size(&vars, "max_binlog_cache_size",
&max_binlog_cache_size);
static sys_var_long_ptr sys_max_binlog_size(&vars, "max_binlog_size",
@@ -2835,6 +2843,72 @@ uchar *sys_var_max_user_conn::value_ptr(
}
+bool sys_var_max_allowed_packet::check(THD *thd, set_var *var)
+{
+ if (var->type != OPT_GLOBAL)
+ {
+ /*
+ The session value of max_allowed_packet is read-only.
+ */
+ my_error(ER_SESSION_COUNTERPART_IS_READONLY, MYF(0), name);
+ return TRUE;
+ }
+
+ return get_unsigned(thd, var);
+}
+
+bool sys_var_max_allowed_packet::update(THD *thd, set_var *var)
+{
+ if (var->type != OPT_GLOBAL)
+ {
+ // the session value of max_allowed_packet is read-only
+ my_error(ER_SESSION_COUNTERPART_IS_READONLY, MYF(0), name);
+ return TRUE;
+ }
+
+ ulonglong tmp= var->save_result.ulonglong_value;
+
+ /* Don't use bigger value than given with --maximum-variable-name=.. */
+ if ((ulong) tmp > max_system_variables.max_allowed_packet)
+ {
+ throw_bounds_warning(thd, TRUE, TRUE, name, (longlong) tmp);
+ tmp= max_system_variables.max_allowed_packet;
+ }
+
+ if (option_limits)
+ tmp= (ulong) fix_unsigned(thd, tmp, option_limits);
+#if SIZEOF_LONG < SIZEOF_LONG_LONG
+ else if (tmp > ULONG_MAX)
+ {
+ tmp= ULONG_MAX;
+ throw_bounds_warning(thd, TRUE, TRUE, name, (longlong)
var->save_result.ulonglong_value);
+ }
+#endif
+
+ global_system_variables.max_allowed_packet= (ulong) tmp;
+ return FALSE;
+}
+
+
+void sys_var_max_allowed_packet::set_default(THD *thd, enum_var_type type)
+{
+ DBUG_ASSERT(type == OPT_GLOBAL);
+ my_bool not_used;
+ global_system_variables.max_allowed_packet=
+ (ulong) getopt_ull_limit_value((ulong) option_limits->def_value,
+ option_limits, ¬_used);
+}
+
+
+uchar *sys_var_max_allowed_packet::value_ptr(THD *thd, enum_var_type type,
+ LEX_STRING *base)
+{
+ if (type != OPT_GLOBAL)
+ return (uchar*) &(thd->variables.max_allowed_packet);
+ return (uchar*) &(global_system_variables.max_allowed_packet);
+}
+
+
bool sys_var_thd_lc_time_names::check(THD *thd, set_var *var)
{
MY_LOCALE *locale_match;
=== modified file 'sql/set_var.h'
--- a/sql/set_var.h 2008-07-09 07:12:43 +0000
+++ b/sql/set_var.h 2008-09-03 13:15:00 +0000
@@ -1058,6 +1058,24 @@ public:
};
+class sys_var_max_allowed_packet : public sys_var_thd
+{
+public:
+ sys_var_max_allowed_packet(sys_var_chain *chain, const char *name_arg):
+ sys_var_thd(name_arg)
+ { chain_sys_var(chain); }
+ bool check(THD *thd, set_var *var);
+ bool update(THD *thd, set_var *var);
+ bool check_default(enum_var_type type)
+ {
+ return type != OPT_GLOBAL || !option_limits;
+ }
+ void set_default(THD *thd, enum_var_type type);
+ SHOW_TYPE show_type() { return SHOW_INT; }
+ uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
+};
+
+
class sys_var_microseconds :public sys_var_thd
{
ulonglong SV::*offset;
=== modified file 'sql/share/errmsg.txt'
--- a/sql/share/errmsg.txt 2008-08-06 14:39:03 +0000
+++ b/sql/share/errmsg.txt 2008-09-03 13:15:00 +0000
@@ -6372,3 +6372,5 @@ ER_BACKUP_OBTAIN_NAME_LOCK_FAILED
eng "Restore failed to obtain the name locks on the tables."
ER_BACKUP_RELEASE_NAME_LOCK_FAILED
eng "Restore failed to release the name locks on the tables."
+ER_SESSION_COUNTERPART_IS_READONLY
+ eng "Session variable %s is a constant. Use SET GLOBAL to assign the global value"