File tree Expand file tree Collapse file tree 2 files changed +54
-0
lines changed
Expand file tree Collapse file tree 2 files changed +54
-0
lines changed Original file line number Diff line number Diff line change @@ -573,6 +573,12 @@ static int pgsql_stmt_fetch(pdo_stmt_t *stmt,
573573 }
574574
575575 S -> result = PQgetResult (S -> H -> server );
576+ if (!S -> result ) {
577+ S -> is_running_unbuffered = false;
578+ stmt -> row_count = 0 ;
579+ S -> current_row = 0 ;
580+ return 0 ;
581+ }
576582 status = PQresultStatus (S -> result );
577583
578584 if (status != PGRES_COMMAND_OK && status != PGRES_TUPLES_OK && status != PGRES_SINGLE_TUPLE ) {
Original file line number Diff line number Diff line change 1+ --TEST--
2+ PDO PgSQL single-row mode (ATTR_PREFETCH=0) on empty result set
3+ --EXTENSIONS--
4+ pdo
5+ pdo_pgsql
6+ --SKIPIF--
7+ <?php
8+ require __DIR__ . '/config.inc ' ;
9+ require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc ' ;
10+ PDOTest::skip ();
11+ ?>
12+ --FILE--
13+ <?php
14+
15+ require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc ' ;
16+ $ pdo = PDOTest::test_factory (__DIR__ . '/common.phpt ' );
17+ $ pdo ->setAttribute (PDO ::ATTR_ERRMODE , PDO ::ERRMODE_EXCEPTION );
18+ $ pdo ->setAttribute (PDO ::ATTR_PREFETCH , 0 );
19+
20+ $ pdo ->exec ("CREATE TEMP TABLE empty_t (id int, val text) " );
21+
22+ echo "=== query / fetch === \n" ;
23+ $ stmt = $ pdo ->query ("SELECT * FROM empty_t " );
24+ var_dump ($ stmt ->fetch ());
25+
26+ echo "=== prepare / fetchAll === \n" ;
27+ $ stmt = $ pdo ->prepare ("SELECT * FROM empty_t " );
28+ $ stmt ->execute ();
29+ var_dump ($ stmt ->fetchAll ());
30+
31+ echo "=== connection still works === \n" ;
32+ $ stmt = $ pdo ->query ("SELECT 1 AS alive " );
33+ var_dump ($ stmt ->fetch (PDO ::FETCH_ASSOC ));
34+
35+ echo "Done \n" ;
36+ ?>
37+ --EXPECT--
38+ === query / fetch ===
39+ bool(false)
40+ === prepare / fetchAll ===
41+ array(0) {
42+ }
43+ === connection still works ===
44+ array(1) {
45+ ["alive"]=>
46+ string(1) "1"
47+ }
48+ Done
You can’t perform that action at this time.
0 commit comments