diff options
-rw-r--r-- | ext/pdo_firebird/firebird_statement.c | 10 | ||||
-rw-r--r-- | ext/pdo_firebird/tests/bug_74462.phpt | 29 |
2 files changed, 38 insertions, 1 deletions
diff --git a/ext/pdo_firebird/firebird_statement.c b/ext/pdo_firebird/firebird_statement.c index 6d42f22110..f28ffa0a59 100644 --- a/ext/pdo_firebird/firebird_statement.c +++ b/ext/pdo_firebird/firebird_statement.c @@ -1,4 +1,4 @@ -/* +/* +----------------------------------------------------------------------+ | PHP Version 7 | +----------------------------------------------------------------------+ @@ -229,6 +229,9 @@ static int firebird_stmt_describe(pdo_stmt_t *stmt, int colno) /* {{{ */ #endif col->param_type = PDO_PARAM_INT; break; + case SQL_BOOLEAN: + col->param_type = PDO_PARAM_BOOL; + break; default: col->param_type = PDO_PARAM_STR; break; @@ -416,6 +419,11 @@ static int firebird_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, /* {{ *ptr = FETCH_BUF(S->fetch_buf[colno], char, CHAR_BUF_LEN, NULL); *len = slprintf(*ptr, CHAR_BUF_LEN, "%F" , *(double*)var->sqldata); break; + case SQL_BOOLEAN: + *len = sizeof(zend_bool); + *ptr = FETCH_BUF(S->fetch_buf[colno], zend_bool, 1, NULL); + *(zend_bool*)*ptr = *(FB_BOOLEAN*)var->sqldata; + break; case SQL_TYPE_DATE: isc_decode_sql_date((ISC_DATE*)var->sqldata, &t); fmt = S->H->date_format ? S->H->date_format : PDO_FB_DEF_DATE_FMT; diff --git a/ext/pdo_firebird/tests/bug_74462.phpt b/ext/pdo_firebird/tests/bug_74462.phpt new file mode 100644 index 0000000000..4a8d2c9c91 --- /dev/null +++ b/ext/pdo_firebird/tests/bug_74462.phpt @@ -0,0 +1,29 @@ +--TEST-- +PDO_Firebird: Bug #74462 Returns only NULLs for boolean fields +--SKIPIF-- +<?php if (!extension_loaded('interbase') || !extension_loaded('pdo_firebird')) die('skip'); +?> +--FILE-- +<?php +require 'testdb.inc'; +$C = new PDO('firebird:dbname='.$test_base, $user, $password) or die; +@$C->exec('drop table atable'); +$C->exec('create table atable (id integer not null, abool boolean)'); +$C->exec('insert into atable (id, abool) values (1, true)'); +$C->exec('insert into atable (id, abool) values (2, false)'); +$C->exec('insert into atable (id, abool) values (3, null)'); +$S = $C->query('select abool from atable order by id'); +$D = $S->fetchAll(PDO::FETCH_COLUMN); +unset($S); +unset($C); +var_dump($D); +?> +--EXPECT-- +array(3) { + [0]=> + bool(true) + [1]=> + bool(false) + [2]=> + NULL +}
\ No newline at end of file |