diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c index 3ef50d3be4738..03ac14c32db9a 100644 --- a/ext/pdo_pgsql/pgsql_statement.c +++ b/ext/pdo_pgsql/pgsql_statement.c @@ -240,8 +240,8 @@ static int pgsql_stmt_execute(pdo_stmt_t *stmt) return 0; } - if (!stmt->executed && (!stmt->column_count || S->cols == NULL)) { - stmt->column_count = (int) PQnfields(S->result); + stmt->column_count = (int) PQnfields(S->result); + if (S->cols == NULL) { S->cols = ecalloc(stmt->column_count, sizeof(pdo_pgsql_column)); } @@ -674,12 +674,6 @@ static int pgsql_stmt_get_column_meta(pdo_stmt_t *stmt, zend_long colno, zval *r static int pdo_pgsql_stmt_cursor_closer(pdo_stmt_t *stmt) { - pdo_pgsql_stmt *S = (pdo_pgsql_stmt*)stmt->driver_data; - - if (S->cols != NULL){ - efree(S->cols); - S->cols = NULL; - } return 1; } diff --git a/ext/pdo_pgsql/tests/bug81343.phpt b/ext/pdo_pgsql/tests/bug81343.phpt new file mode 100644 index 0000000000000..76903b76e472a --- /dev/null +++ b/ext/pdo_pgsql/tests/bug81343.phpt @@ -0,0 +1,27 @@ +--TEST-- +Bug #81343 pdo_pgsql: Inconsitent boolean conversion after calling closeCursor() +--EXTENSIONS-- +pdo +pdo_pgsql +--SKIPIF-- + +--FILE-- +setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); +$sth = $pdo->prepare("select false where 2=?"); + +for ($i = 0; $i < 2; $i++) { + $sth->execute([2]); + var_dump($sth->fetchColumn(0)); + $sth->closeCursor(); +} +?> +--EXPECT-- +bool(false) +bool(false)