1616 +----------------------------------------------------------------------+
1717 */
1818
19+ #include <stdbool.h>
20+
1921#ifdef HAVE_CONFIG_H
2022#include "config.h"
2123#endif
@@ -80,6 +82,7 @@ typedef struct {
8082 */
8183typedef struct {
8284 union {
85+ bool bval ;
8386 short sval ;
8487 float fval ;
8588 ISC_LONG lval ;
@@ -239,6 +242,10 @@ static int _php_ibase_alloc_array(ibase_array **ib_arrayp, XSQLDA *sqlda, /* {{{
239242 a -> el_type = SQL_TEXT ;
240243 a -> el_size = ar_desc -> array_desc_length ;
241244 break ;
245+ case blr_bool :
246+ a -> el_type = SQL_BOOLEAN ;
247+ a -> el_size = sizeof (bool );
248+ break ;
242249 case blr_short :
243250 a -> el_type = SQL_SHORT ;
244251 a -> el_size = sizeof (short );
@@ -574,6 +581,10 @@ static int _php_ibase_bind_array(zval *val, char *buf, zend_ulong buf_size, /* {
574581 convert_to_double (val );
575582 * (float * ) buf = (float ) Z_DVAL_P (val );
576583 break ;
584+ case SQL_BOOLEAN :
585+ //convert_to_bool(val);
586+ * (bool * ) buf = Z_DVAL_P (val );
587+ break ;
577588 case SQL_DOUBLE :
578589 convert_to_double (val );
579590 * (double * ) buf = Z_DVAL_P (val );
@@ -660,6 +671,7 @@ static int _php_ibase_bind(XSQLDA *sqlda, zval *b_vars, BIND_BUF *buf, /* {{{ */
660671
661672 /* for these types, an empty string can be handled like a NULL value */
662673 switch (var -> sqltype & ~1 ) {
674+ case SQL_BOOLEAN :
663675 case SQL_SHORT :
664676 case SQL_LONG :
665677 case SQL_INT64 :
@@ -823,6 +835,9 @@ static void _php_ibase_alloc_xsqlda(XSQLDA *sqlda) /* {{{ */
823835 case SQL_VARYING :
824836 var -> sqldata = safe_emalloc (sizeof (char ), var -> sqllen + sizeof (short ), 0 );
825837 break ;
838+ case SQL_BOOLEAN :
839+ var -> sqldata = emalloc (sizeof (bool ));
840+ break ;
826841 case SQL_SHORT :
827842 var -> sqldata = emalloc (sizeof (short ));
828843 break ;
@@ -1323,6 +1338,12 @@ static int _php_ibase_var_zval(zval *val, void *data, int type, int len, /* {{{
13231338 case SQL_TEXT :
13241339 ZVAL_STRINGL (val , (char * )data , len );
13251340 break ;
1341+ case SQL_BOOLEAN :
1342+ if (val )
1343+ ZVAL_BOOL (val ,1 );
1344+ else
1345+ ZVAL_BOOL (val ,0 );
1346+ break ;
13261347 case SQL_SHORT :
13271348 n = * (short * ) data ;
13281349 goto _sql_long ;
@@ -1915,6 +1936,9 @@ static void _php_ibase_field_info(zval *return_value, XSQLVAR *var) /* {{{ */
19151936
19161937 switch (var -> sqltype & ~1 ) {
19171938
1939+ case SQL_BOOLEAN :
1940+ precision = 1 ;
1941+ break ;
19181942 case SQL_SHORT :
19191943 precision = 4 ;
19201944 break ;
@@ -1939,6 +1963,9 @@ static void _php_ibase_field_info(zval *return_value, XSQLVAR *var) /* {{{ */
19391963 case SQL_SHORT :
19401964 s = "SMALLINT" ;
19411965 break ;
1966+ case SQL_BOOLEAN :
1967+ s = "BOOLEAN" ;
1968+ break ;
19421969 case SQL_LONG :
19431970 s = "INTEGER" ;
19441971 break ;
0 commit comments