List:Commits« Previous MessageNext Message »
From:Alexey Kopytov Date:June 10 2009 7:24am
Subject:bzr commit into mysql-5.0-bugteam branch (Alexey.Kopytov:2764)
Bug#45236
View as plain text  
#At file:///data/src/bzr/bugteam/bug45236/my50-bug45236/ based on revid:sergey.glukhov@stripped

 2764 Alexey Kopytov	2009-06-10
      Bug #45236: large blob inserts from mysqldump fail, possible 
                  memory issue ? 
       
      The mysql command line client could misinterpret some character 
      sequences as commands under some circumstances. 
       
      The upper limit for internal readline buffer was raised to 1 GB 
      (the same as for server's max_allowed_packet) so that any input 
      line is processed by add_line() as a whole rather than in 
      chunks.
     @ client/mysql.cc
        The upper limit for internal readline buffer was raised to 1 GB 
        (the same as for server's max_allowed_packet) so that any input 
        line is processed by add_line() as a whole rather than in 
        chunks.
     @ mysql-test/r/mysql-bug45236.result
        Added a test case for bug #45236.
     @ mysql-test/t/mysql-bug45236.test
        Added a test case for bug #45236.

    added:
      mysql-test/r/mysql-bug45236.result
      mysql-test/t/mysql-bug45236.test
    modified:
      client/mysql.cc
=== modified file 'client/mysql.cc'
--- a/client/mysql.cc	2009-05-28 08:34:30 +0000
+++ b/client/mysql.cc	2009-06-10 07:24:47 +0000
@@ -112,7 +112,7 @@ extern "C" {
 #define PROMPT_CHAR '\\'
 #define DEFAULT_DELIMITER ";"
 
-#define MAX_BATCH_BUFFER_SIZE (1024L * 1024L)
+#define MAX_BATCH_BUFFER_SIZE (1024L * 1024L * 1024L)
 
 typedef struct st_status
 {

=== added file 'mysql-test/r/mysql-bug45236.result'
--- a/mysql-test/r/mysql-bug45236.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/mysql-bug45236.result	2009-06-10 07:24:47 +0000
@@ -0,0 +1,8 @@
+DROP TABLE IF EXISTS t1;
+SET @old_max_allowed_packet= @@global.max_allowed_packet;
+SET @@global.max_allowed_packet = 1024 * 1024 + 1024;
+CREATE TABLE t1(data LONGBLOB);
+INSERT INTO t1 SELECT CONCAT(REPEAT('1', 1024*1024 - 27), 
+"\'\r dummydb dummyhost");
+DROP TABLE t1;
+SET @@global.max_allowed_packet = @old_max_allowed_packet;

=== added file 'mysql-test/t/mysql-bug45236.test'
--- a/mysql-test/t/mysql-bug45236.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/mysql-bug45236.test	2009-06-10 07:24:47 +0000
@@ -0,0 +1,43 @@
+#
+# Bug #45236: large blob inserts from mysqldump fail, possible memory issue ?
+#
+# This test consumes a significant amount of resources.
+# Therefore it should be kept separated from other tests.
+# Otherwise we might suffer from problems like
+# Bug#43801 mysql.test takes too long, fails due to expired timeout
+#           on debx86-b in PB
+#
+
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+
+# Have to change the global variable as the session variable is
+# read-only.
+SET @old_max_allowed_packet= @@global.max_allowed_packet;
+# ~1 MB blob length + some space for the rest of INSERT query
+SET @@global.max_allowed_packet = 1024 * 1024 + 1024;
+
+# Create a new connection since the global max_allowed_packet
+# has no effect onr the current one
+connect (con1, localhost, root,,);
+
+CREATE TABLE t1(data LONGBLOB);
+INSERT INTO t1 SELECT CONCAT(REPEAT('1', 1024*1024 - 27), 
+                             "\'\r dummydb dummyhost");
+
+let $outfile= $MYSQLTEST_VARDIR/tmp/bug41486.sql;
+--error 0,1
+remove_file $outfile;
+--exec $MYSQL_DUMP --compact -t test t1 > $outfile
+# Check that the mysql client does not interpret the "\r" sequence as a command
+--exec $MYSQL --max_allowed_packet=1M test < $outfile 2>&1
+
+DROP TABLE t1;
+
+# Cleanup
+disconnect con1;
+--source include/wait_until_disconnected.inc
+remove_file $outfile;
+connection default;
+SET @@global.max_allowed_packet = @old_max_allowed_packet;


Attachment: [text/bzr-bundle] bzr/alexey.kopytov@sun.com-20090610072447-ujgweygfyiuf15zd.bundle
Thread
bzr commit into mysql-5.0-bugteam branch (Alexey.Kopytov:2764)Bug#45236Alexey Kopytov10 Jun