Skip to content

Commit 77f37cc

Browse files
author
Martin Köditz
committed
Added bool
1 parent 2477859 commit 77f37cc

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

ibase_query.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
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
*/
8183
typedef 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

Comments
 (0)