diff options
Diffstat (limited to 'ext/sqlite3')
| -rw-r--r-- | ext/sqlite3/php_sqlite3.h | 2 | ||||
| -rw-r--r-- | ext/sqlite3/php_sqlite3_structs.h | 2 | ||||
| -rw-r--r-- | ext/sqlite3/sqlite3.c | 258 | ||||
| -rw-r--r-- | ext/sqlite3/sqlite3.stub.php | 128 | ||||
| -rw-r--r-- | ext/sqlite3/sqlite3_arginfo.h | 143 | ||||
| -rw-r--r-- | ext/sqlite3/tests/sqlite3_33_reset.phpt | 4 | ||||
| -rw-r--r-- | ext/sqlite3/tests/sqlite3_enable_exceptions.phpt | 4 |
7 files changed, 340 insertions, 201 deletions
diff --git a/ext/sqlite3/php_sqlite3.h b/ext/sqlite3/php_sqlite3.h index ca09e341ab..9dff343f90 100644 --- a/ext/sqlite3/php_sqlite3.h +++ b/ext/sqlite3/php_sqlite3.h @@ -1,7 +1,5 @@ /* +----------------------------------------------------------------------+ - | PHP Version 7 | - +----------------------------------------------------------------------+ | Copyright (c) The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | diff --git a/ext/sqlite3/php_sqlite3_structs.h b/ext/sqlite3/php_sqlite3_structs.h index f189ea30af..93bdc3b423 100644 --- a/ext/sqlite3/php_sqlite3_structs.h +++ b/ext/sqlite3/php_sqlite3_structs.h @@ -1,7 +1,5 @@ /* +----------------------------------------------------------------------+ - | PHP Version 7 | - +----------------------------------------------------------------------+ | Copyright (c) The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index 1c337ee6cb..e66fc1b192 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -1,7 +1,5 @@ /* +----------------------------------------------------------------------+ - | PHP Version 7 | - +----------------------------------------------------------------------+ | Copyright (c) The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | @@ -25,6 +23,7 @@ #include "ext/standard/info.h" #include "php_sqlite3.h" #include "php_sqlite3_structs.h" +#include "sqlite3_arginfo.h" #include "main/SAPI.h" #include <sqlite3.h> @@ -108,7 +107,7 @@ PHP_METHOD(sqlite3, open) db_obj = Z_SQLITE3_DB_P(object); - if (FAILURE == zend_parse_parameters_throw(ZEND_NUM_ARGS(), "p|ls", &filename, &filename_len, &flags, &encryption_key, &encryption_key_len)) { + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "p|ls", &filename, &filename_len, &flags, &encryption_key, &encryption_key_len)) { return; } @@ -322,7 +321,7 @@ PHP_METHOD(sqlite3, enableExtendedResultCodes) int ret; SQLITE3_CHECK_INITIALIZED(db_obj, db_obj->db, SQLite3) - + if (zend_parse_parameters(ZEND_NUM_ARGS(), "|b", &enable) == FAILURE) { return; } @@ -1087,7 +1086,7 @@ PHP_METHOD(sqlite3, createCollation) SQLITE3_CHECK_INITIALIZED(db_obj, db_obj->initialised, SQLite3) if (zend_parse_parameters(ZEND_NUM_ARGS(), "sz", &collation_name, &collation_name_len, &callback_func) == FAILURE) { - RETURN_FALSE; + return; } if (!collation_name_len) { @@ -1299,6 +1298,11 @@ PHP_METHOD(sqlite3, openBlob) return; } + if (ZEND_NUM_ARGS() >= 4 && CHECK_NULL_PATH(dbname, dbname_len)) { + zend_value_error("dbname must not contain NUL bytes"); + return; + } + sqlite_flags = (flags & SQLITE_OPEN_READWRITE) ? 1 : 0; if (sqlite3_blob_open(db_obj->db, dbname, table, column, rowid, sqlite_flags, &blob) != SQLITE_OK) { @@ -1367,6 +1371,13 @@ PHP_METHOD(sqlite3, backup) return; } + if ((ZEND_NUM_ARGS() >= 2 && CHECK_NULL_PATH(source_dbname, source_dbname_length)) + || (ZEND_NUM_ARGS() >= 3 && CHECK_NULL_PATH(destination_dbname, destination_dbname_length)) + ) { + zend_value_error("dbname must not contain NUL bytes"); + return; + } + destination_obj = Z_SQLITE3_DB_P(destination_zval); SQLITE3_CHECK_INITIALIZED(destination_obj, destination_obj->initialised, SQLite3) @@ -1734,9 +1745,8 @@ static int register_bound_parameter_to_sqlite(struct php_sqlite3_bound_param *pa } /* }}} */ -/* {{{ proto bool SQLite3Stmt::bindParam(int parameter_number, mixed parameter [, int type]) - Bind Parameter to a stmt variable. */ -PHP_METHOD(sqlite3stmt, bindParam) +/* {{{ Common implementation of ::bindParam() and ::bindValue */ +static void sqlite3stmt_bind(INTERNAL_FUNCTION_PARAMETERS) { php_sqlite3_stmt *stmt_obj; zval *object = ZEND_THIS; @@ -1773,42 +1783,19 @@ PHP_METHOD(sqlite3stmt, bindParam) } /* }}} */ +/* {{{ proto bool SQLite3Stmt::bindParam(int parameter_number, mixed parameter [, int type]) + Bind Parameter to a stmt variable. */ +PHP_METHOD(sqlite3stmt, bindParam) +{ + sqlite3stmt_bind(INTERNAL_FUNCTION_PARAM_PASSTHRU); +} +/* }}} */ + /* {{{ proto bool SQLite3Stmt::bindValue(int parameter_number, mixed parameter [, int type]) Bind Value of a parameter to a stmt variable. */ PHP_METHOD(sqlite3stmt, bindValue) { - php_sqlite3_stmt *stmt_obj; - zval *object = ZEND_THIS; - struct php_sqlite3_bound_param param = {0}; - zval *parameter; - stmt_obj = Z_SQLITE3_STMT_P(object); - - param.param_number = -1; - param.type = SQLITE3_TEXT; - - if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), "lz|l", ¶m.param_number, ¶meter, ¶m.type) == FAILURE) { - if (zend_parse_parameters(ZEND_NUM_ARGS(), "Sz|l", ¶m.name, ¶meter, ¶m.type) == FAILURE) { - return; - } - } - - SQLITE3_CHECK_INITIALIZED(stmt_obj->db_obj, stmt_obj->initialised, SQLite3); - SQLITE3_CHECK_INITIALIZED_STMT(stmt_obj->stmt, SQLite3Stmt); - - ZVAL_COPY(¶m.parameter, parameter); - - if (ZEND_NUM_ARGS() < 3) { - PHP_SQLITE3_SET_TYPE(parameter, param); - } - - if (!register_bound_parameter_to_sqlite(¶m, stmt_obj)) { - if (!Z_ISUNDEF(param.parameter)) { - zval_ptr_dtor(&(param.parameter)); - ZVAL_UNDEF(¶m.parameter); - } - RETURN_FALSE; - } - RETURN_TRUE; + sqlite3stmt_bind(INTERNAL_FUNCTION_PARAM_PASSTHRU); } /* }}} */ @@ -1890,7 +1877,7 @@ PHP_METHOD(sqlite3stmt, __construct) stmt_obj = Z_SQLITE3_STMT_P(object); - if (zend_parse_parameters_throw(ZEND_NUM_ARGS(), "OS", &db_zval, php_sqlite3_sc_entry, &sql) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "OS", &db_zval, php_sqlite3_sc_entry, &sql) == FAILURE) { return; } @@ -2106,174 +2093,65 @@ PHP_METHOD(sqlite3result, __construct) } /* }}} */ -/* {{{ arginfo */ -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3_open, 0, 0, 1) - ZEND_ARG_INFO(0, filename) - ZEND_ARG_INFO(0, flags) - ZEND_ARG_INFO(0, encryption_key) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_sqlite3_busytimeout, 0) - ZEND_ARG_INFO(0, ms) -ZEND_END_ARG_INFO() - -#ifndef SQLITE_OMIT_LOAD_EXTENSION -ZEND_BEGIN_ARG_INFO(arginfo_sqlite3_loadextension, 0) - ZEND_ARG_INFO(0, shared_library) -ZEND_END_ARG_INFO() -#endif - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3_escapestring, 0, 0, 1) - ZEND_ARG_INFO(0, value) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3_query, 0, 0, 1) - ZEND_ARG_INFO(0, query) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3_querysingle, 0, 0, 1) - ZEND_ARG_INFO(0, query) - ZEND_ARG_INFO(0, entire_row) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3_createfunction, 0, 0, 2) - ZEND_ARG_INFO(0, name) - ZEND_ARG_INFO(0, callback) - ZEND_ARG_INFO(0, argument_count) - ZEND_ARG_INFO(0, flags) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3_createaggregate, 0, 0, 3) - ZEND_ARG_INFO(0, name) - ZEND_ARG_INFO(0, step_callback) - ZEND_ARG_INFO(0, final_callback) - ZEND_ARG_INFO(0, argument_count) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3_createcollation, 0, 0, 2) - ZEND_ARG_INFO(0, name) - ZEND_ARG_INFO(0, callback) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3_openblob, 0, 0, 3) - ZEND_ARG_INFO(0, table) - ZEND_ARG_INFO(0, column) - ZEND_ARG_INFO(0, rowid) - ZEND_ARG_INFO(0, dbname) - ZEND_ARG_INFO(0, flags) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3_enableexceptions, 0, 0, 0) - ZEND_ARG_INFO(0, enableExceptions) -ZEND_END_ARG_INFO() - -#if SQLITE_VERSION_NUMBER >= 3006011 -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3_backup, 0, 0, 1) - ZEND_ARG_INFO(0, destination_db) - ZEND_ARG_INFO(0, source_dbname) - ZEND_ARG_INFO(0, destination_dbname) -ZEND_END_ARG_INFO() -#endif - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3stmt_bindparam, 0, 0, 2) - ZEND_ARG_INFO(0, param_number) - ZEND_ARG_INFO(1, param) - ZEND_ARG_INFO(0, type) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3stmt_bindvalue, 0, 0, 2) - ZEND_ARG_INFO(0, param_number) - ZEND_ARG_INFO(0, param) - ZEND_ARG_INFO(0, type) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3stmt_construct, 0, 0, 1) - ZEND_ARG_INFO(0, sqlite3) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3stmt_getsql, 0, 0, 0) - ZEND_ARG_INFO(0, expanded) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3result_columnname, 0, 0, 1) - ZEND_ARG_INFO(0, column_number) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3result_columntype, 0, 0, 1) - ZEND_ARG_INFO(0, column_number) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3result_fetcharray, 0, 0, 0) - ZEND_ARG_INFO(0, mode) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite3_enableextended, 0, 0, 1) - ZEND_ARG_INFO(0, enable) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_sqlite3_void, 0) -ZEND_END_ARG_INFO() -/* }}} */ - /* {{{ php_sqlite3_class_methods */ static const zend_function_entry php_sqlite3_class_methods[] = { - PHP_ME(sqlite3, open, arginfo_sqlite3_open, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3, close, arginfo_sqlite3_void, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3, exec, arginfo_sqlite3_query, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3, version, arginfo_sqlite3_void, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - PHP_ME(sqlite3, lastInsertRowID, arginfo_sqlite3_void, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3, lastErrorCode, arginfo_sqlite3_void, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3, lastExtendedErrorCode, arginfo_sqlite3_void, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3, enableExtendedResultCodes, arginfo_sqlite3_enableextended, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3, lastErrorMsg, arginfo_sqlite3_void, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3, busyTimeout, arginfo_sqlite3_busytimeout, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, open, arginfo_class_SQLite3_open, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, close, arginfo_class_SQLite3_close, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, exec, arginfo_class_SQLite3_query, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, version, arginfo_class_SQLite3_version, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + PHP_ME(sqlite3, lastInsertRowID, arginfo_class_SQLite3_lastInsertRowID, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, lastErrorCode, arginfo_class_SQLite3_lastErrorCode, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, lastExtendedErrorCode, arginfo_class_SQLite3_lastExtendedErrorCode, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, enableExtendedResultCodes, arginfo_class_SQLite3_enableExtendedResultCodes, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, lastErrorMsg, arginfo_class_SQLite3_lastErrorMsg, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, busyTimeout, arginfo_class_SQLite3_busyTimeout, ZEND_ACC_PUBLIC) #ifndef SQLITE_OMIT_LOAD_EXTENSION - PHP_ME(sqlite3, loadExtension, arginfo_sqlite3_loadextension, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, loadExtension, arginfo_class_SQLite3_loadExtension, ZEND_ACC_PUBLIC) #endif - PHP_ME(sqlite3, changes, arginfo_sqlite3_void, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3, escapeString, arginfo_sqlite3_escapestring, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - PHP_ME(sqlite3, prepare, arginfo_sqlite3_query, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3, query, arginfo_sqlite3_query, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3, querySingle, arginfo_sqlite3_querysingle, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3, createFunction, arginfo_sqlite3_createfunction, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3, createAggregate, arginfo_sqlite3_createaggregate, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3, createCollation, arginfo_sqlite3_createcollation, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3, openBlob, arginfo_sqlite3_openblob, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3, enableExceptions, arginfo_sqlite3_enableexceptions, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, changes, arginfo_class_SQLite3_changes, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, escapeString, arginfo_class_SQLite3_escapeString, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + PHP_ME(sqlite3, prepare, arginfo_class_SQLite3_prepare, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, query, arginfo_class_SQLite3_query, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, querySingle, arginfo_class_SQLite3_querySingle, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, createFunction, arginfo_class_SQLite3_createFunction, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, createAggregate, arginfo_class_SQLite3_createAggregate, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, createCollation, arginfo_class_SQLite3_createCollation, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, openBlob, arginfo_class_SQLite3_openBlob, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, enableExceptions, arginfo_class_SQLite3_enableExceptions, ZEND_ACC_PUBLIC) #if SQLITE_VERSION_NUMBER >= 3006011 - PHP_ME(sqlite3, backup, arginfo_sqlite3_backup, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3, backup, arginfo_class_SQLite3_backup, ZEND_ACC_PUBLIC) #endif /* Aliases */ - PHP_MALIAS(sqlite3, __construct, open, arginfo_sqlite3_open, ZEND_ACC_PUBLIC) + PHP_MALIAS(sqlite3, __construct, open, arginfo_class_SQLite3___construct, ZEND_ACC_PUBLIC) PHP_FE_END }; /* }}} */ /* {{{ php_sqlite3_stmt_class_methods */ static const zend_function_entry php_sqlite3_stmt_class_methods[] = { - PHP_ME(sqlite3stmt, paramCount, arginfo_sqlite3_void, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3stmt, close, arginfo_sqlite3_void, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3stmt, reset, arginfo_sqlite3_void, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3stmt, clear, arginfo_sqlite3_void, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3stmt, execute, arginfo_sqlite3_void, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3stmt, bindParam, arginfo_sqlite3stmt_bindparam, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3stmt, bindValue, arginfo_sqlite3stmt_bindvalue, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3stmt, readOnly, arginfo_sqlite3_void, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3stmt, getSQL, arginfo_sqlite3stmt_getsql, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3stmt, __construct, arginfo_sqlite3stmt_construct, ZEND_ACC_PRIVATE) + PHP_ME(sqlite3stmt, paramCount, arginfo_class_SQLite3Stmt_paramCount, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3stmt, close, arginfo_class_SQLite3Stmt_close, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3stmt, reset, arginfo_class_SQLite3Stmt_reset, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3stmt, clear, arginfo_class_SQLite3Stmt_clear, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3stmt, execute, arginfo_class_SQLite3Stmt_execute, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3stmt, bindParam, arginfo_class_SQLite3Stmt_bindParam, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3stmt, bindValue, arginfo_class_SQLite3Stmt_bindValue, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3stmt, readOnly, arginfo_class_SQLite3Stmt_readOnly, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3stmt, getSQL, arginfo_class_SQLite3Stmt_getSQL, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3stmt, __construct, arginfo_class_SQLite3Stmt___construct, ZEND_ACC_PRIVATE) PHP_FE_END }; /* }}} */ /* {{{ php_sqlite3_result_class_methods */ static const zend_function_entry php_sqlite3_result_class_methods[] = { - PHP_ME(sqlite3result, numColumns, arginfo_sqlite3_void, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3result, columnName, arginfo_sqlite3result_columnname, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3result, columnType, arginfo_sqlite3result_columntype, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3result, fetchArray, arginfo_sqlite3result_fetcharray, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3result, reset, arginfo_sqlite3_void, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3result, finalize, arginfo_sqlite3_void, ZEND_ACC_PUBLIC) - PHP_ME(sqlite3result, __construct, arginfo_sqlite3_void, ZEND_ACC_PRIVATE) + PHP_ME(sqlite3result, numColumns, arginfo_class_SQLite3Result_numColumns, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3result, columnName, arginfo_class_SQLite3Result_columnName, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3result, columnType, arginfo_class_SQLite3Result_columnType, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3result, fetchArray, arginfo_class_SQLite3Result_fetchArray, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3result, reset, arginfo_class_SQLite3Result_reset, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3result, finalize, arginfo_class_SQLite3Result_finalize, ZEND_ACC_PUBLIC) + PHP_ME(sqlite3result, __construct, arginfo_class_SQLite3Result___construct, ZEND_ACC_PRIVATE) PHP_FE_END }; /* }}} */ diff --git a/ext/sqlite3/sqlite3.stub.php b/ext/sqlite3/sqlite3.stub.php new file mode 100644 index 0000000000..ede86d0927 --- /dev/null +++ b/ext/sqlite3/sqlite3.stub.php @@ -0,0 +1,128 @@ +<?php + +class SQLite3 +{ + function __construct(string $filename, int $flags = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, string $encryption_key = '') {} + + /** @return void */ + function open(string $filename, int $flags = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, string $encryption_key = '') {} + + /** @return bool */ + function close() {} + + /** @return array */ + function version() {} + + /** @return int */ + function lastInsertRowID() {} + + /** @return int */ + function lastErrorCode() {} + + /** @return int */ + function lastExtendedErrorCode() {} + + /** @return string */ + function lastErrorMsg() {} + + /** @return int */ + function changes() {} + + /** @return bool */ + function busyTimeout(int $ms) {} + +#ifndef SQLITE_OMIT_LOAD_EXTENSION + /** @return bool */ + function loadExtension(string $shared_library) {} +#endif + +#if SQLITE_VERSION_NUMBER >= 3006011 + /** @return bool */ + function backup(SQLite3 $destination_db, string $source_dbname = "main", string $destination_dbname = "main") {} +#endif + + /** @return string */ + function escapeString(string $value) {} + + /** @return SQLite3Stmt|false */ + function prepare(string $query) {} + + /** @return SQLite3Result|false|null */ + function query(string $query) {} + + /** @return mixed */ + function querySingle(string $query, bool $entire_row = false) {} + + /** @return bool */ + function createFunction(string $name, $callback, int $argument_count = -1, int $flags = 0) {} + + /** @return bool */ + function createAggregate(string $name, $step_callback, $final_callback, int $argument_count = -1) {} + + /** @return bool */ + function createCollation(string $name, $callback) {} + + /** @return resource|false */ + function openBlob(string $table, string $column, int $rowid, string $dbname = "main", int $flags = SQLITE3_OPEN_READONLY) {} + + /** @return bool */ + function enableExceptions(bool $enableExceptions = false) {} + + /** @return bool */ + function enableExtendedResultCodes(bool $enable = true) {} +} + +class SQLite3Stmt +{ + function __construct(SQLite3 $sqlite3, string $sql) {} + + /** @return bool */ + function bindParam($param_number, &$param, int $type = UNKNOWN) {} + + /** @return bool */ + function bindValue($param_number, $param, int $type = UNKNOWN) {} + + /** @return bool */ + function clear() {} + + /** @return bool */ + function close() {} + + /** @return SQLite3Result|false */ + function execute() {} + + /** @return string|false */ + function getSQL(bool $expanded = false) {} + + /** @return int */ + function paramCount() {} + + /** @return bool */ + function readOnly() {} + + /** @return bool */ + function reset() {} +} + +class SQLite3Result +{ + function __construct() {} + + /** @return int */ + function numColumns() {} + + /** @return string|false */ + function columnName(int $column_number) {} + + /** @return int|false */ + function columnType(int $column_number) {} + + /** @return array|false */ + function fetchArray(int $mode = SQLITE3_BOTH) {} + + /** @return bool */ + function reset() {} + + /** @return bool */ + function finalize() {} +} diff --git a/ext/sqlite3/sqlite3_arginfo.h b/ext/sqlite3/sqlite3_arginfo.h new file mode 100644 index 0000000000..554ecdf5eb --- /dev/null +++ b/ext/sqlite3/sqlite3_arginfo.h @@ -0,0 +1,143 @@ +/* This is a generated file, edit the .stub.php file instead. */ + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3___construct, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, encryption_key, IS_STRING, 0) +ZEND_END_ARG_INFO() + +#define arginfo_class_SQLite3_open arginfo_class_SQLite3___construct + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3_close, 0, 0, 0) +ZEND_END_ARG_INFO() + +#define arginfo_class_SQLite3_version arginfo_class_SQLite3_close + +#define arginfo_class_SQLite3_lastInsertRowID arginfo_class_SQLite3_close + +#define arginfo_class_SQLite3_lastErrorCode arginfo_class_SQLite3_close + +#define arginfo_class_SQLite3_lastExtendedErrorCode arginfo_class_SQLite3_close + +#define arginfo_class_SQLite3_lastErrorMsg arginfo_class_SQLite3_close + +#define arginfo_class_SQLite3_changes arginfo_class_SQLite3_close + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3_busyTimeout, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, ms, IS_LONG, 0) +ZEND_END_ARG_INFO() + +#if !defined(SQLITE_OMIT_LOAD_EXTENSION) +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3_loadExtension, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, shared_library, IS_STRING, 0) +ZEND_END_ARG_INFO() +#endif + +#if SQLITE_VERSION_NUMBER >= 3006011 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3_backup, 0, 0, 1) + ZEND_ARG_OBJ_INFO(0, destination_db, SQLite3, 0) + ZEND_ARG_TYPE_INFO(0, source_dbname, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, destination_dbname, IS_STRING, 0) +ZEND_END_ARG_INFO() +#endif + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3_escapeString, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, value, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3_prepare, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, query, IS_STRING, 0) +ZEND_END_ARG_INFO() + +#define arginfo_class_SQLite3_query arginfo_class_SQLite3_prepare + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3_querySingle, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, query, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, entire_row, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3_createFunction, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0) + ZEND_ARG_INFO(0, callback) + ZEND_ARG_TYPE_INFO(0, argument_count, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3_createAggregate, 0, 0, 3) + ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0) + ZEND_ARG_INFO(0, step_callback) + ZEND_ARG_INFO(0, final_callback) + ZEND_ARG_TYPE_INFO(0, argument_count, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3_createCollation, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0) + ZEND_ARG_INFO(0, callback) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3_openBlob, 0, 0, 3) + ZEND_ARG_TYPE_INFO(0, table, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, column, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, rowid, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, dbname, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3_enableExceptions, 0, 0, 0) + ZEND_ARG_TYPE_INFO(0, enableExceptions, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3_enableExtendedResultCodes, 0, 0, 0) + ZEND_ARG_TYPE_INFO(0, enable, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3Stmt___construct, 0, 0, 2) + ZEND_ARG_OBJ_INFO(0, sqlite3, SQLite3, 0) + ZEND_ARG_TYPE_INFO(0, sql, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3Stmt_bindParam, 0, 0, 2) + ZEND_ARG_INFO(0, param_number) + ZEND_ARG_INFO(1, param) + ZEND_ARG_TYPE_INFO(0, type, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3Stmt_bindValue, 0, 0, 2) + ZEND_ARG_INFO(0, param_number) + ZEND_ARG_INFO(0, param) + ZEND_ARG_TYPE_INFO(0, type, IS_LONG, 0) +ZEND_END_ARG_INFO() + +#define arginfo_class_SQLite3Stmt_clear arginfo_class_SQLite3_close + +#define arginfo_class_SQLite3Stmt_close arginfo_class_SQLite3_close + +#define arginfo_class_SQLite3Stmt_execute arginfo_class_SQLite3_close + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3Stmt_getSQL, 0, 0, 0) + ZEND_ARG_TYPE_INFO(0, expanded, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +#define arginfo_class_SQLite3Stmt_paramCount arginfo_class_SQLite3_close + +#define arginfo_class_SQLite3Stmt_readOnly arginfo_class_SQLite3_close + +#define arginfo_class_SQLite3Stmt_reset arginfo_class_SQLite3_close + +#define arginfo_class_SQLite3Result___construct arginfo_class_SQLite3_close + +#define arginfo_class_SQLite3Result_numColumns arginfo_class_SQLite3_close + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3Result_columnName, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, column_number, IS_LONG, 0) +ZEND_END_ARG_INFO() + +#define arginfo_class_SQLite3Result_columnType arginfo_class_SQLite3Result_columnName + +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SQLite3Result_fetchArray, 0, 0, 0) + ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0) +ZEND_END_ARG_INFO() + +#define arginfo_class_SQLite3Result_reset arginfo_class_SQLite3_close + +#define arginfo_class_SQLite3Result_finalize arginfo_class_SQLite3_close diff --git a/ext/sqlite3/tests/sqlite3_33_reset.phpt b/ext/sqlite3/tests/sqlite3_33_reset.phpt index 531874ceb6..48abc829c7 100644 --- a/ext/sqlite3/tests/sqlite3_33_reset.phpt +++ b/ext/sqlite3/tests/sqlite3_33_reset.phpt @@ -15,13 +15,11 @@ $db->exec("INSERT INTO foo (id, bar) VALUES (1, 'This is a test')"); $stmt = $db->prepare('SELECT bar FROM foo WHERE id=:id'); $stmt->bindValue(':id', 1, SQLITE3_INTEGER); -$stmt->reset("dummy"); $stmt->reset(); //var_dump($db); //var_dump($db->close()); echo "Done\n"; ?> ---EXPECTF-- -Warning: SQLite3Stmt::reset() expects exactly 0 parameters, 1 given in %s on line %d +--EXPECT-- Done diff --git a/ext/sqlite3/tests/sqlite3_enable_exceptions.phpt b/ext/sqlite3/tests/sqlite3_enable_exceptions.phpt index 767f9d0065..d921b99dd7 100644 --- a/ext/sqlite3/tests/sqlite3_enable_exceptions.phpt +++ b/ext/sqlite3/tests/sqlite3_enable_exceptions.phpt @@ -17,7 +17,6 @@ try{ } var_dump($db->enableExceptions(false)); $db->query("SELECT * FROM non_existent_table"); -var_dump($db->enableExceptions("wrong_type","wrong_type")); echo "Closing database\n"; var_dump($db->close()); echo "Done\n"; @@ -28,9 +27,6 @@ no such table: non_existent_table bool(true) Warning: SQLite3::query(): no such table: non_existent_table in %s on line %d - -Warning: SQLite3::enableExceptions() expects at most 1 parameter, 2 given in %s on line %d -NULL Closing database bool(true) Done |
