summaryrefslogtreecommitdiff
path: root/ext/pdo_mysql
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2006-03-05 17:18:01 +0000
committerIlia Alshanetsky <iliaa@php.net>2006-03-05 17:18:01 +0000
commit41de805a9d43ed9a6dbe351e5ed1aa1f52cb9641 (patch)
treeadee4d5827ed5522ebb5f053b01aad5ba757b1b4 /ext/pdo_mysql
parente43a77d84c28bf678c8e548b980b4b23dd21bdd1 (diff)
downloadphp-git-41de805a9d43ed9a6dbe351e5ed1aa1f52cb9641.tar.gz
MFH:
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.
Diffstat (limited to 'ext/pdo_mysql')
-rwxr-xr-xext/pdo_mysql/mysql_driver.c9
-rwxr-xr-xext/pdo_mysql/pdo_mysql.c2
-rwxr-xr-xext/pdo_mysql/php_pdo_mysql_int.h2
3 files changed, 12 insertions, 1 deletions
diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c
index 500cf072ed..318fb15473 100755
--- a/ext/pdo_mysql/mysql_driver.c
+++ b/ext/pdo_mysql/mysql_driver.c
@@ -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;
}
diff --git a/ext/pdo_mysql/pdo_mysql.c b/ext/pdo_mysql/pdo_mysql.c
index 59c48b9449..a3d4c12c09 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_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);
}
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