Programs that link with the SQLite library can have SQL database access
without running a separate RDBMS process.
This extension allows you to access SQLite databases from within PHP.
+
+ Windows binary available from:
+ http://snaps.php.net/win32/PECL_STABLE/php_sqlite.dll
</description>
<license>PHP</license>
<release>
Fixed some build issues for thread-safe builds.
+ Increase the default busy timeout interval to 60 seconds.
+
API is considered stabilized for 4.3.x; this is a pre-release before
announcing stable version 1.0.
#include "config.h"
#endif
-#define PHP_SQLITE_MODULE_VERSION "0.9b"
+#define PHP_SQLITE_MODULE_VERSION "0.9-c"
#include "php.h"
#include "php_ini.h"
#include <sqlite.h>
#ifndef safe_emalloc
-#define safe_emalloc(a,b,c) emalloc((a)*(b)+(c))
+# define safe_emalloc(a,b,c) emalloc((a)*(b)+(c))
#endif
#ifndef ZEND_ENGINE_2
for (i = 0; i < argc; i++) {
zargs[i] = emalloc(sizeof(zval *));
MAKE_STD_ZVAL(*zargs[i]);
- ZVAL_STRING(*zargs[i], (char*)argv[i], 1);
+
+ if (argv[i] == NULL) {
+ ZVAL_NULL(*zargs[i]);
+ } else {
+ ZVAL_STRING(*zargs[i], (char*)argv[i], 1);
+ }
}
}
} else {
switch (Z_TYPE_P(retval)) {
case IS_STRING:
+ /* TODO: for binary results, need to encode the string */
sqlite_set_result_string(func, Z_STRVAL_P(retval), Z_STRLEN_P(retval));
break;
case IS_LONG:
for (i = 0; i < argc; i++) {
zargs[i+1] = emalloc(sizeof(zval *));
MAKE_STD_ZVAL(*zargs[i+1]);
- ZVAL_STRING(*zargs[i+1], (char*)argv[i], 1);
+ if (argv[i] == NULL) {
+ ZVAL_NULL(*zargs[i+1]);
+ } else {
+ ZVAL_STRING(*zargs[i+1], (char*)argv[i], 1);
+ }
}
res = call_user_function_ex(EG(function_table),
REGISTER_LONG_CONSTANT("SQLITE_MISUSE", SQLITE_MISUSE, CONST_CS|CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SQLITE_NOLFS", SQLITE_NOLFS, CONST_CS|CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SQLITE_AUTH", SQLITE_AUTH, CONST_CS|CONST_PERSISTENT);
+#ifdef SQLITE_FORMAT
+ REGISTER_LONG_CONSTANT("SQLITE_FORMAT", SQLITE_FORMAT, CONST_CS|CONST_PERSISTENT);
+#endif
REGISTER_LONG_CONSTANT("SQLITE_ROW", SQLITE_ROW, CONST_CS|CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SQLITE_DONE", SQLITE_DONE, CONST_CS|CONST_PERSISTENT);
/* register the PHP functions */
sqlite_create_function(sdb, "php", -1, php_sqlite_generic_function_callback, 0);
- /* set default busy handler; keep retrying up until 1/2 second has passed,
+ /* set default busy handler; keep retrying up until 1 minute has passed,
* then fail with a busy status code */
- sqlite_busy_timeout(sdb, 500);
+ sqlite_busy_timeout(sdb, 60000);
/* authorizer hook so we can enforce safe mode
* Note: the declaration of php_sqlite_authorizer is correct for 2.8.2 of libsqlite,