Skip to content

Commit 260e87a

Browse files
committed
pdo_pgsql: unbuffered fetching: now invokable
use Pdo::setAttribute(PDO::ATTR_PREFETCH, 0)
1 parent 65df80a commit 260e87a

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

ext/pdo_pgsql/pgsql_driver.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,8 @@ static bool pgsql_handle_preparer(pdo_dbh_t *dbh, zend_string *sql, pdo_stmt_t *
270270
zend_string *nsql = NULL;
271271
int emulate = 0;
272272
int execute_only = 0;
273+
zval *val;
274+
zend_long lval;
273275

274276
S->H = H;
275277
stmt->driver_data = S;
@@ -303,6 +305,14 @@ static bool pgsql_handle_preparer(pdo_dbh_t *dbh, zend_string *sql, pdo_stmt_t *
303305
stmt->named_rewrite_template = "$%d";
304306
}
305307

308+
S->is_unbuffered =
309+
driver_options
310+
&& (val = zend_hash_index_find(Z_ARRVAL_P(driver_options), PDO_ATTR_PREFETCH))
311+
&& pdo_get_long_param(&lval, val)
312+
? !lval
313+
: H->default_fetching_laziness
314+
;
315+
306316
ret = pdo_parse_params(stmt, sql, &nsql);
307317

308318
if (ret == -1) {
@@ -1301,6 +1311,12 @@ static bool pdo_pgsql_set_attr(pdo_dbh_t *dbh, zend_long attr, zval *val)
13011311
}
13021312
H->disable_prepares = bval;
13031313
return true;
1314+
case PDO_ATTR_PREFETCH:
1315+
if (!pdo_get_bool_param(&bval, val)) {
1316+
return false;
1317+
}
1318+
H->default_fetching_laziness = !bval;
1319+
return true;
13041320
default:
13051321
return false;
13061322
}

0 commit comments

Comments
 (0)