diff options
| author | andrewnester <andrew.nester.dev@gmail.com> | 2017-03-10 20:34:23 +0300 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2017-03-12 17:03:00 +0100 |
| commit | fbf0e0587f8455525466e6d4ab2c1f0fc24bfe26 (patch) | |
| tree | 3ea45878bb00cfba6a9fd4ef1781f80f7df24c6d /ext/sqlite3/sqlite3.c | |
| parent | 280e8dafe472e6789fdcfebd3dade4c0705b0134 (diff) | |
| download | php-git-fbf0e0587f8455525466e6d4ab2c1f0fc24bfe26.tar.gz | |
Implement FR #74217: deterministic sqlite functions
Diffstat (limited to 'ext/sqlite3/sqlite3.c')
| -rw-r--r-- | ext/sqlite3/sqlite3.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index f9476748bf..5a796e1bbf 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -891,7 +891,7 @@ static int php_sqlite3_callback_compare(void *coll, int a_len, const void *a, in } /* }}} */ -/* {{{ proto bool SQLite3::createFunction(string name, mixed callback [, int argcount]) +/* {{{ proto bool SQLite3::createFunction(string name, mixed callback [, int argcount, int flags]) Allows registration of a PHP function as a SQLite UDF that can be called within SQL statements. */ PHP_METHOD(sqlite3, createFunction) { @@ -903,11 +903,12 @@ PHP_METHOD(sqlite3, createFunction) zval *callback_func; zend_string *callback_name; zend_long sql_func_num_args = -1; + zend_long flags = 0; db_obj = Z_SQLITE3_DB_P(object); SQLITE3_CHECK_INITIALIZED(db_obj, db_obj->initialised, SQLite3) - if (zend_parse_parameters(ZEND_NUM_ARGS(), "sz|l", &sql_func, &sql_func_len, &callback_func, &sql_func_num_args) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "sz|ll", &sql_func, &sql_func_len, &callback_func, &sql_func_num_args, &flags) == FAILURE) { return; } @@ -924,7 +925,7 @@ PHP_METHOD(sqlite3, createFunction) func = (php_sqlite3_func *)ecalloc(1, sizeof(*func)); - if (sqlite3_create_function(db_obj->db, sql_func, sql_func_num_args, SQLITE_UTF8, func, php_sqlite3_callback_func, NULL, NULL) == SQLITE_OK) { + if (sqlite3_create_function(db_obj->db, sql_func, sql_func_num_args, flags | SQLITE_UTF8, func, php_sqlite3_callback_func, NULL, NULL) == SQLITE_OK) { func->func_name = estrdup(sql_func); ZVAL_COPY(&func->func, callback_func); @@ -1894,6 +1895,7 @@ 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) @@ -2281,6 +2283,8 @@ PHP_MINIT_FUNCTION(sqlite3) REGISTER_LONG_CONSTANT("SQLITE3_OPEN_READWRITE", SQLITE_OPEN_READWRITE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SQLITE3_OPEN_CREATE", SQLITE_OPEN_CREATE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLITE3_DETERMINISTIC", SQLITE_DETERMINISTIC, CONST_CS | CONST_PERSISTENT); + return SUCCESS; } /* }}} */ |
