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.59&r2=1.59.2.1&ty=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.c        Wed 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

Reply via email to