]> granicus.if.org Git - php/commitdiff
Add PDO_ATTR_TIMEOUT support.
authorWez Furlong <wez@php.net>
Wed, 9 Feb 2005 07:00:00 +0000 (07:00 +0000)
committerWez Furlong <wez@php.net>
Wed, 9 Feb 2005 07:00:00 +0000 (07:00 +0000)
Fix PECL Bug #3391

ext/pdo_sqlite/sqlite_driver.c
ext/pdo_sqlite/sqlite_statement.c

index 8ba33d1dd9503e0b844cf46bf8993f539129b41c..c51e68ad3d8d9a8bf5816ecc97a934c5a52614c5 100644 (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,
index 1bd47b518bdb0abb54478741d59dcbd89c020482..a2f5ca0826a62f90981f3e3206373824a93a476d 100644 (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),