summaryrefslogtreecommitdiff
path: root/ext/pdo_sqlite
diff options
context:
space:
mode:
Diffstat (limited to 'ext/pdo_sqlite')
-rw-r--r--ext/pdo_sqlite/config.m44
-rw-r--r--ext/pdo_sqlite/sqlite_driver.c56
-rw-r--r--ext/pdo_sqlite/tests/bug48773.phpt4
-rw-r--r--ext/pdo_sqlite/tests/pdo_fetch_func_001.phpt4
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,