diff options
Diffstat (limited to 'ext/pdo_sqlite')
| -rw-r--r-- | ext/pdo_sqlite/config.m4 | 4 | ||||
| -rw-r--r-- | ext/pdo_sqlite/sqlite_driver.c | 56 | ||||
| -rw-r--r-- | ext/pdo_sqlite/tests/bug48773.phpt | 4 | ||||
| -rw-r--r-- | ext/pdo_sqlite/tests/pdo_fetch_func_001.phpt | 4 | 
4 files changed, 40 insertions, 28 deletions
diff --git a/ext/pdo_sqlite/config.m4 b/ext/pdo_sqlite/config.m4 index 44b22b6320..b050eea4f1 100644 --- a/ext/pdo_sqlite/config.m4 +++ b/ext/pdo_sqlite/config.m4 @@ -68,6 +68,9 @@ if test "$PHP_PDO_SQLITE" != "no"; then      PHP_CHECK_LIBRARY(sqlite3,sqlite3_key,[        AC_DEFINE(HAVE_SQLITE3_KEY,1, [have commercial sqlite3 with crypto support])      ]) +    PHP_CHECK_LIBRARY(sqlite3,sqlite3_close_v2,[ +      AC_DEFINE(HAVE_SQLITE3_CLOSE_V2, 1, [have sqlite3_close_v2]) +    ])      PHP_SUBST(PDO_SQLITE_SHARED_LIBADD)      PHP_NEW_EXTENSION(pdo_sqlite, $php_pdo_sqlite_sources_core, $ext_shared,,-I$pdo_cv_inc_path) @@ -79,6 +82,7 @@ if test "$PHP_PDO_SQLITE" != "no"; then          threadsafe_flags="-DSQLITE_THREADSAFE=0"        fi +      AC_DEFINE(HAVE_SQLITE3_CLOSE_V2, 1, [have sqlite3_close_v2])        other_flags="-DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_FTS5=1 -DSQLITE_CORE=1 -DSQLITE_ENABLE_COLUMN_METADATA=1"  	  dnl As long as intl is not shared we can have ICU support diff --git a/ext/pdo_sqlite/sqlite_driver.c b/ext/pdo_sqlite/sqlite_driver.c index f9a2a4d04f..2bf452a88a 100644 --- a/ext/pdo_sqlite/sqlite_driver.c +++ b/ext/pdo_sqlite/sqlite_driver.c @@ -161,7 +161,11 @@ static int sqlite_handle_closer(pdo_dbh_t *dbh) /* {{{ */  		pdo_sqlite_cleanup_callbacks(H);  		if (H->db) { +#ifdef HAVE_SQLITE3_CLOSE_V2 +			sqlite3_close_v2(H->db); +#else  			sqlite3_close(H->db); +#endif  			H->db = NULL;  		}  		if (einfo->errmsg) { @@ -193,7 +197,7 @@ static int sqlite_handle_preparer(pdo_dbh_t *dbh, const char *sql, size_t sql_le  		return 0;  	} -	i = sqlite3_prepare(H->db, sql, sql_len, &S->stmt, &tail); +	i = sqlite3_prepare_v2(H->db, sql, sql_len, &S->stmt, &tail);  	if (i == SQLITE_OK) {  		return 1;  	} @@ -515,25 +519,27 @@ static PHP_METHOD(SQLite, sqliteCreateFunction)  	size_t func_name_len;  	zend_long argc = -1;  	zend_long flags = 0; -	zend_string *cbname = NULL;  	pdo_dbh_t *dbh;  	pdo_sqlite_db_handle *H;  	int ret; -	if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "sz|ll", -			&func_name, &func_name_len, &callback, &argc, &flags)) { -		RETURN_FALSE; -	} +	ZEND_PARSE_PARAMETERS_START(2, 4) +		Z_PARAM_STRING(func_name, func_name_len) +		Z_PARAM_ZVAL(callback) +		Z_PARAM_OPTIONAL +		Z_PARAM_LONG(argc) +		Z_PARAM_LONG(flags) +	ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);  	dbh = Z_PDO_DBH_P(getThis());  	PDO_CONSTRUCT_CHECK; -	if (!zend_is_callable(callback, 0, &cbname)) { +	if (!zend_is_callable(callback, 0, NULL)) { +		zend_string *cbname = zend_get_callable_name(callback);  		php_error_docref(NULL, E_WARNING, "function '%s' is not callable", ZSTR_VAL(cbname));  		zend_string_release(cbname);  		RETURN_FALSE;  	} -	zend_string_release(cbname);  	H = (pdo_sqlite_db_handle *)dbh->driver_data; @@ -585,31 +591,34 @@ static PHP_METHOD(SQLite, sqliteCreateAggregate)  	char *func_name;  	size_t func_name_len;  	zend_long argc = -1; -	zend_string *cbname = NULL;  	pdo_dbh_t *dbh;  	pdo_sqlite_db_handle *H;  	int ret; -	if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "szz|l", -			&func_name, &func_name_len, &step_callback, &fini_callback, &argc)) { -		RETURN_FALSE; -	} +	ZEND_PARSE_PARAMETERS_START(3, 4) +		Z_PARAM_STRING(func_name, func_name_len) +		Z_PARAM_ZVAL(step_callback) +		Z_PARAM_ZVAL(fini_callback) +		Z_PARAM_OPTIONAL +		Z_PARAM_LONG(argc) +	ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);  	dbh = Z_PDO_DBH_P(getThis());  	PDO_CONSTRUCT_CHECK; -	if (!zend_is_callable(step_callback, 0, &cbname)) { +	if (!zend_is_callable(step_callback, 0, NULL)) { +		zend_string *cbname = zend_get_callable_name(step_callback);  		php_error_docref(NULL, E_WARNING, "function '%s' is not callable", ZSTR_VAL(cbname));  		zend_string_release(cbname);  		RETURN_FALSE;  	} -	zend_string_release(cbname); -	if (!zend_is_callable(fini_callback, 0, &cbname)) { + +	if (!zend_is_callable(fini_callback, 0, NULL)) { +		zend_string *cbname = zend_get_callable_name(fini_callback);  		php_error_docref(NULL, E_WARNING, "function '%s' is not callable", ZSTR_VAL(cbname));  		zend_string_release(cbname);  		RETURN_FALSE;  	} -	zend_string_release(cbname);  	H = (pdo_sqlite_db_handle *)dbh->driver_data; @@ -645,25 +654,24 @@ static PHP_METHOD(SQLite, sqliteCreateCollation)  	zval *callback;  	char *collation_name;  	size_t collation_name_len; -	zend_string *cbname = NULL;  	pdo_dbh_t *dbh;  	pdo_sqlite_db_handle *H;  	int ret; -	if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "sz", -		&collation_name, &collation_name_len, &callback)) { -		RETURN_FALSE; -	} +	ZEND_PARSE_PARAMETERS_START(2, 2) +		Z_PARAM_STRING(collation_name, collation_name_len) +		Z_PARAM_ZVAL(callback) +	ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);  	dbh = Z_PDO_DBH_P(getThis());  	PDO_CONSTRUCT_CHECK; -	if (!zend_is_callable(callback, 0, &cbname)) { +	if (!zend_is_callable(callback, 0, NULL)) { +		zend_string *cbname = zend_get_callable_name(callback);  		php_error_docref(NULL, E_WARNING, "function '%s' is not callable", ZSTR_VAL(cbname));  		zend_string_release(cbname);  		RETURN_FALSE;  	} -	zend_string_release(cbname);  	H = (pdo_sqlite_db_handle *)dbh->driver_data; diff --git a/ext/pdo_sqlite/tests/bug48773.phpt b/ext/pdo_sqlite/tests/bug48773.phpt index b8bdea9185..c9a2f64bef 100644 --- a/ext/pdo_sqlite/tests/bug48773.phpt +++ b/ext/pdo_sqlite/tests/bug48773.phpt @@ -29,6 +29,6 @@ var_dump($stmt);  ?>  --EXPECTF--  object(bar)#%d (1) { -  [%u|b%"queryString"]=> -  %unicode|string%(8) "SELECT 1" +  ["queryString"]=> +  string(8) "SELECT 1"  } diff --git a/ext/pdo_sqlite/tests/pdo_fetch_func_001.phpt b/ext/pdo_sqlite/tests/pdo_fetch_func_001.phpt index c8cdee6f69..ea6f22c054 100644 --- a/ext/pdo_sqlite/tests/pdo_fetch_func_001.phpt +++ b/ext/pdo_sqlite/tests/pdo_fetch_func_001.phpt @@ -74,12 +74,12 @@ var_dump($st->fetchAll(PDO::FETCH_FUNC, array('bar', 'inexistent')));  ?>  --EXPECTF--  object(PDOStatement)#%d (1) { -  [%u|b%"queryString"]=> +  ["queryString"]=>    %string|unicode%(21) "SELECT * FROM testing"  }  data: 1, php  object(PDOStatement)#%d (1) { -  [%u|b%"queryString"]=> +  ["queryString"]=>    %string|unicode%(21) "SELECT * FROM testing"  }  data: 2,   | 
