diff options
| author | Ilia Alshanetsky <iliaa@php.net> | 2005-06-24 19:45:59 +0000 |
|---|---|---|
| committer | Ilia Alshanetsky <iliaa@php.net> | 2005-06-24 19:45:59 +0000 |
| commit | 348c0cddae153a7875973a3f673eb01710202e45 (patch) | |
| tree | 65cfab508cf8f6bdba410d62b4dc40602a193564 /ext/pdo_mysql/mysql_driver.c | |
| parent | e956cc30d784d34fc4a1dc6fdc7d719d63427ed4 (diff) | |
| download | php-git-348c0cddae153a7875973a3f673eb01710202e45.tar.gz | |
Added PDO_MYSQL_ATTR_USE_BUFFERED_QUERY parameter for pdo_mysql, to toggle
usage of buffered queries.
Diffstat (limited to 'ext/pdo_mysql/mysql_driver.c')
| -rwxr-xr-x | ext/pdo_mysql/mysql_driver.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/ext/pdo_mysql/mysql_driver.c b/ext/pdo_mysql/mysql_driver.c index b7647269b9..293a822aff 100755 --- a/ext/pdo_mysql/mysql_driver.c +++ b/ext/pdo_mysql/mysql_driver.c @@ -37,6 +37,7 @@ const char *pdo_mysql_get_sqlstate(unsigned int my_errno) { switch (my_errno) { /* import auto-generated case: code */ #include "php_pdo_mysql_sqlstate.h" + case 2014: return "PDDRV"; /* out of sync */ default: return "HY000"; } } @@ -66,7 +67,11 @@ int _pdo_mysql_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char *file, int lin } if (einfo->errcode) { - einfo->errmsg = pestrdup(mysql_error(H->server), dbh->is_persistent); + if (2014 != einfo->errcode) { + einfo->errmsg = pestrdup(mysql_error(H->server), dbh->is_persistent); + } else { + einfo->errmsg = pestrdup("Cannot execute queries, while other unbuffered queries are active. To enable query buffering set PDO_MYSQL_ATTR_USE_BUFFERED_QUERY attribute.", dbh->is_persistent); + } } else { /* no error */ strcpy(*pdo_err, PDO_ERR_NONE); return 0; @@ -208,6 +213,10 @@ static int pdo_mysql_set_attribute(pdo_dbh_t *dbh, long attr, zval *val TSRMLS_D mysql_handle_autocommit(dbh TSRMLS_CC); } return 1; + + case PDO_MYSQL_ATTR_USE_BUFFERED_QUERY: + ((pdo_mysql_db_handle *)dbh->driver_data)->buffered = Z_BVAL_P(val); + return 1; default: return 0; @@ -247,6 +256,10 @@ static int pdo_mysql_get_attribute(pdo_dbh_t *dbh, long attr, zval *return_value ZVAL_LONG(return_value, dbh->auto_commit); return 1; + case PDO_MYSQL_ATTR_USE_BUFFERED_QUERY: + ZVAL_LONG(return_value, H->buffered); + return 1; + default: return 0; } @@ -309,6 +322,7 @@ static int pdo_mysql_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_ /* handle MySQL options */ if (driver_options) { long connect_timeout = pdo_attr_lval(driver_options, PDO_ATTR_TIMEOUT, 30 TSRMLS_CC); + H->buffered = pdo_attr_lval(driver_options, PDO_MYSQL_ATTR_USE_BUFFERED_QUERY, 0 TSRMLS_CC); if (mysql_options(H->server, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&connect_timeout)) { pdo_mysql_error(dbh); |
