From: Date: September 3 2008 3:15pm Subject: bzr commit into mysql-6.0-runtime branch (staale.smedseng:2705) Bug#22891 List-Archive: http://lists.mysql.com/commits/53160 X-Bug: 22891 Message-Id: <200809031315.m83DFARj025066@dm-norway-02.uk.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit #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"