From: Wez Furlong Date: Wed, 9 Feb 2005 07:00:00 +0000 (+0000) Subject: Add PDO_ATTR_TIMEOUT support. X-Git-Tag: RELEASE_0_2_1~17 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=211206b2e4a68323f42a5a3b67b8de58245b75d0;p=php Add PDO_ATTR_TIMEOUT support. Fix PECL Bug #3391 --- diff --git a/ext/pdo_sqlite/sqlite_driver.c b/ext/pdo_sqlite/sqlite_driver.c index 8ba33d1dd9..c51e68ad3d 100644 --- a/ext/pdo_sqlite/sqlite_driver.c +++ b/ext/pdo_sqlite/sqlite_driver.c @@ -232,6 +232,18 @@ static int pdo_sqlite_get_attribute(pdo_dbh_t *dbh, long attr, zval *return_valu return 1; } +static int pdo_sqlite_set_attr(pdo_dbh_t *dbh, long attr, zval *val TSRMLS_DC) +{ + pdo_sqlite_db_handle *H = (pdo_sqlite_db_handle *)dbh->driver_data; + + switch (attr) { + case PDO_ATTR_TIMEOUT: + convert_to_long(val); + sqlite3_busy_timeout(H->db, Z_LVAL_P(val) * 1000); + return 1; + } +} + static PHP_FUNCTION(sqlite_create_function) { /* TODO: implement this stuff */ @@ -261,7 +273,7 @@ static struct pdo_dbh_methods sqlite_methods = { sqlite_handle_begin, sqlite_handle_commit, sqlite_handle_rollback, - NULL, /* set_attribute */ + pdo_sqlite_set_attr, pdo_sqlite_last_insert_id, pdo_sqlite_fetch_error_func, pdo_sqlite_get_attribute, diff --git a/ext/pdo_sqlite/sqlite_statement.c b/ext/pdo_sqlite/sqlite_statement.c index 1bd47b518b..a2f5ca0826 100644 --- a/ext/pdo_sqlite/sqlite_statement.c +++ b/ext/pdo_sqlite/sqlite_statement.c @@ -94,16 +94,25 @@ static int pdo_sqlite_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_d } if (param->is_param) { + + if (param->paramno == -1) { + param->paramno = sqlite3_bind_parameter_index(S->stmt, param->name) - 1; + } + switch (PDO_PARAM_TYPE(param->param_type)) { case PDO_PARAM_LOB: case PDO_PARAM_STMT: return 0; + + case PDO_PARAM_NULL: + i = sqlite3_bind_null(S->stmt, param->paramno + 1); + if (i == SQLITE_OK) + return 1; + pdo_sqlite_error_stmt(stmt); + return 0; + case PDO_PARAM_STR: default: - if (param->paramno == -1) { - param->paramno = sqlite3_bind_parameter_index(S->stmt, param->name) - 1; - } - convert_to_string(param->parameter); i = sqlite3_bind_text(S->stmt, param->paramno + 1, Z_STRVAL_P(param->parameter), Z_STRLEN_P(param->parameter),