List:Commits« Previous MessageNext Message »
From:Staale Smedseng Date:November 20 2008 7:58am
Subject:bzr commit into mysql-6.0 branch (staale.smedseng:2937) Bug#22891
View as plain text  
#At file:///export/home/tmp/ss156133/z/b22891-60-bugteam/

 2937 Staale Smedseng	2008-11-20
      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.
modified:
  mysql-test/r/debug_sync.result
  mysql-test/r/func_compress.result
  mysql-test/r/locktrans_innodb.result
  mysql-test/r/locktrans_myisam.result
  mysql-test/r/max_allowed_packet_basic.result
  mysql-test/r/max_allowed_packet_func.result
  mysql-test/r/net_buffer_length_basic.result
  mysql-test/r/packet.result
  mysql-test/r/union.result
  mysql-test/r/variables.result
  mysql-test/suite/backup/r/backup_backupdir.result
  mysql-test/suite/rpl/r/rpl_locktrans_myisam.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/net_buffer_length_basic.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:
  sql/set_var.cc
    The class sys_var_thd_ulong_session_readonly is introduced as
    a specialization of sys_var_thd_ulong implementing a read-only
    session variable. The class overrides check() and
    check_default() to achieve the read-only property for the
    session part of the variable.
  sql/set_var.h
    The class sys_var_thd_ulong_session_readonly is introduced as
    a specialization of sys_var_thd_ulong implementing a read-only
    session variable. The class overrides check() and
    check_default() to achieve the read-only property for the
    session part of the variable.
  sql/share/errmsg.txt
    New error message ER_VARIABLE_IS_READONLY.
=== modified file 'mysql-test/r/debug_sync.result'
--- a/mysql-test/r/debug_sync.result	2008-10-24 15:37:11 +0000
+++ b/mysql-test/r/debug_sync.result	2008-11-20 07:57:58 +0000
@@ -137,7 +137,7 @@ Variable_name	Value
 debug_sync	ON - current signal: 'something'
 SET DEBUG_SYNC= 'now WAIT_FOR nothing TIMEOUT 0';
 Warnings:
-Warning	1726	debug sync point wait timed out
+Warning	1727	debug sync point wait timed out
 SET DEBUG_SYNC= 'now SIGNAL nothing';
 SHOW VARIABLES LIKE 'DEBUG_SYNC';
 Variable_name	Value

=== 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-11-20 07:57:58 +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/locktrans_innodb.result'
--- a/mysql-test/r/locktrans_innodb.result	2008-10-24 15:37:11 +0000
+++ b/mysql-test/r/locktrans_innodb.result	2008-11-20 07:57:58 +0000
@@ -95,12 +95,12 @@ ERROR 42000: You have an error in your S
 # Implicit lock method conversion due to mix in statement.
 LOCK TABLE t1 READ, t2 IN EXCLUSIVE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't2'
+Warning	1622	Converted to non-transactional lock on 't2'
 UNLOCK TABLES;
 # Lock t1 share (converted to read), t2 write.
 LOCK TABLE t1 IN SHARE MODE, t2 WRITE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't1'
+Warning	1622	Converted to non-transactional lock on 't1'
 # Show t1 is read locked, t2 write locked.
 INSERT INTO t1 SELECT * FROM t2;
 ERROR HY000: Table 't1' was locked with a READ lock and can't be updated
@@ -111,8 +111,8 @@ INSERT INTO t2 SELECT * FROM t1;
 # Lock t1 exclusive (converted to write), t2 share (converted to read).
 LOCK TABLE t1 IN EXCLUSIVE MODE, t2 IN SHARE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't1'
-Warning	1621	Converted to non-transactional lock on 't2'
+Warning	1622	Converted to non-transactional lock on 't1'
+Warning	1622	Converted to non-transactional lock on 't2'
 # Show t1 is write locked, t2 read locked.
 INSERT INTO t1 SELECT * FROM t2;
 INSERT INTO t2 SELECT * FROM t1;
@@ -136,8 +136,8 @@ ERROR HY000: Cannot convert to non-trans
 ## Error is reported on first table only. Show both errors:
 SHOW WARNINGS;
 Level	Code	Message
-Error	1622	Cannot convert to non-transactional lock in strict mode on 't1'
-Error	1622	Cannot convert to non-transactional lock in strict mode on 't2'
+Error	1623	Cannot convert to non-transactional lock in strict mode on 't1'
+Error	1623	Cannot convert to non-transactional lock in strict mode on 't2'
 UNLOCK TABLES;
 SET @@SQL_MODE= @wl3561_save_sql_mode;
 #
@@ -157,7 +157,7 @@ CREATE TABLE t4 (c4 INT) ENGINE= MyISAM;
 # Request a transactional lock, which is converted to non-transactional.
 LOCK TABLE t4 IN SHARE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't4'
+Warning	1622	Converted to non-transactional lock on 't4'
 # Try a conflict with the existing non-transactional lock.
 INSERT INTO t4 VALUES(444);
 ERROR HY000: Table 't4' was locked with a READ lock and can't be updated
@@ -174,8 +174,8 @@ CREATE VIEW v1 AS SELECT * FROM t3, t4 W
 # Request a share lock on the view, which is converted to read locks.
 LOCK TABLE v1 IN SHARE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't3'
-Warning	1621	Converted to non-transactional lock on 't4'
+Warning	1622	Converted to non-transactional lock on 't3'
+Warning	1622	Converted to non-transactional lock on 't4'
 # Show that read locks on the base tables prohibit writing ...
 INSERT INTO t3 SELECT * FROM t4;
 ERROR HY000: Table 't3' was locked with a READ lock and can't be updated
@@ -191,7 +191,7 @@ COUNT(*)
 ## Report conversion on view due to existing non-transactional locks.
 LOCK TABLE v1 IN EXCLUSIVE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 'v1'
+Warning	1622	Converted to non-transactional lock on 'v1'
 INSERT INTO t3 VALUES(333);
 INSERT INTO t4 VALUES(444);
 INSERT INTO t1 VALUES(111);
@@ -200,8 +200,8 @@ UNLOCK TABLES;
 ## Now report conversion on base table again.
 LOCK TABLE v1 IN EXCLUSIVE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't3'
-Warning	1621	Converted to non-transactional lock on 't4'
+Warning	1622	Converted to non-transactional lock on 't3'
+Warning	1622	Converted to non-transactional lock on 't4'
 INSERT INTO t3 VALUES(333);
 INSERT INTO t4 VALUES(444);
 INSERT INTO t1 VALUES(111);

=== modified file 'mysql-test/r/locktrans_myisam.result'
--- a/mysql-test/r/locktrans_myisam.result	2008-10-24 15:37:11 +0000
+++ b/mysql-test/r/locktrans_myisam.result	2008-11-20 07:57:58 +0000
@@ -21,8 +21,8 @@ UNLOCK TABLES;
 # Valid syntax for transactional locks.
 LOCK TABLE t1 IN SHARE MODE, t2 IN EXCLUSIVE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't1'
-Warning	1621	Converted to non-transactional lock on 't2'
+Warning	1622	Converted to non-transactional lock on 't1'
+Warning	1622	Converted to non-transactional lock on 't2'
 UNLOCK TABLES;
 #
 # Valid syntax for aliases with and without 'AS'.
@@ -30,19 +30,19 @@ LOCK TABLE t1 AS a1 READ, t2 a2 WRITE;
 UNLOCK TABLES;
 LOCK TABLE t1 AS a1 IN SHARE MODE, t2 a2 IN EXCLUSIVE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 'a1'
-Warning	1621	Converted to non-transactional lock on 'a2'
+Warning	1622	Converted to non-transactional lock on 'a1'
+Warning	1622	Converted to non-transactional lock on 'a2'
 UNLOCK TABLES;
 #
 # Transactional locks taken on a view.
 CREATE VIEW v1 AS SELECT * FROM t1, t2 WHERE t1.c1 = t2.c2;
 LOCK TABLE v1 IN SHARE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't1'
-Warning	1621	Converted to non-transactional lock on 't2'
+Warning	1622	Converted to non-transactional lock on 't1'
+Warning	1622	Converted to non-transactional lock on 't2'
 LOCK TABLE v1 IN EXCLUSIVE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 'v1'
+Warning	1622	Converted to non-transactional lock on 'v1'
 UNLOCK TABLES;
 DROP VIEW v1;
 #
@@ -95,12 +95,12 @@ ERROR 42000: You have an error in your S
 # Implicit lock method conversion due to mix in statement.
 LOCK TABLE t1 READ, t2 IN EXCLUSIVE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't2'
+Warning	1622	Converted to non-transactional lock on 't2'
 UNLOCK TABLES;
 # Lock t1 share (converted to read), t2 write.
 LOCK TABLE t1 IN SHARE MODE, t2 WRITE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't1'
+Warning	1622	Converted to non-transactional lock on 't1'
 # Show t1 is read locked, t2 write locked.
 INSERT INTO t1 SELECT * FROM t2;
 ERROR HY000: Table 't1' was locked with a READ lock and can't be updated
@@ -111,8 +111,8 @@ INSERT INTO t2 SELECT * FROM t1;
 # Lock t1 exclusive (converted to write), t2 share (converted to read).
 LOCK TABLE t1 IN EXCLUSIVE MODE, t2 IN SHARE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't1'
-Warning	1621	Converted to non-transactional lock on 't2'
+Warning	1622	Converted to non-transactional lock on 't1'
+Warning	1622	Converted to non-transactional lock on 't2'
 # Show t1 is write locked, t2 read locked.
 INSERT INTO t1 SELECT * FROM t2;
 INSERT INTO t2 SELECT * FROM t1;
@@ -136,8 +136,8 @@ ERROR HY000: Cannot convert to non-trans
 ## Error is reported on first table only. Show both errors:
 SHOW WARNINGS;
 Level	Code	Message
-Error	1622	Cannot convert to non-transactional lock in strict mode on 't1'
-Error	1622	Cannot convert to non-transactional lock in strict mode on 't2'
+Error	1623	Cannot convert to non-transactional lock in strict mode on 't1'
+Error	1623	Cannot convert to non-transactional lock in strict mode on 't2'
 UNLOCK TABLES;
 SET @@SQL_MODE= @wl3561_save_sql_mode;
 #
@@ -157,7 +157,7 @@ CREATE TABLE t4 (c4 INT) ENGINE= MyISAM;
 # Request a transactional lock, which is converted to non-transactional.
 LOCK TABLE t4 IN SHARE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't4'
+Warning	1622	Converted to non-transactional lock on 't4'
 # Try a conflict with the existing non-transactional lock.
 INSERT INTO t4 VALUES(444);
 ERROR HY000: Table 't4' was locked with a READ lock and can't be updated
@@ -174,8 +174,8 @@ CREATE VIEW v1 AS SELECT * FROM t3, t4 W
 # Request a share lock on the view, which is converted to read locks.
 LOCK TABLE v1 IN SHARE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't3'
-Warning	1621	Converted to non-transactional lock on 't4'
+Warning	1622	Converted to non-transactional lock on 't3'
+Warning	1622	Converted to non-transactional lock on 't4'
 # Show that read locks on the base tables prohibit writing ...
 INSERT INTO t3 SELECT * FROM t4;
 ERROR HY000: Table 't3' was locked with a READ lock and can't be updated
@@ -191,7 +191,7 @@ COUNT(*)
 ## Report conversion on view due to existing non-transactional locks.
 LOCK TABLE v1 IN EXCLUSIVE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 'v1'
+Warning	1622	Converted to non-transactional lock on 'v1'
 INSERT INTO t3 VALUES(333);
 INSERT INTO t4 VALUES(444);
 INSERT INTO t1 VALUES(111);
@@ -200,8 +200,8 @@ UNLOCK TABLES;
 ## Now report conversion on base table again.
 LOCK TABLE v1 IN EXCLUSIVE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't3'
-Warning	1621	Converted to non-transactional lock on 't4'
+Warning	1622	Converted to non-transactional lock on 't3'
+Warning	1622	Converted to non-transactional lock on 't4'
 INSERT INTO t3 VALUES(333);
 INSERT INTO t4 VALUES(444);
 INSERT INTO t1 VALUES(111);

=== 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-11-20 07:57:58 +0000
@@ -2,10 +2,7 @@ SET @start_global_value = @@global.max_a
 SELECT @start_global_value;
 @start_global_value
 1048576
-SET @start_session_value = @@session.max_allowed_packet;
-SELECT @start_session_value;
-@start_session_value
-1048576
+SET @@global.max_allowed_packet = DEFAULT;
 '#--------------------FN_DYNVARS_070_01-------------------------#'
 SET @@global.max_allowed_packet = 1000;
 Warnings:
@@ -15,7 +12,9 @@ SELECT @@global.max_allowed_packet;
 @@global.max_allowed_packet
 1048576
 SET @@session.max_allowed_packet = 20000;
+ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
 SET @@session.max_allowed_packet = DEFAULT;
+ERROR 42000: Variable 'max_allowed_packet' doesn't have a default value
 SELECT @@session.max_allowed_packet;
 @@session.max_allowed_packet
 1048576
@@ -24,10 +23,6 @@ SET @@global.max_allowed_packet = 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 +43,30 @@ SELECT @@global.max_allowed_packet;
 1073740800
 '#--------------------FN_DYNVARS_070_04-------------------------#'
 SET @@session.max_allowed_packet = 1024;
+ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
 SELECT @@session.max_allowed_packet;
 @@session.max_allowed_packet
-1024
+1048576
 SET @@session.max_allowed_packet = 1025;
+ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
 SELECT @@session.max_allowed_packet;
 @@session.max_allowed_packet
-1024
+1048576
 SET @@session.max_allowed_packet = 65535;
+ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
 SELECT @@session.max_allowed_packet;
 @@session.max_allowed_packet
-64512
+1048576
 SET @@session.max_allowed_packet = 1073741824;
+ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
 SELECT @@session.max_allowed_packet;
 @@session.max_allowed_packet
-1073741824
+1048576
 SET @@session.max_allowed_packet = 1073741823;
+ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
 SELECT @@session.max_allowed_packet;
 @@session.max_allowed_packet
-1073740800
+1048576
 '#------------------FN_DYNVARS_070_05-----------------------#'
 SET @@global.max_allowed_packet = 0;
 Warnings:
@@ -103,37 +103,33 @@ SELECT @@global.max_allowed_packet;
 @@global.max_allowed_packet
 1073741824
 SET @@session.max_allowed_packet = 0;
-Warnings:
-Warning	1292	Truncated incorrect max_allowed_packet value: '0'
+ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
 SELECT @@session.max_allowed_packet;
 @@session.max_allowed_packet
-1024
+1048576
 SET @@session.max_allowed_packet = 1023;
-Warnings:
-Warning	1292	Truncated incorrect max_allowed_packet value: '1023'
+ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
 SELECT @@session.max_allowed_packet;
 @@session.max_allowed_packet
-1024
+1048576
 SET @@session.max_allowed_packet = -2;
-Warnings:
-Warning	1292	Truncated incorrect max_allowed_packet value: '0'
+ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
 SELECT @@session.max_allowed_packet;
 @@session.max_allowed_packet
-1024
+1048576
 SET @@session.max_allowed_packet = 65530.34.;
 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1
 SET @@session.max_allowed_packet = 10737418241;
-Warnings:
-Warning	1292	Truncated incorrect max_allowed_packet value: '10737418241'
+ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
 SELECT @@session.max_allowed_packet;
 @@session.max_allowed_packet
-1073741824
+1048576
 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
 SET @@session.max_allowed_packet = test;
 ERROR 42000: Incorrect argument type to variable 'max_allowed_packet'
 SELECT @@session.max_allowed_packet;
 @@session.max_allowed_packet
-1073741824
+1048576
 '#------------------FN_DYNVARS_070_06-----------------------#'
 SELECT @@global.max_allowed_packet = VARIABLE_VALUE 
 FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES 
@@ -166,6 +162,7 @@ SELECT @@max_allowed_packet = @@global.m
 0
 '#---------------------FN_DYNVARS_070_10----------------------#'
 SET @@max_allowed_packet = 100000;
+ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
 SELECT @@max_allowed_packet = @@local.max_allowed_packet;
 @@max_allowed_packet = @@local.max_allowed_packet
 1
@@ -174,9 +171,10 @@ SELECT @@local.max_allowed_packet = @@se
 1
 '#---------------------FN_DYNVARS_070_11----------------------#'
 SET max_allowed_packet = 1024;
+ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
 SELECT @@max_allowed_packet;
 @@max_allowed_packet
-1024
+1048576
 SELECT local.max_allowed_packet;
 ERROR 42S02: Unknown table 'local' in field list
 SELECT session.max_allowed_packet;
@@ -187,7 +185,6 @@ SET @@global.max_allowed_packet = @start
 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-11-20 07:57:58 +0000
@@ -10,24 +10,15 @@ 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;
+ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
 SELECT @@session.max_allowed_packet;
 @@session.max_allowed_packet
-1024
+1048576
+SET @@session.net_buffer_length = 1024;
+ERROR HY000: SESSION variable 'net_buffer_length' is read-only. Use SET GLOBAL to assign the value
 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;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
 jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
-SELECT length("aaaaaasssssssssssdddddddfffffgggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
 jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk") as len;
-len
-1470
-## Verifying record in table t1 ##
-SELECT * from t1;
-id	name
-1	aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
 jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
-'Bug#35381: Error is not coming on inserting and fetching data of length'
-'greater than max_allowed_packet size at session level';
+16384
 '#--------------------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/net_buffer_length_basic.result'
--- a/mysql-test/r/net_buffer_length_basic.result	2008-04-10 13:14:28 +0000
+++ b/mysql-test/r/net_buffer_length_basic.result	2008-11-20 07:57:58 +0000
@@ -1,5 +1,5 @@
 SET @start_global_value = @@global.net_buffer_length;
-SET @start_session_value = @@session.net_buffer_length;
+SET @@global.net_buffer_length = DEFAULT;
 '#--------------------FN_DYNVARS_109_01-------------------------#'
 SET @@global.net_buffer_length = 10000;
 SET @@global.net_buffer_length = DEFAULT;
@@ -7,7 +7,9 @@ SELECT @@global.net_buffer_length;
 @@global.net_buffer_length
 16384
 SET @@session.net_buffer_length = 20000;
+ERROR HY000: SESSION variable 'net_buffer_length' is read-only. Use SET GLOBAL to assign the value
 SET @@session.net_buffer_length = DEFAULT;
+ERROR 42000: Variable 'net_buffer_length' doesn't have a default value
 SELECT @@session.net_buffer_length;
 @@session.net_buffer_length
 16384
@@ -16,10 +18,6 @@ SET @@global.net_buffer_length = DEFAULT
 SELECT @@global.net_buffer_length = 16384;
 @@global.net_buffer_length = 16384
 1
-SET @@session.net_buffer_length = DEFAULT;
-SELECT @@session.net_buffer_length = 16384;
-@@session.net_buffer_length = 16384
-1
 '#--------------------FN_DYNVARS_109_03-------------------------#'
 SET @@global.net_buffer_length = 1024;
 SELECT @@global.net_buffer_length;
@@ -43,27 +41,6 @@ SELECT @@global.net_buffer_length;
 64512
 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
 '#--------------------FN_DYNVARS_109_04-------------------------#'
-SET @@session.net_buffer_length = 1024;
-SELECT @@session.net_buffer_length;
-@@session.net_buffer_length
-1024
-SET @@session.net_buffer_length = 1025;
-SELECT @@session.net_buffer_length;
-@@session.net_buffer_length
-1024
-SET @@session.net_buffer_length = 1048576;
-SELECT @@session.net_buffer_length;
-@@session.net_buffer_length
-1048576
-SET @@session.net_buffer_length = 1048575;
-SELECT @@session.net_buffer_length;
-@@session.net_buffer_length
-1047552
-SET @@session.net_buffer_length = 65535;
-SELECT @@session.net_buffer_length;
-@@session.net_buffer_length
-64512
-'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
 '#------------------FN_DYNVARS_109_05-----------------------#'
 SET @@global.net_buffer_length = 0;
 Warnings:
@@ -105,42 +82,12 @@ ERROR 42000: Incorrect argument type to 
 SELECT @@global.net_buffer_length;
 @@global.net_buffer_length
 1048576
-SET @@session.net_buffer_length = 0;
-Warnings:
-Warning	1292	Truncated incorrect net_buffer_length value: '0'
-SELECT @@session.net_buffer_length;
-@@session.net_buffer_length
-1024
-SET @@session.net_buffer_length = -2;
-Warnings:
-Warning	1292	Truncated incorrect net_buffer_length value: '0'
-SELECT @@session.net_buffer_length;
-@@session.net_buffer_length
-1024
-SET @@session.net_buffer_length = 1048577;
-Warnings:
-Warning	1292	Truncated incorrect net_buffer_length value: '1048577'
-SELECT @@session.net_buffer_length;
-@@session.net_buffer_length
-1048576
-SET @@session.net_buffer_length = 1048576002;
-Warnings:
-Warning	1292	Truncated incorrect net_buffer_length value: '1048576002'
-SELECT @@session.net_buffer_length;
-@@session.net_buffer_length
-1048576
-SET @@session.net_buffer_length = 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.net_buffer_length = 65550;
-SELECT @@session.net_buffer_length;
-@@session.net_buffer_length
-65536
 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
 SET @@session.net_buffer_length = test;
 ERROR 42000: Incorrect argument type to variable 'net_buffer_length'
 SELECT @@session.net_buffer_length;
 @@session.net_buffer_length
-65536
+16384
 '#------------------FN_DYNVARS_109_06-----------------------#'
 SELECT @@global.net_buffer_length = VARIABLE_VALUE 
 FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES 
@@ -172,18 +119,10 @@ SELECT @@net_buffer_length = @@global.ne
 @@net_buffer_length = @@global.net_buffer_length
 0
 '#---------------------FN_DYNVARS_109_10----------------------#'
-SET @@net_buffer_length = 100000;
-SELECT @@net_buffer_length = @@local.net_buffer_length;
-@@net_buffer_length = @@local.net_buffer_length
-1
-SELECT @@local.net_buffer_length = @@session.net_buffer_length;
-@@local.net_buffer_length = @@session.net_buffer_length
-1
 '#---------------------FN_DYNVARS_109_11----------------------#'
-SET net_buffer_length = 1024;
 SELECT @@net_buffer_length;
 @@net_buffer_length
-1024
+16384
 SELECT local.net_buffer_length;
 ERROR 42S02: Unknown table 'local' in field list
 SELECT session.net_buffer_length;
@@ -191,4 +130,3 @@ ERROR 42S02: Unknown table 'session' in 
 SELECT net_buffer_length = @@session.net_buffer_length;
 ERROR 42S22: Unknown column 'net_buffer_length' in 'field list'
 SET @@global.net_buffer_length = @start_global_value;
-SET @@session.net_buffer_length = @start_session_value;

=== 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-11-20 07:57:58 +0000
@@ -1,32 +1,22 @@
 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("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") 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
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaa
 select @@net_buffer_length, @@max_allowed_packet;
 @@net_buffer_length	@@max_allowed_packet
 1024	1024
 SELECT length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") 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

=== modified file 'mysql-test/r/union.result'
--- a/mysql-test/r/union.result	2008-09-15 13:43:42 +0000
+++ b/mysql-test/r/union.result	2008-11-20 07:57:58 +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-10-24 13:21:52 +0000
+++ b/mysql-test/r/variables.result	2008-11-20 07:57:58 +0000
@@ -228,7 +228,6 @@ VARIABLE_NAME	VARIABLE_VALUE
 MYISAM_MAX_SORT_FILE_SIZE	FILE_SIZE
 set global net_retry_count=10, session net_retry_count=10;
 set global net_buffer_length=1024, net_write_timeout=200, net_read_timeout=300;
-set session net_buffer_length=2048, net_write_timeout=500, net_read_timeout=600;
 show global variables like 'net_%';
 Variable_name	Value
 net_buffer_length	1024
@@ -243,57 +242,45 @@ NET_RETRY_COUNT	10
 NET_WRITE_TIMEOUT	200
 show session variables like 'net_%';
 Variable_name	Value
-net_buffer_length	2048
-net_read_timeout	600
+net_buffer_length	16384
+net_read_timeout	30
 net_retry_count	10
-net_write_timeout	500
+net_write_timeout	60
 select * from information_schema.session_variables where variable_name like 'net_%' order by 1;
 VARIABLE_NAME	VARIABLE_VALUE
-NET_BUFFER_LENGTH	2048
-NET_READ_TIMEOUT	600
+NET_BUFFER_LENGTH	16384
+NET_READ_TIMEOUT	30
 NET_RETRY_COUNT	10
-NET_WRITE_TIMEOUT	500
-set session net_buffer_length=8000, global net_read_timeout=900, net_write_timeout=1000;
+NET_WRITE_TIMEOUT	60
+set global net_buffer_length=8000, global net_read_timeout=900, net_write_timeout=1000;
 show global variables like 'net_%';
 Variable_name	Value
-net_buffer_length	1024
+net_buffer_length	7168
 net_read_timeout	900
 net_retry_count	10
 net_write_timeout	1000
 select * from information_schema.global_variables where variable_name like 'net_%' order by 1;
 VARIABLE_NAME	VARIABLE_VALUE
-NET_BUFFER_LENGTH	1024
+NET_BUFFER_LENGTH	7168
 NET_READ_TIMEOUT	900
 NET_RETRY_COUNT	10
 NET_WRITE_TIMEOUT	1000
-show session variables like 'net_%';
-Variable_name	Value
-net_buffer_length	7168
-net_read_timeout	600
-net_retry_count	10
-net_write_timeout	500
-select * from information_schema.session_variables where variable_name like 'net_%' order by 1;
-VARIABLE_NAME	VARIABLE_VALUE
-NET_BUFFER_LENGTH	7168
-NET_READ_TIMEOUT	600
-NET_RETRY_COUNT	10
-NET_WRITE_TIMEOUT	500
-set net_buffer_length=1;
+set global net_buffer_length=1;
 Warnings:
 Warning	1292	Truncated incorrect net_buffer_length value: '1'
-show variables like 'net_buffer_length';
+show global variables like 'net_buffer_length';
 Variable_name	Value
 net_buffer_length	1024
-select * from information_schema.session_variables where variable_name like 'net_buffer_length';
+select * from information_schema.global_variables where variable_name like 'net_buffer_length';
 VARIABLE_NAME	VARIABLE_VALUE
 NET_BUFFER_LENGTH	1024
-set net_buffer_length=2000000000;
+set global net_buffer_length=2000000000;
 Warnings:
 Warning	1292	Truncated incorrect net_buffer_length value: '2000000000'
-show variables like 'net_buffer_length';
+show global variables like 'net_buffer_length';
 Variable_name	Value
 net_buffer_length	1048576
-select * from information_schema.session_variables where variable_name like 'net_buffer_length';
+select * from information_schema.global_variables where variable_name like 'net_buffer_length';
 VARIABLE_NAME	VARIABLE_VALUE
 NET_BUFFER_LENGTH	1048576
 set character set cp1251_koi8;
@@ -461,7 +448,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;
@@ -485,7 +472,7 @@ select @@max_user_connections;
 100
 set global max_write_lock_count=100;
 set myisam_sort_buffer_size=100;
-set net_buffer_length=100;
+set global net_buffer_length=100;
 Warnings:
 Warning	1292	Truncated incorrect net_buffer_length value: '100'
 set net_read_timeout=100;

=== modified file 'mysql-test/suite/backup/r/backup_backupdir.result'
--- a/mysql-test/suite/backup/r/backup_backupdir.result	2008-10-24 15:37:11 +0000
+++ b/mysql-test/suite/backup/r/backup_backupdir.result	2008-11-20 07:57:58 +0000
@@ -53,8 +53,8 @@ ERROR HY000: Can't write to backup locat
 Attempt to set the backupdir to something invalid.
 SET @@global.backupdir = 'This_is_really_stupid/not/there/at/all';
 Warnings:
-Warning	1731	The path specified for the system variable backupdir cannot be accessed or is invalid. ref: This_is_really_stupid/not/there/at/all
-Warning	1731	The path specified for the system variable backupdir cannot be accessed or is invalid. ref: This_is_really_stupid/not/there/at/all
+Warning	1732	The path specified for the system variable backupdir cannot be accessed or is invalid. ref: This_is_really_stupid/not/there/at/all
+Warning	1732	The path specified for the system variable backupdir cannot be accessed or is invalid. ref: This_is_really_stupid/not/there/at/all
 Cleanup
 Reset backupdir 
 SET @@global.backupdir = @@global.datadir;

=== modified file 'mysql-test/suite/rpl/r/rpl_locktrans_myisam.result'
--- a/mysql-test/suite/rpl/r/rpl_locktrans_myisam.result	2008-10-24 15:37:11 +0000
+++ b/mysql-test/suite/rpl/r/rpl_locktrans_myisam.result	2008-11-20 07:57:58 +0000
@@ -27,8 +27,8 @@ UNLOCK TABLES;
 # Valid syntax for transactional locks.
 LOCK TABLE t1 IN SHARE MODE, t2 IN EXCLUSIVE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't1'
-Warning	1621	Converted to non-transactional lock on 't2'
+Warning	1622	Converted to non-transactional lock on 't1'
+Warning	1622	Converted to non-transactional lock on 't2'
 UNLOCK TABLES;
 #
 # Valid syntax for aliases with and without 'AS'.
@@ -36,19 +36,19 @@ LOCK TABLE t1 AS a1 READ, t2 a2 WRITE;
 UNLOCK TABLES;
 LOCK TABLE t1 AS a1 IN SHARE MODE, t2 a2 IN EXCLUSIVE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 'a1'
-Warning	1621	Converted to non-transactional lock on 'a2'
+Warning	1622	Converted to non-transactional lock on 'a1'
+Warning	1622	Converted to non-transactional lock on 'a2'
 UNLOCK TABLES;
 #
 # Transactional locks taken on a view.
 CREATE VIEW v1 AS SELECT * FROM t1, t2 WHERE t1.c1 = t2.c2;
 LOCK TABLE v1 IN SHARE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't1'
-Warning	1621	Converted to non-transactional lock on 't2'
+Warning	1622	Converted to non-transactional lock on 't1'
+Warning	1622	Converted to non-transactional lock on 't2'
 LOCK TABLE v1 IN EXCLUSIVE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 'v1'
+Warning	1622	Converted to non-transactional lock on 'v1'
 UNLOCK TABLES;
 DROP VIEW v1;
 #
@@ -101,12 +101,12 @@ ERROR 42000: You have an error in your S
 # Implicit lock method conversion due to mix in statement.
 LOCK TABLE t1 READ, t2 IN EXCLUSIVE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't2'
+Warning	1622	Converted to non-transactional lock on 't2'
 UNLOCK TABLES;
 # Lock t1 share (converted to read), t2 write.
 LOCK TABLE t1 IN SHARE MODE, t2 WRITE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't1'
+Warning	1622	Converted to non-transactional lock on 't1'
 # Show t1 is read locked, t2 write locked.
 INSERT INTO t1 SELECT * FROM t2;
 ERROR HY000: Table 't1' was locked with a READ lock and can't be updated
@@ -117,8 +117,8 @@ INSERT INTO t2 SELECT * FROM t1;
 # Lock t1 exclusive (converted to write), t2 share (converted to read).
 LOCK TABLE t1 IN EXCLUSIVE MODE, t2 IN SHARE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't1'
-Warning	1621	Converted to non-transactional lock on 't2'
+Warning	1622	Converted to non-transactional lock on 't1'
+Warning	1622	Converted to non-transactional lock on 't2'
 # Show t1 is write locked, t2 read locked.
 INSERT INTO t1 SELECT * FROM t2;
 INSERT INTO t2 SELECT * FROM t1;
@@ -142,8 +142,8 @@ ERROR HY000: Cannot convert to non-trans
 ## Error is reported on first table only. Show both errors:
 SHOW WARNINGS;
 Level	Code	Message
-Error	1622	Cannot convert to non-transactional lock in strict mode on 't1'
-Error	1622	Cannot convert to non-transactional lock in strict mode on 't2'
+Error	1623	Cannot convert to non-transactional lock in strict mode on 't1'
+Error	1623	Cannot convert to non-transactional lock in strict mode on 't2'
 UNLOCK TABLES;
 SET @@SQL_MODE= @wl3561_save_sql_mode;
 #
@@ -163,7 +163,7 @@ CREATE TABLE t4 (c4 INT) ENGINE= MyISAM;
 # Request a transactional lock, which is converted to non-transactional.
 LOCK TABLE t4 IN SHARE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't4'
+Warning	1622	Converted to non-transactional lock on 't4'
 # Try a conflict with the existing non-transactional lock.
 INSERT INTO t4 VALUES(444);
 ERROR HY000: Table 't4' was locked with a READ lock and can't be updated
@@ -180,8 +180,8 @@ CREATE VIEW v1 AS SELECT * FROM t3, t4 W
 # Request a share lock on the view, which is converted to read locks.
 LOCK TABLE v1 IN SHARE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't3'
-Warning	1621	Converted to non-transactional lock on 't4'
+Warning	1622	Converted to non-transactional lock on 't3'
+Warning	1622	Converted to non-transactional lock on 't4'
 # Show that read locks on the base tables prohibit writing ...
 INSERT INTO t3 SELECT * FROM t4;
 ERROR HY000: Table 't3' was locked with a READ lock and can't be updated
@@ -197,7 +197,7 @@ COUNT(*)
 ## Report conversion on view due to existing non-transactional locks.
 LOCK TABLE v1 IN EXCLUSIVE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 'v1'
+Warning	1622	Converted to non-transactional lock on 'v1'
 INSERT INTO t3 VALUES(333);
 INSERT INTO t4 VALUES(444);
 INSERT INTO t1 VALUES(111);
@@ -206,8 +206,8 @@ UNLOCK TABLES;
 ## Now report conversion on base table again.
 LOCK TABLE v1 IN EXCLUSIVE MODE;
 Warnings:
-Warning	1621	Converted to non-transactional lock on 't3'
-Warning	1621	Converted to non-transactional lock on 't4'
+Warning	1622	Converted to non-transactional lock on 't3'
+Warning	1622	Converted to non-transactional lock on 't4'
 INSERT INTO t3 VALUES(333);
 INSERT INTO t4 VALUES(444);
 INSERT INTO t1 VALUES(111);

=== 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-11-20 07:57:58 +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-08-20 22:18:33 +0000
+++ b/mysql-test/t/innodb_bug34300.test	2008-11-20 07:57:58 +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-11-20 07:57:58 +0000
@@ -36,8 +36,13 @@
 
 SET @start_global_value = @@global.max_allowed_packet;
 SELECT @start_global_value;
-SET @start_session_value = @@session.max_allowed_packet;
-SELECT @start_session_value;
+
+# give a known value to @@session.max_allowed_packet by assigning to
+# @@global and setting up a new connection (for deterministic result
+# file diffing)
+SET @@global.max_allowed_packet = DEFAULT;
+connect (conn1, localhost, root,,);
+
 
 
 --echo '#--------------------FN_DYNVARS_070_01-------------------------#'
@@ -49,7 +54,9 @@ SET @@global.max_allowed_packet = 1000;
 SET @@global.max_allowed_packet = DEFAULT;
 SELECT @@global.max_allowed_packet;
 
+--Error ER_VARIABLE_IS_READONLY
 SET @@session.max_allowed_packet = 20000;
+--Error ER_NO_DEFAULT
 SET @@session.max_allowed_packet = DEFAULT;
 SELECT @@session.max_allowed_packet;
 
@@ -62,9 +69,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 +90,19 @@ SELECT @@global.max_allowed_packet;
 # Change the value of max_allowed_packet to a valid value for SESSION Scope #
 #############################################################################
  
+--Error ER_VARIABLE_IS_READONLY
 SET @@session.max_allowed_packet = 1024;
 SELECT @@session.max_allowed_packet;
+--Error ER_VARIABLE_IS_READONLY
 SET @@session.max_allowed_packet = 1025;
 SELECT @@session.max_allowed_packet;
+--Error ER_VARIABLE_IS_READONLY
 SET @@session.max_allowed_packet = 65535;
 SELECT @@session.max_allowed_packet;
+--Error ER_VARIABLE_IS_READONLY
 SET @@session.max_allowed_packet = 1073741824;
 SELECT @@session.max_allowed_packet;
+--Error ER_VARIABLE_IS_READONLY
 SET @@session.max_allowed_packet = 1073741823;
 SELECT @@session.max_allowed_packet;
 
@@ -118,14 +127,18 @@ SELECT @@global.max_allowed_packet;
 SET @@global.max_allowed_packet = test;
 SELECT @@global.max_allowed_packet;
 
+--Error ER_VARIABLE_IS_READONLY
 SET @@session.max_allowed_packet = 0;
 SELECT @@session.max_allowed_packet;
+--Error ER_VARIABLE_IS_READONLY
 SET @@session.max_allowed_packet = 1023;
 SELECT @@session.max_allowed_packet;
+--Error ER_VARIABLE_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_VARIABLE_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';
@@ -180,6 +193,7 @@ SELECT @@max_allowed_packet = @@global.m
 #    Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable  #
 ########################################################################################################
 
+--Error ER_VARIABLE_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 +204,7 @@ SELECT @@local.max_allowed_packet = @@se
 #   Check if max_allowed_packet can be accessed with and without @@ sign    #
 #############################################################################
 
+--Error ER_VARIABLE_IS_READONLY
 SET max_allowed_packet = 1024;
 SELECT @@max_allowed_packet;
 --Error ER_UNKNOWN_TABLE
@@ -204,9 +219,9 @@ SELECT max_allowed_packet = @@session.ma
 #     Restore initial value        #
 ####################################
 
+connection default;
 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-11-20 07:57:58 +0000
@@ -43,26 +43,19 @@ 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_VARIABLE_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;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
 jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
-
-SELECT length("aaaaaasssssssssssdddddddfffffgggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
 jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk") as len;
 
---echo ## Verifying record in table t1 ##
-SELECT * from t1;
+--error ER_VARIABLE_IS_READONLY
+SET @@session.net_buffer_length = 1024;
+SELECT @@session.net_buffer_length;
 
---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/net_buffer_length_basic.test'
--- a/mysql-test/t/net_buffer_length_basic.test	2008-04-10 13:14:28 +0000
+++ b/mysql-test/t/net_buffer_length_basic.test	2008-11-20 07:57:58 +0000
@@ -38,9 +38,13 @@
 SET @start_global_value = @@global.net_buffer_length;
 # Due to differences in results of linux and windows
 #SELECT @start_global_value;
-SET @start_session_value = @@session.net_buffer_length;
-#SELECT @start_session_value;
 
+# give a known value to @@session.net_buffer_length by assigning to
+# @@global and setting up a new connection (for deterministic result
+# file diffing)
+SET @@global.net_buffer_length = DEFAULT;
+connect(con1,localhost,root,,);
+connection con1;
 
 --echo '#--------------------FN_DYNVARS_109_01-------------------------#'
 #################################################################
@@ -51,7 +55,9 @@ SET @@global.net_buffer_length = 10000;
 SET @@global.net_buffer_length = DEFAULT;
 SELECT @@global.net_buffer_length;
 
+--Error ER_VARIABLE_IS_READONLY
 SET @@session.net_buffer_length = 20000;
+--Error ER_NO_DEFAULT
 SET @@session.net_buffer_length = DEFAULT;
 SELECT @@session.net_buffer_length;
 
@@ -64,9 +70,6 @@ SELECT @@session.net_buffer_length;
 SET @@global.net_buffer_length = DEFAULT;
 SELECT @@global.net_buffer_length = 16384;
 
-SET @@session.net_buffer_length = DEFAULT;
-SELECT @@session.net_buffer_length = 16384;
-
 
 --echo '#--------------------FN_DYNVARS_109_03-------------------------#'
 ###########################################################################
@@ -91,17 +94,7 @@ SELECT @@global.net_buffer_length;
 # Change the value of net_buffer_length to a valid value for SESSION Scope #
 ############################################################################
  
-SET @@session.net_buffer_length = 1024;
-SELECT @@session.net_buffer_length;
-SET @@session.net_buffer_length = 1025;
-SELECT @@session.net_buffer_length;
-SET @@session.net_buffer_length = 1048576;
-SELECT @@session.net_buffer_length;
-SET @@session.net_buffer_length = 1048575;
-SELECT @@session.net_buffer_length;
-SET @@session.net_buffer_length = 65535;
-SELECT @@session.net_buffer_length;
---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
+# Bug#22891: SESSION net_buffer_length is now read-only; assignments skipped
 
 
 --echo '#------------------FN_DYNVARS_109_05-----------------------#'
@@ -126,18 +119,8 @@ SELECT @@global.net_buffer_length;
 SET @@global.net_buffer_length = test;
 SELECT @@global.net_buffer_length;
 
-SET @@session.net_buffer_length = 0;
-SELECT @@session.net_buffer_length;
-SET @@session.net_buffer_length = -2;
-SELECT @@session.net_buffer_length;
-SET @@session.net_buffer_length = 1048577;
-SELECT @@session.net_buffer_length;
-SET @@session.net_buffer_length = 1048576002;
-SELECT @@session.net_buffer_length;
---Error ER_PARSE_ERROR
-SET @@session.net_buffer_length = 65530.34.;
-SET @@session.net_buffer_length = 65550;
-SELECT @@session.net_buffer_length;
+# Bug#22891: SESSION net_buffer_length is now read-only; assignments skipped
+
 --echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
 
 --Error ER_WRONG_TYPE_FOR_VAR
@@ -190,9 +173,7 @@ SELECT @@net_buffer_length = @@global.ne
 #    Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable  #
 ########################################################################################################
 
-SET @@net_buffer_length = 100000;
-SELECT @@net_buffer_length = @@local.net_buffer_length;
-SELECT @@local.net_buffer_length = @@session.net_buffer_length;
+# Bug#22891: SESSION net_buffer_length is now read-only; assignments skipped
 
 
 --echo '#---------------------FN_DYNVARS_109_11----------------------#'
@@ -200,7 +181,7 @@ SELECT @@local.net_buffer_length = @@ses
 #   Check if net_buffer_length can be accessed with and without @@ sign    #
 ############################################################################
 
-SET net_buffer_length = 1024;
+# Bug#22891: SESSION net_buffer_length is now read-only; assignments skipped
 SELECT @@net_buffer_length;
 --Error ER_UNKNOWN_TABLE
 SELECT local.net_buffer_length;
@@ -214,11 +195,11 @@ SELECT net_buffer_length = @@session.net
 #     Restore initial value        #
 ####################################
 
+connection default;
+
 SET @@global.net_buffer_length = @start_global_value;
 # Due to differences in results of linux and windows
 #SELECT @@global.net_buffer_length;
-SET @@session.net_buffer_length = @start_session_value;
-#SELECT @@session.net_buffer_length;
 
 
 ######################################################

=== 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-11-20 07:57:58 +0000
@@ -8,30 +8,30 @@
 # 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("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") 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("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
+
+#
+# Reset to default values and reconnect
+#
 set global max_allowed_packet=default;
-set max_allowed_packet=default;
 set global net_buffer_length=default;
-set net_buffer_length=default;
+connect (con2,localhost,root,,);
+connection con2;
 SELECT length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
 select length(repeat('a',2000));
 

=== modified file 'mysql-test/t/union.test'
--- a/mysql-test/t/union.test	2008-09-15 14:06:56 +0000
+++ b/mysql-test/t/union.test	2008-11-20 07:57:58 +0000
@@ -803,8 +803,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');
@@ -826,7 +828,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-10-20 09:16:47 +0000
+++ b/mysql-test/t/variables.test	2008-11-20 07:57:58 +0000
@@ -146,25 +146,23 @@ show global variables like 'myisam_max_s
 --replace_result 9223372036853727232 FILE_SIZE 2146435072 FILE_SIZE
 select * from information_schema.global_variables where variable_name like 'myisam_max_sort_file_size';
 
+# bug#22891: modified to take read-only SESSION net_buffer_length into account
 set global net_retry_count=10, session net_retry_count=10;
 set global net_buffer_length=1024, net_write_timeout=200, net_read_timeout=300;
-set session net_buffer_length=2048, net_write_timeout=500, net_read_timeout=600;
 show global variables like 'net_%';
 select * from information_schema.global_variables where variable_name like 'net_%' order by 1;
 show session variables like 'net_%';
 select * from information_schema.session_variables where variable_name like 'net_%' order by 1;
-set session net_buffer_length=8000, global net_read_timeout=900, net_write_timeout=1000;
+set global net_buffer_length=8000, global net_read_timeout=900, net_write_timeout=1000;
 show global variables like 'net_%';
 select * from information_schema.global_variables where variable_name like 'net_%' order by 1;
-show session variables like 'net_%';
-select * from information_schema.session_variables where variable_name like 'net_%' order by 1;
-set net_buffer_length=1;
-show variables like 'net_buffer_length';
-select * from information_schema.session_variables where variable_name like 'net_buffer_length';
+set global net_buffer_length=1;
+show global variables like 'net_buffer_length';
+select * from information_schema.global_variables where variable_name like 'net_buffer_length';
 #warning 1292
-set net_buffer_length=2000000000;
-show variables like 'net_buffer_length';
-select * from information_schema.session_variables where variable_name like 'net_buffer_length';
+set global net_buffer_length=2000000000;
+show global variables like 'net_buffer_length';
+select * from information_schema.global_variables where variable_name like 'net_buffer_length';
 
 set character set cp1251_koi8;
 show variables like "character_set_client";
@@ -274,7 +272,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;
@@ -288,7 +286,7 @@ set global max_user_connections=100;
 select @@max_user_connections;
 set global max_write_lock_count=100;
 set myisam_sort_buffer_size=100;
-set net_buffer_length=100;
+set global net_buffer_length=100;
 set net_read_timeout=100;
 set net_write_timeout=100;
 set global query_cache_limit=100;

=== modified file 'sql/set_var.cc'
--- a/sql/set_var.cc	2008-11-07 14:01:59 +0000
+++ b/sql/set_var.cc	2008-11-20 07:57:58 +0000
@@ -319,7 +319,7 @@ 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",
+static sys_var_thd_ulong_session_readonly sys_max_allowed_packet(&vars, "max_allowed_packet",
 					       &SV::max_allowed_packet);
 static sys_var_long_ptr	sys_max_binlog_cache_size(&vars, "max_binlog_cache_size",
 						  &max_binlog_cache_size);
@@ -389,7 +389,8 @@ static sys_var_thd_enum         sys_myis
                                                 &SV::myisam_stats_method,
                                                 &myisam_stats_method_typelib,
                                                 NULL);
-static sys_var_thd_ulong	sys_net_buffer_length(&vars, "net_buffer_length",
+
+static sys_var_thd_ulong_session_readonly sys_net_buffer_length(&vars, "net_buffer_length",
 					      &SV::net_buffer_length);
 static sys_var_thd_ulong	sys_net_read_timeout(&vars, "net_read_timeout",
 					     &SV::net_read_timeout,
@@ -3210,6 +3211,18 @@ uchar *sys_var_max_user_conn::value_ptr(
 }
 
 
+bool sys_var_thd_ulong_session_readonly::check(THD *thd, set_var *var)
+{
+  if (var->type != OPT_GLOBAL)
+  {
+    my_error(ER_VARIABLE_IS_READONLY, MYF(0), "SESSION", name, "GLOBAL");
+    return TRUE;
+  }
+
+  return sys_var_thd_ulong::check(thd, var);
+}
+
+
 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-11-07 14:01:59 +0000
+++ b/sql/set_var.h	2008-11-20 07:57:58 +0000
@@ -1114,6 +1114,29 @@ public:
 };
 
 
+/**
+ * @brief This is a specialization of sys_var_thd_ulong that implements a 
+   read-only session variable. The class overrides check() and check_default() 
+   to achieve the read-only property for the session part of the variable.
+ */
+class sys_var_thd_ulong_session_readonly : public sys_var_thd_ulong
+{
+public:
+  sys_var_thd_ulong_session_readonly(sys_var_chain *chain_arg, 
+                                     const char *name_arg, ulong SV::*offset_arg, 
+				     sys_check_func c_func= NULL,
+                                     sys_after_update_func au_func= NULL, 
+                                     Binlog_status_enum bl_status_arg= NOT_IN_BINLOG):
+    sys_var_thd_ulong(chain_arg, name_arg, offset_arg, c_func, au_func, bl_status_arg)
+  { }
+  bool check(THD *thd, set_var *var);
+  bool check_default(enum_var_type type)
+  {
+    return type != OPT_GLOBAL || !option_limits;
+  }
+};
+
+
 class sys_var_microseconds :public sys_var_thd
 {
   ulonglong SV::*offset;

=== modified file 'sql/share/errmsg.txt'
--- a/sql/share/errmsg.txt	2008-11-07 17:07:58 +0000
+++ b/sql/share/errmsg.txt	2008-11-20 07:57:58 +0000
@@ -6146,6 +6146,9 @@ WARN_PLUGIN_DELETE_BUILTIN
 WARN_PLUGIN_BUSY
   eng "Plugin is busy and will be uninstalled on shutdown"
 
+ER_VARIABLE_IS_READONLY
+  eng "%s variable '%s' is read-only. Use SET %s to assign the value"
+
 ER_WARN_AUTO_CONVERT_LOCK
         eng "Converted to non-transactional lock on '%-.64s'"
         ger "Umgewandelt zu nicht-transaktionalen Sperren auf '%-.64s'"

Thread
bzr commit into mysql-6.0 branch (staale.smedseng:2937) Bug#22891Staale Smedseng20 Nov