Add PDO_ATTR_TIMEOUT support.

Fix PECL Bug #3391
This commit is contained in:
Wez Furlong 2005-02-09 07:00:00 +00:00
parent f6aa8f5d90
commit 211206b2e4
2 changed files with 26 additions and 5 deletions

View file

@ -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,

View file

@ -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),