]> granicus.if.org Git - php/commitdiff
MFH:
authorIlia Alshanetsky <iliaa@php.net>
Sun, 5 Mar 2006 17:18:01 +0000 (17:18 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Sun, 5 Mar 2006 17:18:01 +0000 (17:18 +0000)
Fixed bug #36572 (Added PDO::MYSQL_ATTR_DIRECT_QUERY constant that show be
set when executing internal queries such as "show master status" via MySQL).

Added missing constant for MAX_BUFFER_SIZE.

NEWS
ext/pdo_mysql/mysql_driver.c
ext/pdo_mysql/pdo_mysql.c
ext/pdo_mysql/php_pdo_mysql_int.h

diff --git a/NEWS b/NEWS
index 2d123abd65a2cb490d796753b1f75833a202b9be..95f28fa59ab217debdde5c5c913a4de168c33a02 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -42,6 +42,9 @@ PHP                                                                        NEWS
 - Fixed bug #36599 (DATE_W3C format constant incorrect). (Derick)
 - Fixed bug #36575 (SOAP: Incorrect complex type instantiation with
   hierarchies). (Dmitry)
+- Fixed bug #36572 (Added PDO::MYSQL_ATTR_DIRECT_QUERY constant that show be
+  set when executing internal queries such as "show master status" via MySQL).
+  (Ilia)
 - Fixed bug #36510 (strtotime() fails to parse date strings with tabs). (Ilia,
   Derick)
 - Fixed bug #36459 (Incorrect adding PHPSESSID to links, which contains \r\n).
index 500cf072ede153d37ae71a141e10936c3a72e718..318fb154733d33db55c9cbf7daa794037f942419 100755 (executable)
@@ -169,6 +169,10 @@ static int mysql_handle_preparer(pdo_dbh_t *dbh, const char *sql, long sql_len,
        stmt->driver_data = S;
        stmt->methods = &mysql_stmt_methods;
 
+       if (H->emulate_prepare) {
+               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
@@ -230,6 +234,7 @@ static int mysql_handle_preparer(pdo_dbh_t *dbh, const char *sql, long sql_len,
 
 fallback:
 #endif
+end:
        stmt->supports_placeholders = PDO_PLACEHOLDER_NONE;
        
        return 1;
@@ -312,7 +317,9 @@ static int pdo_mysql_set_attribute(pdo_dbh_t *dbh, long attr, zval *val TSRMLS_D
        case PDO_MYSQL_ATTR_USE_BUFFERED_QUERY:
                ((pdo_mysql_db_handle *)dbh->driver_data)->buffered = Z_BVAL_P(val);
                return 1;
-               
+       case PDO_MYSQL_ATTR_DIRECT_QUERY:
+               ((pdo_mysql_db_handle *)dbh->driver_data)->emulate_prepare = Z_BVAL_P(val);
+               return 1;
        default:
                return 0;
        }
index 59c48b94498bea833069afa2fcfb8e98e32b781b..a3d4c12c09e0e9cb4f5fd3bef310814118744d7a 100755 (executable)
@@ -80,6 +80,8 @@ PHP_MINIT_FUNCTION(pdo_mysql)
        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);
+       REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_MAX_BUFFER_SIZE", (long)PDO_MYSQL_ATTR_MAX_BUFFER_SIZE);
+       REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_DIRECT_QUERY", (long)PDO_MYSQL_ATTR_DIRECT_QUERY);
 
        return php_pdo_register_driver(&pdo_mysql_driver);
 }
index 85af4731dd4f5a42b1b84b4e7b4b55a35c6af747..0ae9486c0a15319f5418c55ff49236c693741a4b 100755 (executable)
@@ -37,6 +37,7 @@ typedef struct {
 
        unsigned attached:1;
        unsigned buffered:1;
+       unsigned emulate_prepare:1;
        unsigned _reserved:31;
        unsigned long max_buffer_size;
 
@@ -84,5 +85,6 @@ enum {
        PDO_MYSQL_ATTR_READ_DEFAULT_FILE,
        PDO_MYSQL_ATTR_READ_DEFAULT_GROUP,
        PDO_MYSQL_ATTR_MAX_BUFFER_SIZE,
+       PDO_MYSQL_ATTR_DIRECT_QUERY,
 };
 #endif