24
24
#include "config.h"
25
25
#endif
26
26
27
- #define PHP_SQLITE_MODULE_VERSION "0.9b "
27
+ #define PHP_SQLITE_MODULE_VERSION "0.9-c "
28
28
29
29
#include "php.h"
30
30
#include "php_ini.h"
39
39
#include <sqlite.h>
40
40
41
41
#ifndef safe_emalloc
42
- #define safe_emalloc (a ,b ,c ) emalloc((a)*(b)+(c))
42
+ # define safe_emalloc (a ,b ,c ) emalloc((a)*(b)+(c))
43
43
#endif
44
44
45
45
#ifndef ZEND_ENGINE_2
@@ -384,7 +384,12 @@ static void php_sqlite_function_callback(sqlite_func *func, int argc, const char
384
384
for (i = 0 ; i < argc ; i ++ ) {
385
385
zargs [i ] = emalloc (sizeof (zval * ));
386
386
MAKE_STD_ZVAL (* zargs [i ]);
387
- ZVAL_STRING (* zargs [i ], (char * )argv [i ], 1 );
387
+
388
+ if (argv [i ] == NULL ) {
389
+ ZVAL_NULL (* zargs [i ]);
390
+ } else {
391
+ ZVAL_STRING (* zargs [i ], (char * )argv [i ], 1 );
392
+ }
388
393
}
389
394
}
390
395
@@ -402,6 +407,7 @@ static void php_sqlite_function_callback(sqlite_func *func, int argc, const char
402
407
} else {
403
408
switch (Z_TYPE_P (retval )) {
404
409
case IS_STRING :
410
+ /* TODO: for binary results, need to encode the string */
405
411
sqlite_set_result_string (func , Z_STRVAL_P (retval ), Z_STRLEN_P (retval ));
406
412
break ;
407
413
case IS_LONG :
@@ -472,7 +478,11 @@ static void php_sqlite_agg_step_function_callback(sqlite_func *func, int argc, c
472
478
for (i = 0 ; i < argc ; i ++ ) {
473
479
zargs [i + 1 ] = emalloc (sizeof (zval * ));
474
480
MAKE_STD_ZVAL (* zargs [i + 1 ]);
475
- ZVAL_STRING (* zargs [i + 1 ], (char * )argv [i ], 1 );
481
+ if (argv [i ] == NULL ) {
482
+ ZVAL_NULL (* zargs [i + 1 ]);
483
+ } else {
484
+ ZVAL_STRING (* zargs [i + 1 ], (char * )argv [i ], 1 );
485
+ }
476
486
}
477
487
478
488
res = call_user_function_ex (EG (function_table ),
@@ -641,6 +651,9 @@ PHP_MINIT_FUNCTION(sqlite)
641
651
REGISTER_LONG_CONSTANT ("SQLITE_MISUSE" , SQLITE_MISUSE , CONST_CS |CONST_PERSISTENT );
642
652
REGISTER_LONG_CONSTANT ("SQLITE_NOLFS" , SQLITE_NOLFS , CONST_CS |CONST_PERSISTENT );
643
653
REGISTER_LONG_CONSTANT ("SQLITE_AUTH" , SQLITE_AUTH , CONST_CS |CONST_PERSISTENT );
654
+ #ifdef SQLITE_FORMAT
655
+ REGISTER_LONG_CONSTANT ("SQLITE_FORMAT" , SQLITE_FORMAT , CONST_CS |CONST_PERSISTENT );
656
+ #endif
644
657
REGISTER_LONG_CONSTANT ("SQLITE_ROW" , SQLITE_ROW , CONST_CS |CONST_PERSISTENT );
645
658
REGISTER_LONG_CONSTANT ("SQLITE_DONE" , SQLITE_DONE , CONST_CS |CONST_PERSISTENT );
646
659
@@ -691,9 +704,9 @@ static struct php_sqlite_db *php_sqlite_open(char *filename, int mode, char *per
691
704
/* register the PHP functions */
692
705
sqlite_create_function (sdb , "php" , -1 , php_sqlite_generic_function_callback , 0 );
693
706
694
- /* set default busy handler; keep retrying up until 1/2 second has passed,
707
+ /* set default busy handler; keep retrying up until 1 minute has passed,
695
708
* then fail with a busy status code */
696
- sqlite_busy_timeout (sdb , 500 );
709
+ sqlite_busy_timeout (sdb , 60000 );
697
710
698
711
/* authorizer hook so we can enforce safe mode
699
712
* Note: the declaration of php_sqlite_authorizer is correct for 2.8.2 of libsqlite,
0 commit comments