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

Added missing constant for MAX_BUFFER_SIZE.

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

index 3c7b0c5851639109344f7db22c5986cc6a4111e0..5114ca573f294850d0c82cd9fe7c6b068fb5792e 100755 (executable)
@@ -160,6 +160,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
@@ -221,6 +225,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;
@@ -303,7 +308,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 972cee7397c22ab6baa59ea4ef3ce29360e35ce4..4e62fa44ad6a39a9db788f040c093b525095dd04 100755 (executable)
@@ -80,6 +80,8 @@ PHP_MINIT_FUNCTION(pdo_mysql)
        REGISTER_PDO_CONST_LONG("MYSQL_ATTR_INIT_COMMAND", (long)PDO_MYSQL_ATTR_INIT_COMMAND);
        REGISTER_PDO_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_FILE", (long)PDO_MYSQL_ATTR_READ_DEFAULT_FILE);
        REGISTER_PDO_CONST_LONG("MYSQL_ATTR_READ_DEFAULT_GROUP", (long)PDO_MYSQL_ATTR_READ_DEFAULT_GROUP);
+       REGISTER_PDO_CONST_LONG("MYSQL_ATTR_MAX_BUFFER_SIZE", (long)PDO_MYSQL_ATTR_MAX_BUFFER_SIZE);
+       REGISTER_PDO_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