From: Ilia Alshanetsky Date: Sun, 5 Mar 2006 17:17:04 +0000 (+0000) Subject: Fixed bug #36572 (Added PDO::MYSQL_ATTR_DIRECT_QUERY constant that show be X-Git-Tag: RELEASE_1_3~535 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d9b2a3372e7d7955d8ea1ef45ef09ce69ee00c32;p=php 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. --- diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c index 3c7b0c5851..5114ca573f 100755 --- a/ext/pdo_mysql/mysql_driver.c +++ b/ext/pdo_mysql/mysql_driver.c @@ -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; } diff --git a/ext/pdo_mysql/pdo_mysql.c b/ext/pdo_mysql/pdo_mysql.c index 972cee7397..4e62fa44ad 100755 --- a/ext/pdo_mysql/pdo_mysql.c +++ b/ext/pdo_mysql/pdo_mysql.c @@ -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); } diff --git a/ext/pdo_mysql/php_pdo_mysql_int.h b/ext/pdo_mysql/php_pdo_mysql_int.h index 85af4731dd..0ae9486c0a 100755 --- a/ext/pdo_mysql/php_pdo_mysql_int.h +++ b/ext/pdo_mysql/php_pdo_mysql_int.h @@ -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