From: Dorin Marcoci Date: Sat, 13 May 2017 14:27:15 +0000 (+0300) Subject: Boolean data type support, added in Firebird 3. Fixes #74462. X-Git-Tag: php-7.3.0alpha4~152 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=78f23a6dd47c845393b27250f2a2bcc2decd79be;p=php Boolean data type support, added in Firebird 3. Fixes #74462. --- 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-- + +--FILE-- +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