uw              Wed Oct 10 10:55:52 2007 UTC

  Modified files:              
    /php-src/ext/mysql/tests    mysql_max_links.phpt 
                                mysql_max_persistent.phpt 
                                mysql_pconn_disable.phpt 
                                mysql_pconn_kill.phpt 
                                mysql_pconn_max_links.phpt 
                                mysql_pconn_reuse.phpt 
                                mysql_query_load_data_openbasedir.phpt 
                                mysql_sql_safe_mode.phpt 
                                mysql_trace_mode.phpt mysql_pconnect.phpt 
  Log:
  Adding tests to ext/mysql in HEAD = synching with 5_3
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/mysql/tests/mysql_max_links.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/mysql/tests/mysql_max_links.phpt
diff -u /dev/null php-src/ext/mysql/tests/mysql_max_links.phpt:1.2
--- /dev/null   Wed Oct 10 10:55:52 2007
+++ php-src/ext/mysql/tests/mysql_max_links.phpt        Wed Oct 10 10:55:52 2007
@@ -0,0 +1,69 @@
+--TEST--
+mysql_[p]connect() - max_links/max_persistent
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+?>
+--INI--
+mysql.max_links=2
+--FILE--
+<?php
+require_once('connect.inc');
+
+function my_connect($offset, $host, $user, $passwd, $db, $port, $socket) {
+       if ($socket)
+               $host = sprintf("%s:%s", $host, $socket);
+       else if ($port)
+               $host = sprintf("%s:%s", $host, $port);
+
+       $link = mysql_connect($host, $user, $passwd, true);
+
+       if (!$link) {
+               printf("[%03d] Cannot connect using host '%s', user '%s', 
password '****', [%d] %s\n",
+                       $offset, $host, $user, $passwd,
+                       mysql_errno(), mysql_error());
+               return false;
+       }
+
+       return $link;
+}
+
+$links = array();
+
+// try to open 3 links
+$links[0] = my_connect(10, $host, $user, $passwd, $db, $port, $socket);
+$links[1] = my_connect(20, $host, $user, $passwd, $db, $port, $socket);
+$links[2] = my_connect(30, $host, $user, $passwd, $db, $port, $socket);
+if (false !== $links[2])
+       printf("[040] Last connection should not have been allowed!\n");
+
+// free some links but let index 1 remain
+unset($links[2]);
+mysql_close($links[0]);
+unset($links[0]);
+
+// should be allowed -> second open connection
+$links[0] = my_connect(50, $host, $user, $passwd, $db, $port, $socket);
+$links[2] = my_connect(60, $host, $user, $passwd, $db, $port, $socket);
+ksort($links);
+var_dump($links);
+
+mysql_close($links[0]);
+mysql_close($links[1]);
+print "done!\n";
+?>
+--EXPECTF--
+Warning: mysql_connect(): Too many open links (2) in %s on line %s
+[030] Cannot connect using host '%s', user '%s', password '****', [0] 0
+
+Warning: mysql_connect(): Too many open links (2) in %s on line %s
+[060] Cannot connect using host '%s', user '%s', password '****', [0] 0
+array(3) {
+  [0]=>
+  resource(%d) of type (mysql link)
+  [1]=>
+  resource(%d) of type (mysql link)
+  [2]=>
+  bool(false)
+}
+done!
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/ext/mysql/tests/mysql_max_persistent.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/mysql/tests/mysql_max_persistent.phpt
diff -u /dev/null php-src/ext/mysql/tests/mysql_max_persistent.phpt:1.2
--- /dev/null   Wed Oct 10 10:55:52 2007
+++ php-src/ext/mysql/tests/mysql_max_persistent.phpt   Wed Oct 10 10:55:52 2007
@@ -0,0 +1,90 @@
+--TEST--
+mysql_[p]connect() - max_links/max_persistent
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('connect.inc');
+
+$link = my_mysql_connect($host, $user, $passwd, $db, $port, $socket);
+if (!$link)
+       die("skip Cannot connect to MySQL");
+
+mysql_close($link);
+
+mysqli_query('DROP USER pcontest', $link);
+if (!mysql_query('CREATE USER pcontest IDENTIFIED BY "pcontest"', $link)) {
+       printf("skip Cannot create second DB user [%d] %s", mysql_errno($link), 
mysql_error($link));
+       mysql_close($link);
+       die();
+}
+
+// we might be able to specify the host using CURRENT_USER(), but...
+if (!mysql_query(sprintf("GRANT SELECT ON TABLE %s.test TO pcontest@'%%'", 
$db), $link)) {
+       printf("skip Cannot GRANT SELECT to second DB user [%d] %s", 
mysql_errno($link), mysql_error($link));
+       mysql_query('REVOKE ALL PRIVILEGES, GRANT OPTION FROM pcontest', $link);
+       mysql_query('DROP USER pcontest', $link);
+       mysql_close($link);
+       die();
+}
+mysql_close($link);
+?>
+--INI--
+mysql.max_links=2
+mysql.allow_persistent=1
+mysql.max_persistent=1
+--FILE--
+<?php
+require_once('connect.inc');
+
+function my_connect($offset, $host, $user, $passwd, $db, $port, $socket) {
+       if ($socket)
+               $host = sprintf("%s:%s", $host, $socket);
+       else if ($port)
+               $host = sprintf("%s:%s", $host, $port);
+
+
+       $link = mysql_pconnect($host, $user, $passwd);
+       if (!$link) {
+               printf("[%03d] Cannot connect using host '%s', user '%s', 
password '****', [%d] %s\n",
+                       $offset, $host, $user, $passwd,
+                       mysql_errno(), mysql_error());
+               return false;
+       }
+
+       if (!mysql_select_db($db, $link))
+               return false;
+
+       return $link;
+}
+
+$links = array();
+
+// try to open 2 links
+$links[0] = my_connect(10, $host, $user, $passwd, $db, $port, $socket);
+$links[1] = my_connect(20, $host, 'pcontest', 'pcontest', $db, $port, $socket);
+if (false !== $links[1])
+       printf("[030] Last connection should not have been allowed!\n");
+
+// free some links but let index 1 remain
+unset($links[1]);
+mysql_close($links[0]);
+unset($links[0]);
+
+// should be allowed -> only open connection
+$links[0] = my_connect(40, $host, $user, $passwd, $db, $port, $socket);
+var_dump($links);
+
+mysql_query('REVOKE ALL PRIVILEGES, GRANT OPTION FROM pcontest', $links[0]);
+mysql_query('DROP USER pcontest', $links[0]);
+
+mysql_close($links[0]);
+print "done!\n";
+?>
+--EXPECTF--
+Warning: mysql_pconnect(): Too many open persistent links (1) in %s on line %d
+[020] Cannot connect using host '%s', user '%s', password '****', [0] 0
+array(1) {
+  [0]=>
+  resource(%d) of type (mysql link persistent)
+}
+done!
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/ext/mysql/tests/mysql_pconn_disable.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/mysql/tests/mysql_pconn_disable.phpt
diff -u /dev/null php-src/ext/mysql/tests/mysql_pconn_disable.phpt:1.2
--- /dev/null   Wed Oct 10 10:55:52 2007
+++ php-src/ext/mysql/tests/mysql_pconn_disable.phpt    Wed Oct 10 10:55:52 2007
@@ -0,0 +1,58 @@
+--TEST--
+mysql_pconnect() - disabling feature
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+?>
+--INI--
+mysql.allow_persistent=0
+mysql.max_persistent=1
+mysql.max_links=2
+--FILE--
+<?php
+       require_once("connect.inc");
+       require_once("table.inc");
+       // assert(ini_get('mysql.allow_persistent') == false);
+
+       if ($socket)
+               $myhost = sprintf("%s:%s", $host, $socket);
+       else if ($port)
+               $myhost = sprintf("%s:%s", $host, $port);
+       else
+       $myhost = $host;
+
+       if (($plink = mysql_pconnect($myhost, $user, $passwd)))
+               printf("[001] Can connect to the server.\n");
+
+       if (($res = @mysql_query('SELECT id FROM test ORDER BY id ASC', 
$plink)) &&
+                       ($row = mysql_fetch_assoc($res)) &&
+                       (mysql_free_result($res))) {
+               printf("[002] Can fetch data using persistent connection! Data 
= '%s'\n",
+                       $row['id']);
+       }
+
+       $thread_id = mysql_thread_id($plink);
+       mysql_close($plink);
+
+       if (!($plink = mysql_pconnect($myhost, $user, $passwd)))
+               printf("[003] Cannot connect, [%d] %s\n", mysql_errno(), 
mysql_error());
+
+       if (mysql_thread_id($plink) != $thread_id)
+               printf("[004] Looks like the second call to pconnect() did not 
give us the same connection.\n");
+
+       $thread_id = mysql_thread_id($plink);
+       mysql_close($plink);
+
+       if (!($plink = mysql_connect($myhost, $user, $passwd, true)))
+               printf("[005] Cannot connect, [%d] %s\n", mysql_errno(), 
mysql_error());
+
+       if (mysql_thread_id($plink) == $thread_id)
+               printf("[006] Looks like connect() did not return a new 
connection.\n");
+
+       print "done!";
+?>
+--EXPECTF--
+[001] Can connect to the server.
+[002] Can fetch data using persistent connection! Data = '1'
+done!
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/ext/mysql/tests/mysql_pconn_kill.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/mysql/tests/mysql_pconn_kill.phpt
diff -u /dev/null php-src/ext/mysql/tests/mysql_pconn_kill.phpt:1.2
--- /dev/null   Wed Oct 10 10:55:52 2007
+++ php-src/ext/mysql/tests/mysql_pconn_kill.phpt       Wed Oct 10 10:55:52 2007
@@ -0,0 +1,106 @@
+--TEST--
+mysql_pconnect() - killing persitent connection
+--SKIPIF--
+<?php 
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+?>
+--INI--
+mysql.allow_persistent=1
+mysql.max_persistent=2
+--FILE--
+<?php
+       include "connect.inc";
+       include "table.inc";
+
+       if ($socket)
+               $myhost = sprintf("%s:%s", $host, $socket);
+       else if ($port)
+               $myhost = sprintf("%s:%s", $host, $port);
+       else
+               $myhost = $host;
+
+       if (!($plink = mysql_pconnect($myhost, $user, $passwd)))
+               printf("[001] Cannot connect to the server using host=%s/%s, 
user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+                       $host, $myhost, $user, $db, $port, $socket);
+       mysql_select_db($db, $plink);
+                       
+       $pthread_id = mysql_thread_id($plink);
+       $thread_id = mysql_thread_id($link);
+
+       if (!($res = mysql_query("SHOW FULL PROCESSLIST", $link)))
+               printf("[002] Cannot get processlist, [%d] %s\n", 
mysql_errno($link), mysql_error($link));
+
+       $processlist = array();
+       while ($row = mysql_fetch_assoc($res))
+               $processlist[$row['Id']] = $row;
+       mysql_free_result($res);
+
+       if (!isset($processlist[$thread_id]))
+               printf("[003] Cannot find regular connection thread in process 
list, [%d] %s\n", mysql_errno($link), mysql_error($link));
+       if (!isset($processlist[$pthread_id]))
+               printf("[004] Cannot find persistent connection thread in 
process list, [%d] %s\n", mysql_errno($link), mysql_error($link));
+               
+       if (!mysql_query(sprintf("KILL %d", $pthread_id), $link)) 
+               printf("[005] Cannot kill persistent connection thread, [%d] 
%s\n", mysql_errno($link), mysql_error($link));
+
+       while (1) {
+               if (!($res = mysql_query("SHOW FULL PROCESSLIST", $link)))
+                       printf("[006] Cannot get processlist, [%d] %s\n", 
mysql_errno($link), mysql_error($link));
+
+               $processlist2 = array();
+               while ($row = mysql_fetch_assoc($res))
+                       $processlist2[$row['Id']] = $row;
+               mysql_free_result($res);
+               if (isset($processlist2[$pthread_id])) {
+                       sleep(1);
+               } else {
+                       break;
+               }
+       }
+
+       if (!isset($processlist2[$thread_id]))
+               printf("[007] Cannot find regular connection thread in process 
list, [%d] %s\n", mysql_errno($link), mysql_error($link));
+
+       mysql_close($plink);
+
+       if (!($plink = mysql_pconnect($myhost, $user, $passwd))) 
+               printf("[009] Cannot create new persistent connection, [%d] 
%s\n", mysql_errno(), mysql_error());
+       mysql_select_db($db, $plink);
+
+       if (!($res = mysql_query("SELECT 1", $plink)))
+               printf("[010] Cannot run query on new persistent connection, 
[%d] %s\n", @mysql_errno($plink), @mysql_error($plink));
+       mysql_free_result($res);
+
+       var_dump(mysql_ping($plink));
+
+       if (!($res = mysql_query("SELECT 1", $plink)))
+               printf("[011] Cannot run query on new persistent connection, 
[%d] %s\n", @mysql_errno($plink), @mysql_error($plink));
+       mysql_free_result($res);
+
+       if (!($link2 = mysql_connect($myhost, $user, $passwd, true)))
+               printf("[012] Cannot connect to the server using host=%s/%s, 
user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+                       $host, $myhost, $user, $db, $port, $socket);
+       mysql_select_db($db, $link2);
+       if (!mysql_query(sprintf("KILL %d", $thread_id), $link2)) 
+               printf("[013] Cannot kill regular connection thread, [%d] 
%s\n", mysql_errno($link2), mysql_error($link2));
+
+       if (!($link = mysql_connect($myhost, $user, $passwd, true)))
+               printf("[014] Cannot connect to the server using host=%s/%s, 
user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+                       $host, $myhost, $user, $db, $port, $socket);
+       mysql_select_db($db, $link);
+       if (!($res = mysql_query("SELECT * FROM test", $link)))
+               printf("[015] Cannot run query on new regular connection, [%d] 
%s\n", @mysql_errno($link), @mysql_error($link));
+
+       if (!($res = mysql_query("SELECT * FROM test", $link2)))
+               printf("[016] Cannot run query on other regular connection, 
[%d] %s\n", @mysql_errno($link2), @mysql_error($link2));
+
+       mysql_free_result($res);
+       mysql_close($plink);
+       mysql_close($link);
+       mysql_close($link2);
+       print "done!";
+?>
+--EXPECTF--
+bool(true)
+done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysql/tests/mysql_pconn_max_links.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/mysql/tests/mysql_pconn_max_links.phpt
diff -u /dev/null php-src/ext/mysql/tests/mysql_pconn_max_links.phpt:1.2
--- /dev/null   Wed Oct 10 10:55:52 2007
+++ php-src/ext/mysql/tests/mysql_pconn_max_links.phpt  Wed Oct 10 10:55:52 2007
@@ -0,0 +1,169 @@
+--TEST--
+Persistent connections and mysql.max_persistent
+--SKIPIF--
+<?php
+       require_once('skipif.inc');
+       require_once('skipifconnectfailure.inc');
+       require_once('connect.inc');
+
+       if ($socket)
+               $host = sprintf("%s:%s", $host, $socket);
+       else if ($port)
+               $host = sprintf("%s:%s", $host, $port);
+
+       // we need a second DB user to test for a possible flaw in the 
ext/mysql[i] code
+       if (!$link = mysql_connect($host, $user, $passwd, true))
+               die(sprintf("skip Cannot connect [%d] %s", mysql_errno(), 
mysql_error()));
+
+       if (!mysql_select_db($db, $link))
+               die(sprintf("skip [%d] %s", mysql_errno($link), 
mysql_error($link)));
+
+       mysql_query('DROP USER pcontest', $link);
+       if (!mysql_query('CREATE USER pcontest IDENTIFIED BY "pcontest"', 
$link)) {
+               printf("skip Cannot create second DB user [%d] %s", 
mysql_errno($link), mysql_error($link));
+               mysql_close($link);
+               die();
+       }
+
+       // we might be able to specify the host using CURRENT_USER(), but...
+       if (!mysql_query(sprintf("GRANT SELECT ON TABLE %s.test TO 
pcontest@'%%'", $db), $link)) {
+               printf("skip Cannot GRANT SELECT to second DB user [%d] %s", 
mysql_errno($link), mysql_error($link));
+               mysql_query('REVOKE ALL PRIVILEGES, GRANT OPTION FROM 
pcontest', $link);
+               mysql_query('DROP USER pcontest', $link);
+               mysql_close($link);
+               die();
+       }
+       mysql_close($link);
+?>
+--INI--
+mysql.max_links=2
+mysql.max_persistent=1
+mysql.allow_persistent=1
+--FILE--
+<?php
+       require_once("connect.inc");
+       require_once('table.inc');
+
+       if ($socket)
+               $host = sprintf("%s:%s", $host, $socket);
+       else if ($port)
+               $host = sprintf("%s:%s", $host, $port);
+
+       if (!$plink = mysql_pconnect($host, 'pcontest', 'pcontest'))
+               printf("[001] Cannot connect using the second DB user created 
during SKIPIF, [%d] %s\n",
+                       mysql_errno(), mysql_error());
+
+       if (!mysql_select_db($db, $plink))
+               printf("[002] [%d] %s\n", mysql_errno($plink), 
mysql_error($plink));
+
+       ob_start();
+       phpinfo();
+       $phpinfo = strip_tags(ob_get_contents());
+       ob_end_clean();
+       $phpinfo = substr($phpinfo, strpos($phpinfo, 'MySQL Support => 
enabled'), 500);
+       if (!preg_match('@Active Persistent Links\s+=>\s+(\d+)@ismU', $phpinfo, 
$matches))
+               printf("[003] Cannot get # active persistent links from 
phpinfo()");
+       $num_plinks = $matches[1];
+
+       if (!$res = mysql_query('SELECT id, label FROM test WHERE id = 1', 
$plink))
+               printf("[004] Cannot run query on persistent connection of 
second DB user, [%d] %s\n",
+                       mysql_errno($plink), mysql_error($plink));
+
+       if (!$row = mysql_fetch_assoc($res))
+               printf("[005] Cannot run fetch result, [%d] %s\n",
+                       mysql_errno($plink), mysql_error($plink));
+       mysql_free_result($res);
+       var_dump($row);
+
+       // change the password for the second DB user and kill the persistent 
connection
+       if (!mysql_query('SET PASSWORD FOR pcontest = PASSWORD("newpass")', 
$link))
+               printf("[006] Cannot change PW of second DB user, [%d] %s\n", 
mysql_errno($link), mysql_error($link));
+
+       // persistent connections cannot be closed but only be killed
+       $pthread_id = mysql_thread_id($plink);
+       if (!mysql_query(sprintf('KILL %d', $pthread_id), $link))
+               printf("[007] Cannot KILL persistent connection of second DB 
user, [%d] %s\n", mysql_errno($link), mysql_error($link));
+       // give the server a second to really kill the thread
+       sleep(1);
+
+       if (!$res = mysql_query("SHOW FULL PROCESSLIST", $link))
+               printf("[008] [%d] %s\n", mysql_errno($link), 
mysql_error($link));
+
+       $running_threads = array();
+       while ($row = mysql_fetch_assoc($res))
+               $running_threads[$row['Id']] = $row;
+       mysql_free_result($res);
+
+       if (isset($running_threads[$pthread_id]))
+               printf("[009] Persistent connection has not been killed");
+
+       // we might get the old handle
+       if ($plink = @mysql_pconnect($host, 'pcontest', 'pcontest'))
+               printf("[010] Can connect using the old password, [%d] %s\n",
+                       mysql_errno(), mysql_error());
+
+       ob_start();
+       phpinfo();
+       $phpinfo = strip_tags(ob_get_contents());
+       ob_end_clean();
+       $phpinfo = substr($phpinfo, strpos($phpinfo, 'MySQL Support => 
enabled'), 500);
+       if (!preg_match('@Active Persistent Links\s+=>\s+(\d+)@ismU', $phpinfo, 
$matches))
+               printf("[011] Cannot get # active persistent links from 
phpinfo()");
+
+       $num_plinks_kill = $matches[1];
+       if ($num_plinks_kill >= $num_plinks)
+               printf("[012] Statistics seems to be wrong, got %d active 
persistent links, expecting < %d links",
+                       $num_plinks_kill, $num_plinks);
+
+       // The first connection has been closed, the last pconnect() was unable 
to connect -> no connection open
+       // We must be able to connect because max_persistent limit has not been 
reached
+       if (!$plink = mysql_pconnect($host, 'pcontest', 'newpass'))
+               printf("[013] Cannot connect using the second DB, [%d] %s\n",
+                       mysql_errno(), mysql_error());
+
+       if (!mysql_select_db($db, $plink))
+               printf("[014] [%d] %s\n", mysql_errno($plink), 
mysql_error($plink));
+
+       if (!$res = mysql_query('SELECT id, label FROM test WHERE id = 1', 
$plink))
+               printf("[015] Cannot run query on persistent connection of 
second DB user, [%d] %s\n",
+                       mysql_errno($plink), mysql_error($plink));
+
+       if (!$row = mysql_fetch_assoc($res))
+               printf("[016] Cannot run fetch result, [%d] %s\n",
+                       mysql_errno($plink), mysql_error($plink));
+       mysql_free_result($res);
+       var_dump($row);
+
+       mysql_query('REVOKE ALL PRIVILEGES, GRANT OPTION FROM pcontest', $link);
+       mysql_query('DROP USER pcontest', $link);
+       mysql_close($link);
+       print "done!";
+?>
+--EXPECTF--
+array(2) {
+  ["id"]=>
+  string(1) "1"
+  ["label"]=>
+  string(1) "a"
+}
+array(2) {
+  ["id"]=>
+  string(1) "1"
+  ["label"]=>
+  string(1) "a"
+}
+done!
+--UEXPECTF--
+array(2) {
+  [u"id"]=>
+  unicode(1) "1"
+  [u"label"]=>
+  unicode(1) "a"
+}
+array(2) {
+  [u"id"]=>
+  unicode(1) "1"
+  [u"label"]=>
+  unicode(1) "a"
+}
+done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysql/tests/mysql_pconn_reuse.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/mysql/tests/mysql_pconn_reuse.phpt
diff -u /dev/null php-src/ext/mysql/tests/mysql_pconn_reuse.phpt:1.2
--- /dev/null   Wed Oct 10 10:55:52 2007
+++ php-src/ext/mysql/tests/mysql_pconn_reuse.phpt      Wed Oct 10 10:55:52 2007
@@ -0,0 +1,66 @@
+--TEST--
+mysql_pconnect() - disabling feature
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+?>
+--INI--
+mysql.allow_persistent=1
+mysql.max_persistent=1
+mysql.max_links=2
+--FILE--
+<?php
+       require_once("connect.inc");
+       require_once("table.inc");
+       mysql_close($link);
+
+       if ($socket)
+               $myhost = sprintf("%s:%s", $host, $socket);
+       else if ($port)
+               $myhost = sprintf("%s:%s", $host, $port);
+       else
+       $myhost = $host;
+
+       if (($plink = mysql_pconnect($myhost, $user, $passwd)))
+               printf("[001] Can connect to the server.\n");
+
+       if ((mysql_select_db($db, $plink)) &&
+                       ($res = mysql_query('SELECT id FROM test', $plink)) &&
+                       ($row = mysql_fetch_assoc($res)) &&
+                       (mysql_free_result($res))) {
+               printf("[002] Can fetch data using persistent connection! Data 
= '%s'\n",
+                       $row['id']);
+       } else {
+               printf("[002] [%d] %s\n", mysql_errno($plink), 
mysql_error($plink));
+       }
+
+       $thread_id = mysql_thread_id($plink);
+       mysql_close($plink);
+
+       if (!($plink = mysql_pconnect($myhost, $user, $passwd)))
+               printf("[003] Cannot connect, [%d] %s\n", mysql_errno(), 
mysql_error());
+
+       if (mysql_thread_id($plink) != $thread_id)
+               printf("[004] Looks like the second call to pconnect() did not 
give us the same connection.\n");
+
+       $thread_id = mysql_thread_id($plink);
+       mysql_close($plink);
+
+       if (!($plink = mysql_connect($myhost, $user, $passwd, true)))
+               printf("[005] Cannot connect, [%d] %s\n", mysql_errno(), 
mysql_error());
+
+       if (mysql_thread_id($plink) == $thread_id)
+               printf("[006] Looks like connect() did not return a new 
connection.\n");
+
+       if (($link = mysql_connect($myhost, $user, $passwd, true)))
+               printf("[007] Can connect although limit has been reached, [%d] 
%s\n", mysql_errno(), mysql_error());
+
+       print "done!";
+?>
+--EXPECTF--
+[001] Can connect to the server.
+[002] Can fetch data using persistent connection! Data = '1'
+
+Warning: mysql_connect(): Too many open links (2) in %s on line %d
+done!
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/ext/mysql/tests/mysql_query_load_data_openbasedir.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/mysql/tests/mysql_query_load_data_openbasedir.phpt
diff -u /dev/null 
php-src/ext/mysql/tests/mysql_query_load_data_openbasedir.phpt:1.2
--- /dev/null   Wed Oct 10 10:55:52 2007
+++ php-src/ext/mysql/tests/mysql_query_load_data_openbasedir.phpt      Wed Oct 
10 10:55:52 2007
@@ -0,0 +1,108 @@
+--TEST--
+LOAD DATA INFILE - open_basedir
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+
+if (file_exists('./simple.csv') && !unlink('./simple.csv'))
+       die("skip Cannot remove previous CSV file");
+
+if (!$fp = fopen('./simple.csv', 'w'))
+       die("skip Cannot create test CSV file");
+
+flose($fp);
[EMAIL PROTECTED]('./simple.csv');
+?>
+--INI--
+safe_mode=0
+open_basedir="."
+--FILE--
+<?php
[EMAIL PROTECTED]("connect.inc");
+if (!isset($db)) {
+       // run-tests, I love you for not allowing me to set ini settings 
dynamically
+       print "[006] [1148] The used command is not allowed with this MySQL 
version
+[007] [0]
+[008] LOAD DATA not run?
+[010] [1148] The used command is not allowed with this MySQL version
+done!";
+       die();
+}
+require('table.inc');
+mysql_close($link);
+if ($socket)
+       $host = sprintf("%s:%s", $host, $socket);
+else if ($port)
+       $host = sprintf("%s:%s", $host, $port);
+
+if (!$link = mysql_connect($host, $user, $passwd, true, 128)) {
+       printf("[001] Cannot connect using host '%s', user '%s', password 
'****', [%d] %s\n",
+               $host, $user, $passwd,
+               mysql_errno(), mysql_error());
+}
+
+if (!mysql_select_db($db, $link)) {
+       printf("[002] [%d] %s\n", mysql_errno($link), mysql_error($link));
+}
+
+if (file_exists('./simple.csv'))
+       unlink('./simple.csv');
+
+if (!$fp = fopen('./simple.csv', 'w'))
+       printf("[003] Cannot open CSV file\n");
+
+if (ini_get('unicode.semantics')) {
+       if (!fwrite($fp, (binary)"'97';'x';\n") ||
+               !fwrite($fp, (binary)"'98';'y';\n") ||
+               !fwrite($fp, (binary)"99;'z';\n")) {
+               printf("[004] Cannot write CVS file '%s'\n", $file);
+       }
+} else {
+       if (!fwrite($fp, "97;'x';\n") ||
+               !fwrite($fp, "98;'y';\n") ||
+               !fwrite($fp, "99;'z';\n")) {
+               printf("[005] Cannot write CVS file '%s'\n", $file);
+       }
+}
+fclose($fp);
+
+$sql = sprintf("LOAD DATA LOCAL INFILE '%s'
+                       INTO TABLE test
+                       FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\''
+                       LINES TERMINATED BY '\n'",
+                       mysql_real_escape_string(realpath('./simple.csv'), 
$link));
+
+if (!mysql_query($sql, $link))
+       printf("[006] [%d] %s\n", mysql_errno($link), mysql_error($link));
+
+if (!($res = mysql_query('SELECT label FROM test WHERE id = 97', $link)) ||
+               !($row = mysql_fetch_assoc($res)) ||
+               !mysql_free_result($res))
+       printf("[007] [%d] '%s'\n", mysql_errno($link), mysql_error($link));
+
+if ($row['label'] != "x")
+       printf("[008] LOAD DATA not run?\n");
+
+if (!mysql_query('DELETE FROM test', $link))
+       printf("[009] [%d] %s\n", mysql_errno($link), mysql_error($link));
+
+$sql = "LOAD DATA LOCAL INFILE '/tmp/idonotexist'
+                       INTO TABLE test
+                       FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\''
+                       LINES TERMINATED BY '\n'";
+
+if (!mysql_query($sql, $link))
+       printf("[010] [%d] %s\n", mysql_errno($link), mysql_error($link));
+
+mysql_close($link);
+unlink("./simple.csv");
+
+print "done!";
+?>
+--EXPECTF--
+[006] [1148] %s
+[007] [0] ''
+[008] LOAD DATA not run?
+[010] [1148] %s
+done!
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/ext/mysql/tests/mysql_sql_safe_mode.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/mysql/tests/mysql_sql_safe_mode.phpt
diff -u /dev/null php-src/ext/mysql/tests/mysql_sql_safe_mode.phpt:1.2
--- /dev/null   Wed Oct 10 10:55:52 2007
+++ php-src/ext/mysql/tests/mysql_sql_safe_mode.phpt    Wed Oct 10 10:55:52 2007
@@ -0,0 +1,39 @@
+--TEST--
+mysql_[p]connect() - safe_mode
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+$link = @mysql_connect("", "", "", true);
+if ($link)
+       die("skip Test cannot be run if annonymous connections are allowed");
+?>
+--INI--
+sql.safe_mode=1
+--FILE--
+<?php
+require_once('connect.inc');
+if ($socket)
+       $host = sprintf("%s:%s", $host, $socket);
+else if ($port)
+       $host = sprintf("%s:%s", $host, $port);
+
+if ($link = mysql_connect($host, $user, $passwd, true)) {
+       printf("[001] Safe mode not working properly?\n");
+       mysql_close($link);
+}
+
+if ($link = mysql_pconnect($host, $user, $passwd)) {
+       printf("[002] Safe mode not working properly?\n");
+       mysql_close($link);
+}
+print "done!\n";
+?>
+--EXPECTF--
+Notice: mysql_connect(): SQL safe mode in effect - ignoring host/user/password 
information in %s on line %d
+
+Warning: mysql_connect(): Access denied for user '%s'@'%s' (using password: 
NO) in %s on line %d
+
+Notice: mysql_pconnect(): SQL safe mode in effect - ignoring 
host/user/password information in %s on line %d
+
+Warning: mysql_pconnect(): Access denied for user '%s'@'%s' (using password: 
NO) in %s on line %d
+done!
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/ext/mysql/tests/mysql_trace_mode.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/mysql/tests/mysql_trace_mode.phpt
diff -u /dev/null php-src/ext/mysql/tests/mysql_trace_mode.phpt:1.2
--- /dev/null   Wed Oct 10 10:55:52 2007
+++ php-src/ext/mysql/tests/mysql_trace_mode.phpt       Wed Oct 10 10:55:52 2007
@@ -0,0 +1,33 @@
+--TEST--
+mysql.trace_mode=1
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--INI--
+mysql.trace_mode=1
+error_reporting=E_ALL | E_NOTICE | E_STRICT
+--FILE--
+<?php
+require_once('connect.inc');
+require_once('table.inc');
+
+$res1 = mysql_query('SELECT id FROM test', $link);
+
+if (!$res2 = mysql_db_query('phptest', 'SELECT id FROM test', $link))
+       printf("[001] [%d] %s\n", mysql_errno($link), mysql_error($link));
+mysql_free_result($res2);
+print mysql_escape_string("I don't mind character sets, do I?\n");
+
+$res3 = mysql_query('BOGUS_SQL', $link);
+mysql_close($link);
+
+print "done!\n";
+?>
+--EXPECTF--
+Notice: mysql_db_query(): This function is deprecated; use mysql_query() 
instead%sin %s on line %d
+
+Warning: mysql_escape_string(): This function is deprecated; use 
mysql_real_escape_string() instead. in %s on line %d
+I don\'t mind character sets, do I?\n
+Warning: mysql_query(): 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 
'BOGUS_SQL' at line 1 in %s on line %d
+done!
+
+Warning: Unknown: 1 result set(s) not freed. Use mysql_free_result to free 
result sets which were requested using mysql_query() in %s on line %d
http://cvs.php.net/viewvc.cgi/php-src/ext/mysql/tests/mysql_pconnect.phpt?r1=1.3&r2=1.4&diff_format=u
Index: php-src/ext/mysql/tests/mysql_pconnect.phpt
diff -u php-src/ext/mysql/tests/mysql_pconnect.phpt:1.3 
php-src/ext/mysql/tests/mysql_pconnect.phpt:1.4
--- php-src/ext/mysql/tests/mysql_pconnect.phpt:1.3     Thu Aug  9 11:53:17 2007
+++ php-src/ext/mysql/tests/mysql_pconnect.phpt Wed Oct 10 10:55:52 2007
@@ -1,82 +1,85 @@
 --TEST--
 mysql_pconnect()
 --SKIPIF--
-<?php 
-require_once('skipif.inc'); 
+<?php
+require_once('skipif.inc');
 require_once('skipifconnectfailure.inc');
 ?>
+--INI--
+mysql.max_persistent=10
+mysql.allow_persistent=1
 --FILE--
 <?php
-include "connect.inc";
+       include "connect.inc";
 
-$tmp    = NULL;
-$link   = NULL;
+       $tmp    = NULL;
+       $link   = NULL;
 
-// mysql_pconnect ( [string server [, string username [, string password [, 
bool new_link [, int client_flags]]]]] )
-if (NULL !== ($tmp = @mysql_pconnect($link, $link, $link, $link, $link, 
$link)))
-       printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
+       // mysql_pconnect ( [string server [, string username [, string 
password [, bool new_link [, int client_flags]]]]] )
+       if (NULL !== ($tmp = @mysql_pconnect($link, $link, $link, $link, $link, 
$link)))
+               printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp), 
$tmp);
 
-$myhost = (is_null($socket)) ? ((is_null($port)) ? $host : $host . ':' . 
$port) : $host . ':' . $socket;
-if (!$link = mysql_pconnect($myhost, $user, $passwd, true))
-       printf("[002] Cannot connect to the server using host=%s/%s, user=%s, 
passwd=***, dbname=%s, port=%s, socket=%s\n",
-               $host, $myhost, $user, $db, $port, $socket);
+       $myhost = (is_null($socket)) ? ((is_null($port)) ? $host : $host . ':' 
. $port) : $host . ':' . $socket;
+       if (!$link = mysql_pconnect($myhost, $user, $passwd, true))
+               printf("[002] Cannot connect to the server using host=%s/%s, 
user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
+                       $host, $myhost, $user, $db, $port, $socket);
 
-mysql_close($link);
+       mysql_close($link);
 
-if ($link = mysql_pconnect($myhost, $user . 'unknown_really', $passwd . 
'non_empty', true))
-       printf("[003] Can connect to the server using host=%s/%s, user=%s, 
passwd=***non_empty, dbname=%s, port=%s, socket=%s\n",
-               $host, $myhost, $user . 'unknown_really', $db, $port, $socket);
+       if ($link = mysql_pconnect($myhost, $user . 'unknown_really', $passwd . 
'non_empty', true))
+               printf("[003] Can connect to the server using host=%s/%s, 
user=%s, passwd=***non_empty, dbname=%s, port=%s, socket=%s\n",
+                       $host, $myhost, $user . 'unknown_really', $db, $port, 
$socket);
 
-if (false !== $link)
-       printf("[004] Expecting boolean/false, got %s/%s\n", gettype($link), 
$link);
+       if (false !== $link)
+               printf("[004] Expecting boolean/false, got %s/%s\n", 
gettype($link), $link);
 
-// Run the following tests without an anoynmous MySQL user and use a password 
for the test user!
+       // Run the following tests without an anoynmous MySQL user and use a 
password for the test user!
 
 
-if (!ini_get('sql.safe_mode')) {
+       if (!ini_get('sql.safe_mode')) {
 
-       if ($socket) {
-               ini_set('mysql.default_socket', $socket);
+               if ($socket) {
+                       ini_set('mysql.default_socket', $socket);
+                       if (!is_resource($link = mysql_pconnect($host, $user, 
$passwd, true))) {
+                               printf("[005] Usage of mysql.default_socket 
failed\n") ;
+                       } else {
+                               mysql_close($link);
+                       }
+               } else {
+                       ini_set('mysql.default_socket', null);
+               }
+
+               ini_set('mysql.default_port', $port);
                if (!is_resource($link = mysql_pconnect($host, $user, $passwd, 
true))) {
-                       printf("[005] Usage of mysql.default_socket failed\n") ;
+                       printf("[006] Usage of mysql.default_port failed\n") ;
                } else {
                        mysql_close($link);
                }
-       } else {
-               ini_set('mysql.default_socket', null);
-       }
 
-       ini_set('mysql.default_port', $port);
-       if (!is_resource($link = mysql_pconnect($host, $user, $passwd, true))) {
-               printf("[006] Usage of mysql.default_port failed\n") ;
-       } else {
-               mysql_close($link);
-       }
-
-       ini_set('mysql.default_password', $passwd);
-       if (!is_resource($link = mysql_pconnect($myhost, $user))) {
-               printf("[007] Usage of mysql.default_password failed\n") ;
-       } else {
-               mysql_close($link);
-       }
+               ini_set('mysql.default_password', $passwd);
+               if (!is_resource($link = mysql_pconnect($myhost, $user))) {
+                       printf("[007] Usage of mysql.default_password 
failed\n") ;
+               } else {
+                       mysql_close($link);
+               }
 
-       ini_set('mysql.default_user', $user);
-       if (!is_resource($link = mysql_pconnect($myhost))) {
-               printf("[008] Usage of mysql.default_user failed\n");
-       } else {
-               mysql_close($link);
-       }
+               ini_set('mysql.default_user', $user);
+               if (!is_resource($link = mysql_pconnect($myhost))) {
+                       printf("[008] Usage of mysql.default_user failed\n");
+               } else {
+                       mysql_close($link);
+               }
 
-       ini_set('mysql.default_host', $myhost);
-       if (!is_resource($link = mysql_pconnect())) {
-               printf("[009] Usage of mysql.default_host failed\n") ;
-       } else {
-               mysql_close($link);
+               ini_set('mysql.default_host', $myhost);
+               if (!is_resource($link = mysql_pconnect())) {
+                       printf("[009] Usage of mysql.default_host failed\n") ;
+               } else {
+                       mysql_close($link);
+               }
        }
-}
 
-print "done!";
+       print "done!";
 ?>
 --EXPECTF--
 Warning: mysql_pconnect(): Access denied for user '%s'@'%s' (using password: 
YES) in %s on line %d
-done!
\ No newline at end of file
+done!

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to