[PHP-CVS] cvs: php-src(PHP_5_1) /ext/pdo_mysql mysql_driver.c

2006-04-09 Thread Wez Furlong
wez Sun Apr  9 08:11:32 2006 UTC

  Modified files:  (Branch: PHP_5_1)
/php-src/ext/pdo_mysql  mysql_driver.c 
  Log:
  Fixed Bug #36602: persistent connections don't work with MySQL 5.0.3+.
  Fixed PECL Bug #6262; correctly fallback to emulated statements
  when the server version is too old.
  
  Also include code to default to using emulated prepared statements, as these
  can take advantage of the query cache.  Since it's a bit late in the release
  process to spring this on the masses, the default has not been changed.  The
  code is included so that it doesn't get lost.
  
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo_mysql/mysql_driver.c?r1=1.59.2.12r2=1.59.2.13diff_format=u
Index: php-src/ext/pdo_mysql/mysql_driver.c
diff -u php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.12 
php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.13
--- php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.12  Thu Mar 23 01:24:36 2006
+++ php-src/ext/pdo_mysql/mysql_driver.cSun Apr  9 08:11:31 2006
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: mysql_driver.c,v 1.59.2.12 2006/03/23 01:24:36 pajoye Exp $ */
+/* $Id: mysql_driver.c,v 1.59.2.13 2006/04/09 08:11:31 wez Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -163,6 +163,7 @@
char *nsql = NULL;
int nsql_len = 0;
int ret;
+   int server_version;
 #endif

S-H = H;
@@ -173,11 +174,11 @@
goto end;
}
 
-   /* TODO: add runtime check to determine if the server we are talking to 
supports
-* prepared statements; if it doesn't, we should set 
stmt-supports_placeholders
-* to PDO_PLACEHOLDER_NONE, and have the rest of the code look at 
S-stmt to
-* determine if we're using real prepared statements or the PDO 
emulated version */
 #if HAVE_MYSQL_STMT_PREPARE
+   server_version = mysql_get_server_version(H-server);
+   if (server_version  40100) {
+   goto fallback;
+   }
stmt-supports_placeholders = PDO_PLACEHOLDER_POSITIONAL;
ret = pdo_parse_params(stmt, (char*)sql, sql_len, nsql, nsql_len 
TSRMLS_CC);
 
@@ -318,6 +319,7 @@
((pdo_mysql_db_handle *)dbh-driver_data)-buffered = 
Z_BVAL_P(val);
return 1;
case PDO_MYSQL_ATTR_DIRECT_QUERY:
+   case PDO_ATTR_EMULATE_PREPARES:
((pdo_mysql_db_handle *)dbh-driver_data)-emulate_prepare = 
Z_BVAL_P(val);
return 1;
default:
@@ -431,6 +433,17 @@
H-einfo.errcode = 0;
H-einfo.errmsg = NULL;
 
+   /* at the time of writing, the mysql documentation states:
+*  
http://mysql.localhost.net.ar/doc/refman/5.0/en/query-cache-how.html
+*  A query also is not cached under these conditions:
+*  ...
+*  It was issued as a prepared statement, even if no placeholders 
were employed.
+*
+* We default to emulating prepared statements
+* in order to take advantage of the query cache
+FIXME: H-emulate_prepare = 1;   a bit risky to do this so late in the RC, so 
defer it.
+   */
+
/* allocate an environment */

/* handle for the server */
@@ -449,7 +462,12 @@
char *init_cmd = NULL, *default_file = NULL, *default_group = 
NULL;
 
H-buffered = pdo_attr_lval(driver_options, 
PDO_MYSQL_ATTR_USE_BUFFERED_QUERY, 0 TSRMLS_CC);
-   H-emulate_prepare = pdo_attr_lval(driver_options, 
PDO_MYSQL_ATTR_DIRECT_QUERY, 0 TSRMLS_CC);
+
+   H-emulate_prepare = pdo_attr_lval(driver_options,
+   PDO_MYSQL_ATTR_DIRECT_QUERY, H-emulate_prepare 
TSRMLS_CC);
+   H-emulate_prepare = pdo_attr_lval(driver_options, 
+   PDO_ATTR_EMULATE_PREPARES, H-emulate_prepare 
TSRMLS_CC);
+
H-max_buffer_size = pdo_attr_lval(driver_options, 
PDO_MYSQL_ATTR_MAX_BUFFER_SIZE, H-max_buffer_size TSRMLS_CC);
 
if (mysql_options(H-server, MYSQL_OPT_CONNECT_TIMEOUT, (const 
char *)connect_timeout)) {
@@ -462,6 +480,15 @@
goto cleanup;
}
 
+#ifdef MYSQL_OPT_RECONNECT
+   /* since 5.0.3, the default for this option is 0 if not 
specified.
+* we want the old behaviour */
+   {
+   long reconnect = 1;
+   mysql_options(H-server, MYSQL_OPT_RECONNECT, (const 
char*)reconnect);
+   }
+#endif
+
init_cmd = pdo_attr_strval(driver_options, 
PDO_MYSQL_ATTR_INIT_COMMAND, NULL TSRMLS_CC);
if (init_cmd) {
if (mysql_options(H-server, MYSQL_INIT_COMMAND, (const 
char *)init_cmd)) {

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



[PHP-CVS] cvs: php-src(PHP_5_1) /ext/pdo_mysql mysql_driver.c

2006-03-22 Thread Pierre-Alain Joye
pajoye  Thu Mar 23 01:24:36 2006 UTC

  Modified files:  (Branch: PHP_5_1)
/php-src/ext/pdo_mysql  mysql_driver.c 
  Log:
  - Fixed fetching of string value bigger than 128bytes when no options
are used
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo_mysql/mysql_driver.c?r1=1.59.2.11r2=1.59.2.12diff_format=u
Index: php-src/ext/pdo_mysql/mysql_driver.c
diff -u php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.11 
php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.12
--- php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.11  Fri Mar 17 00:15:09 2006
+++ php-src/ext/pdo_mysql/mysql_driver.cThu Mar 23 01:24:36 2006
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: mysql_driver.c,v 1.59.2.11 2006/03/17 00:15:09 iliaa Exp $ */
+/* $Id: mysql_driver.c,v 1.59.2.12 2006/03/23 01:24:36 pajoye Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -440,6 +440,7 @@
}

dbh-driver_data = H;
+   H-max_buffer_size = 1024*1024;
 
/* handle MySQL options */
if (driver_options) {
@@ -449,7 +450,7 @@
 
H-buffered = pdo_attr_lval(driver_options, 
PDO_MYSQL_ATTR_USE_BUFFERED_QUERY, 0 TSRMLS_CC);
H-emulate_prepare = pdo_attr_lval(driver_options, 
PDO_MYSQL_ATTR_DIRECT_QUERY, 0 TSRMLS_CC);
-   H-max_buffer_size = pdo_attr_lval(driver_options, 
PDO_MYSQL_ATTR_MAX_BUFFER_SIZE, 1024 * 1024 TSRMLS_CC);
+   H-max_buffer_size = pdo_attr_lval(driver_options, 
PDO_MYSQL_ATTR_MAX_BUFFER_SIZE, H-max_buffer_size TSRMLS_CC);
 
if (mysql_options(H-server, MYSQL_OPT_CONNECT_TIMEOUT, (const 
char *)connect_timeout)) {
pdo_mysql_error(dbh);

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



[PHP-CVS] cvs: php-src(PHP_5_1) /ext/pdo_mysql mysql_driver.c

2006-03-16 Thread Ilia Alshanetsky
iliaa   Fri Mar 17 00:15:09 2006 UTC

  Modified files:  (Branch: PHP_5_1)
/php-src/ext/pdo_mysql  mysql_driver.c 
  Log:
  Allow PDO_MYSQL_ATTR_DIRECT_QUERY to be set via constructor
  Allow getAttribute() to fetch MySQL specific attributes.
  Eliminate unnecessary auto-commit call on connect.
  
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo_mysql/mysql_driver.c?r1=1.59.2.10r2=1.59.2.11diff_format=u
Index: php-src/ext/pdo_mysql/mysql_driver.c
diff -u php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.10 
php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.11
--- php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.10  Sun Mar  5 17:18:01 2006
+++ php-src/ext/pdo_mysql/mysql_driver.cFri Mar 17 00:15:09 2006
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: mysql_driver.c,v 1.59.2.10 2006/03/05 17:18:01 iliaa Exp $ */
+/* $Id: mysql_driver.c,v 1.59.2.11 2006/03/17 00:15:09 iliaa Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -362,6 +362,14 @@
ZVAL_LONG(return_value, H-buffered);
return 1;
 
+   case PDO_MYSQL_ATTR_DIRECT_QUERY:
+   ZVAL_LONG(return_value, H-emulate_prepare);
+   return 1;
+
+   case PDO_MYSQL_ATTR_MAX_BUFFER_SIZE:
+   ZVAL_LONG(return_value, H-max_buffer_size);
+   return 1;
+
default:
return 0;   
}
@@ -440,7 +448,7 @@
char *init_cmd = NULL, *default_file = NULL, *default_group = 
NULL;
 
H-buffered = pdo_attr_lval(driver_options, 
PDO_MYSQL_ATTR_USE_BUFFERED_QUERY, 0 TSRMLS_CC);
-
+   H-emulate_prepare = pdo_attr_lval(driver_options, 
PDO_MYSQL_ATTR_DIRECT_QUERY, 0 TSRMLS_CC);
H-max_buffer_size = pdo_attr_lval(driver_options, 
PDO_MYSQL_ATTR_MAX_BUFFER_SIZE, 1024 * 1024 TSRMLS_CC);
 
if (mysql_options(H-server, MYSQL_OPT_CONNECT_TIMEOUT, (const 
char *)connect_timeout)) {
@@ -497,7 +505,9 @@
goto cleanup;
}
 
-   mysql_handle_autocommit(dbh TSRMLS_CC);
+   if (!dbh-auto_commit) {
+   mysql_handle_autocommit(dbh TSRMLS_CC);
+   }
 
H-attached = 1;
 

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



[PHP-CVS] cvs: php-src(PHP_5_1) /ext/pdo_mysql mysql_driver.c

2005-12-25 Thread Ilia Alshanetsky
iliaa   Sun Dec 25 20:30:40 2005 EDT

  Modified files:  (Branch: PHP_5_1)
/php-src/ext/pdo_mysql  mysql_driver.c 
  Log:
  Make MySQL driver use ANSI complaint quoting style.
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/pdo_mysql/mysql_driver.c?r1=1.59.2.6r2=1.59.2.7diff_format=u
Index: php-src/ext/pdo_mysql/mysql_driver.c
diff -u php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.6 
php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.7
--- php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.6   Fri Nov 25 12:56:04 2005
+++ php-src/ext/pdo_mysql/mysql_driver.cSun Dec 25 20:30:40 2005
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: mysql_driver.c,v 1.59.2.6 2005/11/25 12:56:04 tony2001 Exp $ */
+/* $Id: mysql_driver.c,v 1.59.2.7 2005/12/25 20:30:40 iliaa Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -266,7 +266,7 @@
pdo_mysql_db_handle *H = (pdo_mysql_db_handle *)dbh-driver_data;
*quoted = safe_emalloc(2, unquotedlen, 3);
*quotedlen = mysql_real_escape_string(H-server, *quoted + 1, unquoted, 
unquotedlen);
-   (*quoted)[0] =(*quoted)[++*quotedlen] = '';
+   (*quoted)[0] =(*quoted)[++*quotedlen] = '\'';
(*quoted)[++*quotedlen] = '\0';
return 1;
 }

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



[PHP-CVS] cvs: php-src(PHP_5_1) /ext/pdo_mysql mysql_driver.c pdo_mysql.c php_pdo_mysql_int.h

2005-10-27 Thread Antony Dovgal
tony2001Thu Oct 27 13:34:24 2005 EDT

  Modified files:  (Branch: PHP_5_1)
/php-src/ext/pdo_mysql  mysql_driver.c pdo_mysql.c 
php_pdo_mysql_int.h 
  Log:
  MFH: add MySQL options and corresponding constants
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo_mysql/mysql_driver.c?r1=1.59.2.3r2=1.59.2.4ty=u
Index: php-src/ext/pdo_mysql/mysql_driver.c
diff -u php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.3 
php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.4
--- php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.3   Wed Oct  5 18:14:52 2005
+++ php-src/ext/pdo_mysql/mysql_driver.cThu Oct 27 13:34:24 2005
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: mysql_driver.c,v 1.59.2.3 2005/10/05 22:14:52 tony2001 Exp $ */
+/* $Id: mysql_driver.c,v 1.59.2.4 2005/10/27 17:34:24 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -420,12 +420,50 @@
/* handle MySQL options */
if (driver_options) {
long connect_timeout = pdo_attr_lval(driver_options, 
PDO_ATTR_TIMEOUT, 30 TSRMLS_CC);
+   long local_infile = pdo_attr_lval(driver_options, 
PDO_MYSQL_ATTR_LOCAL_INFILE, 0 TSRMLS_CC);
+   char *init_cmd = NULL, *default_file = NULL, *default_group = 
NULL;
+
H-buffered = pdo_attr_lval(driver_options, 
PDO_MYSQL_ATTR_USE_BUFFERED_QUERY, 0 TSRMLS_CC);
 
if (mysql_options(H-server, MYSQL_OPT_CONNECT_TIMEOUT, (const 
char *)connect_timeout)) {
pdo_mysql_error(dbh);
goto cleanup;
}
+   
+   if (mysql_options(H-server, MYSQL_OPT_LOCAL_INFILE, (const 
char *)local_infile)) {
+   pdo_mysql_error(dbh);
+   goto cleanup;
+   }
+
+   init_cmd = pdo_attr_strval(driver_options, 
PDO_MYSQL_ATTR_INIT_COMMAND, NULL TSRMLS_CC);
+   if (init_cmd) {
+   if (mysql_options(H-server, MYSQL_INIT_COMMAND, (const 
char *)init_cmd)) {
+   efree(init_cmd);
+   pdo_mysql_error(dbh);
+   goto cleanup;
+   }
+   efree(init_cmd);
+   }
+   
+   default_file = pdo_attr_strval(driver_options, 
PDO_MYSQL_ATTR_READ_DEFAULT_FILE, NULL TSRMLS_CC);
+   if (default_file) {
+   if (mysql_options(H-server, MYSQL_READ_DEFAULT_FILE, 
(const char *)default_file)) {
+   efree(default_file);
+   pdo_mysql_error(dbh);
+   goto cleanup;
+   }
+   efree(default_file);
+   }
+   
+   default_group= pdo_attr_strval(driver_options, 
PDO_MYSQL_ATTR_READ_DEFAULT_GROUP, NULL TSRMLS_CC);
+   if (default_group) {
+   if (mysql_options(H-server, MYSQL_READ_DEFAULT_GROUP, 
(const char *)default_group)) {
+   efree(default_group);
+   pdo_mysql_error(dbh);
+   goto cleanup;
+   }
+   efree(default_group);
+   }
}
 
dbname = vars[1].optval;
http://cvs.php.net/diff.php/php-src/ext/pdo_mysql/pdo_mysql.c?r1=1.8.2.4r2=1.8.2.5ty=u
Index: php-src/ext/pdo_mysql/pdo_mysql.c
diff -u php-src/ext/pdo_mysql/pdo_mysql.c:1.8.2.4 
php-src/ext/pdo_mysql/pdo_mysql.c:1.8.2.5
--- php-src/ext/pdo_mysql/pdo_mysql.c:1.8.2.4   Sat Oct  1 15:19:36 2005
+++ php-src/ext/pdo_mysql/pdo_mysql.c   Thu Oct 27 13:34:24 2005
@@ -16,7 +16,7 @@
   +--+
 */
 
-/* $Id: pdo_mysql.c,v 1.8.2.4 2005/10/01 19:19:36 wez Exp $ */
+/* $Id: pdo_mysql.c,v 1.8.2.5 2005/10/27 17:34:24 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -76,6 +76,10 @@
 PHP_MINIT_FUNCTION(pdo_mysql)
 {
REGISTER_PDO_CLASS_CONST_LONG(MYSQL_ATTR_USE_BUFFERED_QUERY, 
(long)PDO_MYSQL_ATTR_USE_BUFFERED_QUERY);
+   REGISTER_PDO_CLASS_CONST_LONG(MYSQL_ATTR_LOCAL_INFILE, 
(long)PDO_MYSQL_ATTR_LOCAL_INFILE);
+   REGISTER_PDO_CLASS_CONST_LONG(MYSQL_ATTR_INIT_COMMAND, 
(long)PDO_MYSQL_ATTR_INIT_COMMAND);
+   REGISTER_PDO_CLASS_CONST_LONG(MYSQL_ATTR_READ_DEFAULT_FILE, 
(long)PDO_MYSQL_ATTR_READ_DEFAULT_FILE);
+   REGISTER_PDO_CLASS_CONST_LONG(MYSQL_ATTR_READ_DEFAULT_GROUP, 
(long)PDO_MYSQL_ATTR_READ_DEFAULT_GROUP);
 
return php_pdo_register_driver(pdo_mysql_driver);
 }
http://cvs.php.net/diff.php/php-src/ext/pdo_mysql/php_pdo_mysql_int.h?r1=1.16r2=1.16.2.1ty=u
Index: php-src/ext/pdo_mysql/php_pdo_mysql_int.h
diff -u php-src/ext/pdo_mysql/php_pdo_mysql_int.h:1.16 
php-src/ext/pdo_mysql/php_pdo_mysql_int.h:1.16.2.1
--- 

[PHP-CVS] cvs: php-src(PHP_5_1) /ext/pdo_mysql mysql_driver.c

2005-10-05 Thread Antony Dovgal
tony2001Wed Oct  5 18:14:54 2005 EDT

  Modified files:  (Branch: PHP_5_1)
/php-src/ext/pdo_mysql  mysql_driver.c 
  Log:
  use the right constant name in error messages
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo_mysql/mysql_driver.c?r1=1.59.2.2r2=1.59.2.3ty=u
Index: php-src/ext/pdo_mysql/mysql_driver.c
diff -u php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.2 
php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.3
--- php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.2   Wed Sep 14 11:34:58 2005
+++ php-src/ext/pdo_mysql/mysql_driver.cWed Oct  5 18:14:52 2005
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: mysql_driver.c,v 1.59.2.2 2005/09/14 15:34:58 iliaa Exp $ */
+/* $Id: mysql_driver.c,v 1.59.2.3 2005/10/05 22:14:52 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -75,7 +75,7 @@
Cannot execute queries while other unbuffered 
queries are active.  
Consider using PDOStatement::fetchAll().  
Alternatively, if your code 
is only ever going to run against mysql, you 
may enable query 
-   buffering by setting the 
PDO_MYSQL_ATTR_USE_BUFFERED_QUERY attribute.,
+   buffering by setting the 
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.,
dbh-is_persistent);
}
} else { /* no error */

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



[PHP-CVS] cvs: php-src(PHP_5_1) /ext/pdo_mysql mysql_driver.c

2005-09-14 Thread Ilia Alshanetsky
iliaa   Wed Sep 14 11:34:58 2005 EDT

  Modified files:  (Branch: PHP_5_1)
/php-src/ext/pdo_mysql  mysql_driver.c 
  Log:
  MFH: Fix error detection for queries such as OPTIMIZE
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo_mysql/mysql_driver.c?r1=1.59.2.1r2=1.59.2.2ty=u
Index: php-src/ext/pdo_mysql/mysql_driver.c
diff -u php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.1 
php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.2
--- php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.1   Wed Aug 31 00:06:10 2005
+++ php-src/ext/pdo_mysql/mysql_driver.cWed Sep 14 11:34:58 2005
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: mysql_driver.c,v 1.59.2.1 2005/08/31 04:06:10 gschlossnagle Exp $ */
+/* $Id: mysql_driver.c,v 1.59.2.2 2005/09/14 15:34:58 iliaa Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -234,8 +234,13 @@
pdo_mysql_error(dbh);
return -1;
} else {
-   my_ulonglong c= mysql_affected_rows(H-server);
-   return c != (my_ulonglong)-1 ? c:(pdo_mysql_error(dbh),-1); 
+   my_ulonglong c = mysql_affected_rows(H-server);
+   if (c != (my_ulonglong) -1) {
+   pdo_mysql_error(dbh);
+   return (H-einfo.errcode ? -1 : 0);
+   } else {
+   return c;
+   }
}
 }
 

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



[PHP-CVS] cvs: php-src(PHP_5_1) /ext/pdo_mysql mysql_driver.c

2005-08-30 Thread George Schlossnagle
gschlossnagle   Wed Aug 31 00:06:11 2005 EDT

  Modified files:  (Branch: PHP_5_1)
/php-src/ext/pdo_mysql  mysql_driver.c 
  Log:
  MFH, fix 34072
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo_mysql/mysql_driver.c?r1=1.59r2=1.59.2.1ty=u
Index: php-src/ext/pdo_mysql/mysql_driver.c
diff -u php-src/ext/pdo_mysql/mysql_driver.c:1.59 
php-src/ext/pdo_mysql/mysql_driver.c:1.59.2.1
--- php-src/ext/pdo_mysql/mysql_driver.c:1.59   Tue Jul 19 23:38:32 2005
+++ php-src/ext/pdo_mysql/mysql_driver.cWed Aug 31 00:06:10 2005
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: mysql_driver.c,v 1.59 2005/07/20 03:38:32 iliaa Exp $ */
+/* $Id: mysql_driver.c,v 1.59.2.1 2005/08/31 04:06:10 gschlossnagle Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include config.h
@@ -188,6 +188,13 @@

if (mysql_stmt_prepare(S-stmt, sql, sql_len)) {
/* TODO: might need to pull statement specific info here? */
+   /* if the query isn't supported by the protocol, fallback to 
emulation */
+   if (mysql_errno(H-server) == 1295) {
+   if (nsql) {
+   efree(nsql);
+   }
+   goto fallback;
+   }
pdo_mysql_error(dbh);
if (nsql) {
efree(nsql);
@@ -212,9 +219,9 @@
 
return 1;
 
-#else
-   stmt-supports_placeholders = PDO_PLACEHOLDER_NONE;
+fallback:
 #endif
+   stmt-supports_placeholders = PDO_PLACEHOLDER_NONE;

return 1;
 }
@@ -388,7 +395,7 @@
 #endif
;
 
-   php_pdo_parse_data_source(dbh-data_source, dbh-data_source_len, vars, 
4);
+   php_pdo_parse_data_source(dbh-data_source, dbh-data_source_len, vars, 
5);
 
H = pecalloc(1, sizeof(pdo_mysql_db_handle), dbh-is_persistent);

@@ -415,14 +422,15 @@
goto cleanup;
}
}
-   
+
+   dbname = vars[1].optval;
+   host = vars[2].optval;  
+   if(vars[3].optval) {
+   port = atoi(vars[3].optval);
+   }
if (vars[2].optval  !strcmp(localhost, vars[2].optval)) {
unix_socket = vars[4].optval;  
-   } else {
-   host = vars[2].optval;
-   port = atoi(vars[3].optval); 
}
-   dbname = vars[1].optval;
if (mysql_real_connect(H-server, host, dbh-username, dbh-password, 
dbname, port, unix_socket, connect_opts) == NULL) {
pdo_mysql_error(dbh);
goto cleanup;

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