Skip to content

Commit b07293a

Browse files
committed
pdo_pgsql: unbuffered fetching: now invokable
use Pdo::setAttribute(PDO::ATTR_PREFETCH, 0)
1 parent 8ad8885 commit b07293a

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
@@ -271,6 +271,8 @@ static bool pgsql_handle_preparer(pdo_dbh_t *dbh, zend_string *sql, pdo_stmt_t *
271271
zend_string *nsql = NULL;
272272
int emulate = 0;
273273
int execute_only = 0;
274+
zval *val;
275+
zend_long lval;
274276

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

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

309319
if (ret == -1) {
@@ -1327,6 +1337,12 @@ static bool pdo_pgsql_set_attr(pdo_dbh_t *dbh, zend_long attr, zval *val)
13271337
}
13281338
H->disable_prepares = bval;
13291339
return true;
1340+
case PDO_ATTR_PREFETCH:
1341+
if (!pdo_get_bool_param(&bval, val)) {
1342+
return false;
1343+
}
1344+
H->default_fetching_laziness = !bval;
1345+
return true;
13301346
default:
13311347
return false;
13321348
}

0 commit comments

Comments
 (0)