[DOC-CVS] [doc-en] master: pdo_pgsql: document ATTR_PREFETCH lazy fetch, fix copyFromArray sig (#5629)
[email protected] (Philip Olson via GitHub) Mon, 22 Jun 2026 21:21:19 +0000
| Newsgroups | php.doc.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: Philip Olson (philip) Committer: GitHub (web-flow) Pusher: philip Date: 2026-06-22T14:21:16-07:00 Commit: https://github.com/php/doc-en/commit/205c3b8ad9af665e2b49dcc6020005bb479217a3 Raw diff: https://github.com/php/doc-en/commit/205c3b8ad9af665e2b49dcc6020005bb479217a3.diff pdo_pgsql: document ATTR_PREFETCH lazy fetch, fix copyFromArray sig (#5629) * pdo_pgsql: document ATTR_PREFETCH lazy fetch, fix copyFromArray signature * Apply suggestion from @lacatoire Co-authored-by: Louis-Arnaud <[email protected]> * pdo_pgsql: fix ATTR_PREFETCH link and copyFromArray rows whitespace --------- Co-authored-by: Louis-Arnaud <[email protected]> Changed paths: M reference/pdo/constants.xml M reference/pdo_pgsql/pdo-pgsql.xml M reference/pdo_pgsql/pdo/pgsql/copyfromarray.xml Diff: diff --git a/reference/pdo/constants.xml b/reference/pdo/constants.xml index 36d98257f991..285a16ffe336 100644 --- a/reference/pdo/constants.xml +++ b/reference/pdo/constants.xml @@ -251,6 +251,13 @@ setting of the prefetch size. A larger prefetch size results in increased performance at the cost of higher memory usage. </simpara> + <simpara> + The PDO_PGSQL driver instead treats this attribute as a toggle: as of + PHP 8.5.0, a value of <literal>0</literal> enables lazy (single-row) + fetching; see the + <link linkend="pdo-pgsql.constants.attr-prefetch">PDO_PGSQL driver docs</link> + for details. + </simpara> </listitem> </varlistentry> <varlistentry xml:id="pdo.constants.attr-timeout"> diff --git a/reference/pdo_pgsql/pdo-pgsql.xml b/reference/pdo_pgsql/pdo-pgsql.xml index d2a72332dd47..edb20d6c7fb2 100644 --- a/reference/pdo_pgsql/pdo-pgsql.xml +++ b/reference/pdo_pgsql/pdo-pgsql.xml @@ -155,6 +155,32 @@ </simpara> </listitem> </varlistentry> + <varlistentry xml:id="pdo-pgsql.constants.attr-prefetch"> + <term><constant>PDO::ATTR_PREFETCH</constant></term> + <listitem> + <simpara> + As of PHP 8.5.0, setting this attribute to <literal>0</literal> enables + lazy (single-row) fetching: rows are retrieved from the server one at a + time as they are fetched, instead of buffering the whole result set in + memory before the first <methodname>PDOStatement::fetch</methodname> + call. This reduces memory usage for large result sets. Any other value + keeps the default buffered behavior. + </simpara> + <simpara> + It can be set per connection with + <methodname>PDO::setAttribute</methodname>, or per statement via + the <methodname>PDO::prepare</methodname> or + <methodname>PDO::query</methodname> driver options. + </simpara> + <caution> + <simpara> + In lazy mode, a connection can have only one active statement at a + time. Running another statement silently discards any unread rows of + the previous one; no error is raised. + </simpara> + </caution> + </listitem> + </varlistentry> <varlistentry xml:id="pdo-pgsql.constants.transaction-idle"> <term><constant>Pdo\Pgsql::TRANSACTION_IDLE</constant></term> <listitem> diff --git a/reference/pdo_pgsql/pdo/pgsql/copyfromarray.xml b/reference/pdo_pgsql/pdo/pgsql/copyfromarray.xml index e29012235a32..7f2e3ffed133 100644 --- a/reference/pdo_pgsql/pdo/pgsql/copyfromarray.xml +++ b/reference/pdo_pgsql/pdo/pgsql/copyfromarray.xml @@ -10,7 +10,7 @@ <methodsynopsis role="Pdo\\Pgsql"> <modifier>public</modifier> <type>bool</type><methodname>Pdo\Pgsql::copyFromArray</methodname> <methodparam><type>string</type><parameter>tableName</parameter></methodparam> - <methodparam><type>array</type><parameter>rows</parameter></methodparam> + <methodparam><type class="union"><type>array</type><type>Traversable</type></type><parameter>rows</parameter></methodparam> <methodparam choice="opt"><type>string</type><parameter>separator</parameter><initializer>"\t"</initializer></methodparam> <methodparam choice="opt"><type>string</type><parameter>nullAs</parameter><initializer>"\\\\N"</initializer></methodparam> <methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>fields</parameter><initializer>&null;</initializer></methodparam> @@ -37,8 +37,9 @@ <term><parameter>rows</parameter></term> <listitem> <simpara> - An indexed <type>array</type> of <type>string</type>s with fields - separated by <parameter>separator</parameter>. + An indexed <type>array</type> (or <type>Traversable</type>) of + <type>string</type>s with fields separated by + <parameter>separator</parameter>. </simpara> </listitem> </varlistentry>