]> granicus.if.org Git - php/commitdiff
Try blob columns instead of int, and insert a lot of data at once
authorAndrey Hristov <andrey@php.net>
Thu, 29 Apr 2010 12:07:02 +0000 (12:07 +0000)
committerAndrey Hristov <andrey@php.net>
Thu, 29 Apr 2010 12:07:02 +0000 (12:07 +0000)
ext/mysqli/tests/mysqli_stmt_bind_param_many_columns.phpt

index ce966d87617a534e0607bc2688fe8a20d33cf373..2468c38b2db56d1f928a59977a3c9e38c693bb2b 100644 (file)
@@ -6,6 +6,8 @@ require_once('skipif.inc');
 require_once('skipifemb.inc');
 require_once('skipifconnectfailure.inc');
 ?>
+--INI--
+memory_limit=256M
 --FILE--
 <?php
        /*
@@ -19,6 +21,19 @@ require_once('skipifconnectfailure.inc');
        */
        require_once("connect.inc");
 
+       if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
+               printf("Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+                       $host, $user, $db, $port, $socket);
+               exit(1);
+       }
+
+       list($old_max_allowed_packet) = $link->query("SELECT @@max_allowed_packet")->fetch_row();
+       if (!$link->query("SET GLOBAL max_allowed_packet=(2<<29)")) {
+               printf("Failed to set max_allowed_packet the test table: [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+       }
+       mysqli_close($link);
+
+
        if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
                printf("Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
                        $host, $user, $db, $port, $socket);
@@ -33,27 +48,38 @@ require_once('skipifconnectfailure.inc');
        $cols = 2500;
        $str = array();
        for ($i = 1; $i <= $cols; $i++) {
-               $str[] ="a$i INT";
+               $str[] ="a$i BLOB";
        }
-       $link->query("CREATE TABLE ps_test(" . implode(" , ", $str) . ")");
+       $link->query("CREATE TABLE ps_test(" . implode(" , ", $str) . ") ENGINE=MyISAM");
        if (mysqli_errno($link)) {
                printf("Failed to create the test table: [%d] %s\n", mysqli_errno($link), mysqli_error($link));
                die("");
        }
        $stmt = $link->prepare("INSERT INTO ps_test VALUES(".str_repeat("?, ", $cols-1) . "?)");
        var_dump($stmt->id);
-       $eval_str="\$stmt->bind_param(\"".str_repeat("i",$cols)."\", ";
+       $s = str_repeat("a", 2 << 12);
+       $eval_str="\$stmt->bind_param(\"".str_repeat("s",$cols)."\", ";
        for ($i = 1; $i < $cols; $i++) {
-               $eval_str.="\$i,";
+               $eval_str.="\$s,";
        }
-       $eval_str.="\$i";
+       $eval_str.="\$s";
        $eval_str.=");";
        eval($eval_str);
-       var_dump($stmt->execute());
+       printf("executing\n");
+       if (!$stmt->execute()) {
+               printf("failed");
+               printf("Failed to execute: [%d] %s\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
+       } else {
+               var_dump(true);
+       }
 
        mysqli_stmt_close($stmt);
 
 
+       if (!$link->query("SET GLOBAL max_allowed_packet=$old_max_allowed_packet")) {
+               printf("Failed to set max_allowed_packet the test table: [%d] %s\n", mysqli_errno($link), mysqli_error($link));
+       }
+
        mysqli_close($link);
 
        print "done!";
@@ -72,5 +98,6 @@ require_once('skipifconnectfailure.inc');
 ?>
 --EXPECTF--
 int(1)
+executing
 bool(true)
 done!