From 6e23c238752694d71ea522eb9ba62e5974b72dbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AD=A6=E7=94=B0=20=E6=86=B2=E5=A4=AA=E9=83=8E?= Date: Fri, 6 Mar 2026 23:00:26 +0900 Subject: [PATCH] ext/pgsql: Update outdated PostgreSQL version requirements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary The pgsql extension documentation references PostgreSQL versions that have been outdated for years. The requirements page (`reference/pgsql/setup.xml`) states: https://www.php.net/manual/en/pgsql.requirements.php > To use PostgreSQL support, you need PostgreSQL 6.5 or later, > PostgreSQL 8.0 or later to enable all PostgreSQL module features. However, the actual minimum libpq versions enforced by php-src are: | PHP version | Minimum libpq | Commit | |---|---|---| | PHP 8.0+ | libpq 9.1 | php/php-src@ce668c0ec6 | | PHP 8.4+ | libpq 10.0 | php/php-src#14628 | The "PostgreSQL 6.5" requirement has been incorrect since at least PHP 8.0.0 (released 2020-11-26), which requires libpq 9.1 via `PQlibVersion` check in `ext/pgsql/config.m4`. As of PHP 8.4, the minimum was further raised to libpq 10.0 via `PQencryptPasswordConn` check in `build/php.m4`. ## Changes - **setup.xml**: Update requirements to match php-src, following the same pattern used by ext/curl and ext/openssl (per-PHP-version listing). - **14 function pages**: Remove notes referencing PostgreSQL versions 6.3–9.0 that are no longer relevant given the libpq 10.0 minimum. These include version-gated notes for `pg_prepare`, `pg_query_params`, `pg_execute`, `pg_escape_string`, `pg_escape_identifier`, `pg_escape_literal`, `pg_client_encoding`, `pg_unescape_bytea`, `pg_result_error_field`, `pg_parameter_status`, `pg_lo_create`, `pg_version`, `pg_affected_rows`, and the general `reference.xml`. --- .../pgsql/functions/pg-affected-rows.xml | 3 +-- .../pgsql/functions/pg-client-encoding.xml | 3 +-- .../pgsql/functions/pg-escape-identifier.xml | 6 ----- .../pgsql/functions/pg-escape-literal.xml | 6 ----- .../pgsql/functions/pg-escape-string.xml | 5 ---- reference/pgsql/functions/pg-execute.xml | 2 -- reference/pgsql/functions/pg-lo-create.xml | 12 +++------ .../pgsql/functions/pg-parameter-status.xml | 26 ++++--------------- reference/pgsql/functions/pg-prepare.xml | 2 -- reference/pgsql/functions/pg-query-params.xml | 2 -- .../pgsql/functions/pg-result-error-field.xml | 7 +++-- .../pgsql/functions/pg-unescape-bytea.xml | 9 ------- reference/pgsql/functions/pg-version.xml | 3 +-- reference/pgsql/reference.xml | 3 +-- reference/pgsql/setup.xml | 8 +++--- 15 files changed, 21 insertions(+), 76 deletions(-) diff --git a/reference/pgsql/functions/pg-affected-rows.xml b/reference/pgsql/functions/pg-affected-rows.xml index ccbb6f7fc631..b3cb0fc9d3d3 100644 --- a/reference/pgsql/functions/pg-affected-rows.xml +++ b/reference/pgsql/functions/pg-affected-rows.xml @@ -20,8 +20,7 @@ queries. - Since PostgreSQL 9.0 and above, the server returns the number of - SELECTed rows. Older PostgreSQL return 0 for SELECT. + The server also returns the number of SELECTed rows. diff --git a/reference/pgsql/functions/pg-client-encoding.xml b/reference/pgsql/functions/pg-client-encoding.xml index e4e8e4362fc8..9278c991c33f 100644 --- a/reference/pgsql/functions/pg-client-encoding.xml +++ b/reference/pgsql/functions/pg-client-encoding.xml @@ -24,8 +24,7 @@ - This function requires PostgreSQL 7.0 or - higher. If libpq is compiled without multibyte encoding support, + If libpq is compiled without multibyte encoding support, pg_client_encoding always returns SQL_ASCII. Supported encoding depends on PostgreSQL version. Refer to the PostgreSQL Documentation supported encodings. diff --git a/reference/pgsql/functions/pg-escape-identifier.xml b/reference/pgsql/functions/pg-escape-identifier.xml index 4c7838e255db..07c3af7950ca 100644 --- a/reference/pgsql/functions/pg-escape-identifier.xml +++ b/reference/pgsql/functions/pg-escape-identifier.xml @@ -29,12 +29,6 @@ type fields, pg_escape_bytea must be used instead. - - - This function has internal escape code and can also be used with - PostgreSQL 8.4 or less. - - diff --git a/reference/pgsql/functions/pg-escape-literal.xml b/reference/pgsql/functions/pg-escape-literal.xml index dd62cd67c16c..9750270d49fd 100644 --- a/reference/pgsql/functions/pg-escape-literal.xml +++ b/reference/pgsql/functions/pg-escape-literal.xml @@ -27,12 +27,6 @@ instead. For escaping identifiers (e.g. table, field names), pg_escape_identifier must be used. - - - This function has internal escape code and can also be used with - PostgreSQL 8.4 or less. - - diff --git a/reference/pgsql/functions/pg-escape-string.xml b/reference/pgsql/functions/pg-escape-string.xml index 78b710b0d4dd..91db49522ec5 100644 --- a/reference/pgsql/functions/pg-escape-string.xml +++ b/reference/pgsql/functions/pg-escape-string.xml @@ -27,11 +27,6 @@ instead. pg_escape_identifier must be used to escape identifiers (e.g. table names, field names) - - - This function requires PostgreSQL 7.2 or later. - - diff --git a/reference/pgsql/functions/pg-execute.xml b/reference/pgsql/functions/pg-execute.xml index bb5469ad471b..de68827fa1aa 100644 --- a/reference/pgsql/functions/pg-execute.xml +++ b/reference/pgsql/functions/pg-execute.xml @@ -26,8 +26,6 @@ query string. This feature allows commands that will be used repeatedly to be parsed and planned just once, rather than each time they are executed. The statement must have been prepared previously in the current session. - pg_execute is supported only against PostgreSQL 7.4 or - higher connections; it will fail when using earlier versions. The parameters are identical to pg_query_params, except that the name of a diff --git a/reference/pgsql/functions/pg-lo-create.xml b/reference/pgsql/functions/pg-lo-create.xml index 94c8defd760a..93898301c5cf 100644 --- a/reference/pgsql/functions/pg-lo-create.xml +++ b/reference/pgsql/functions/pg-lo-create.xml @@ -22,11 +22,9 @@ pg_lo_create creates a large object and returns the OID of the large object. PostgreSQL access modes - INV_READ, INV_WRITE, and - INV_ARCHIVE are not supported, the - object is created always with both read and write - access. INV_ARCHIVE has been removed from PostgreSQL itself - (version 6.3 and above). + INV_READ and INV_WRITE + are not supported, the object is created always with both read and write + access. To use the large object interface, it is necessary to @@ -60,9 +58,7 @@ If an object_id is given the function will try to create a large object with this id, else a free - object id is assigned by the server. The parameter - relies on functionality that first - appeared in PostgreSQL 8.1. + object id is assigned by the server. diff --git a/reference/pgsql/functions/pg-parameter-status.xml b/reference/pgsql/functions/pg-parameter-status.xml index fa58feed98ed..24c22a987190 100644 --- a/reference/pgsql/functions/pg-parameter-status.xml +++ b/reference/pgsql/functions/pg-parameter-status.xml @@ -23,30 +23,14 @@ parameter if known, or &false; if the parameter is not known. - Parameters reported as of PostgreSQL 8.0 include server_version, - server_encoding, client_encoding, - is_superuser, session_authorization, + Parameters reported by the server include server_version, + server_encoding, client_encoding, + is_superuser, session_authorization, DateStyle, TimeZone, and integer_datetimes. - (server_encoding, TimeZone, and - integer_datetimes were not reported by releases before 8.0.) Note that - server_version, server_encoding and integer_datetimes + Note that + server_version, server_encoding and integer_datetimes cannot change after PostgreSQL startup. - - PostgreSQL 7.3 or lower servers do not report parameter settings, - pg_parameter_status - includes logic to obtain values for server_version and - client_encoding - anyway. Applications are encouraged to use pg_parameter_status rather than ad - hoc code to determine these values. - - - - On a pre-7.4 - PostgreSQL server, changing client_encoding via SET after connection startup will - not be reflected by pg_parameter_status. - - diff --git a/reference/pgsql/functions/pg-prepare.xml b/reference/pgsql/functions/pg-prepare.xml index fdc1e1fc3d6f..0a9cda69f8fd 100644 --- a/reference/pgsql/functions/pg-prepare.xml +++ b/reference/pgsql/functions/pg-prepare.xml @@ -23,8 +23,6 @@ pg_execute or pg_send_execute. This feature allows commands that will be used repeatedly to be parsed and planned just once, rather than each time they are executed. - pg_prepare is supported only against PostgreSQL 7.4 or - higher connections; it will fail when using earlier versions. The function creates a prepared statement named stmtname from the query diff --git a/reference/pgsql/functions/pg-query-params.xml b/reference/pgsql/functions/pg-query-params.xml index 951d18bd6e7c..eaf82eee1e07 100644 --- a/reference/pgsql/functions/pg-query-params.xml +++ b/reference/pgsql/functions/pg-query-params.xml @@ -23,8 +23,6 @@ pg_query_params is like pg_query, but offers additional functionality: parameter values can be specified separately from the command string proper. - pg_query_params is supported only against PostgreSQL 7.4 or - higher connections; it will fail when using earlier versions. If parameters are used, they are referred to in the diff --git a/reference/pgsql/functions/pg-result-error-field.xml b/reference/pgsql/functions/pg-result-error-field.xml index 5f1a10478421..ce4e0c10490a 100644 --- a/reference/pgsql/functions/pg-result-error-field.xml +++ b/reference/pgsql/functions/pg-result-error-field.xml @@ -16,8 +16,7 @@ pg_result_error_field returns one of the detailed error message - fields associated with result instance. It is only available - against a PostgreSQL 7.4 or above server. The error field is specified by + fields associated with result instance. The error field is specified by the field_code. @@ -50,8 +49,8 @@ PGSQL_DIAG_SQLSTATE, PGSQL_DIAG_MESSAGE_PRIMARY, PGSQL_DIAG_MESSAGE_DETAIL, PGSQL_DIAG_MESSAGE_HINT, PGSQL_DIAG_STATEMENT_POSITION, - PGSQL_DIAG_INTERNAL_POSITION (PostgreSQL 8.0+ only), - PGSQL_DIAG_INTERNAL_QUERY (PostgreSQL 8.0+ only), + PGSQL_DIAG_INTERNAL_POSITION, + PGSQL_DIAG_INTERNAL_QUERY, PGSQL_DIAG_CONTEXT, PGSQL_DIAG_SOURCE_FILE, PGSQL_DIAG_SOURCE_LINE or PGSQL_DIAG_SOURCE_FUNCTION. diff --git a/reference/pgsql/functions/pg-unescape-bytea.xml b/reference/pgsql/functions/pg-unescape-bytea.xml index 2af711ea7da4..f322de791347 100644 --- a/reference/pgsql/functions/pg-unescape-bytea.xml +++ b/reference/pgsql/functions/pg-unescape-bytea.xml @@ -25,15 +25,6 @@ prefixed with '\' (e.g. \032). Users are supposed to convert back to binary format manually. - - This function requires PostgreSQL 7.2 or later. With PostgreSQL - 7.2.0 and 7.2.1, bytea values must be cast when you enable - multi-byte support. i.e. INSERT INTO test_table (image) - VALUES ('$image_escaped'::bytea); PostgreSQL 7.2.2 or - later does not need a cast. The exception is when the client and backend - character encoding does not match, and there may be multi-byte - stream error. User must then cast to bytea to avoid this error. - diff --git a/reference/pgsql/functions/pg-version.xml b/reference/pgsql/functions/pg-version.xml index b3a3b2a28238..b73dc2363e21 100644 --- a/reference/pgsql/functions/pg-version.xml +++ b/reference/pgsql/functions/pg-version.xml @@ -16,8 +16,7 @@ pg_version returns an array with the client, protocol - and server version. Protocol and server versions are only available if PHP - was compiled with PostgreSQL 7.4 or later. + and server version. For more detailed server information, use pg_parameter_status. diff --git a/reference/pgsql/reference.xml b/reference/pgsql/reference.xml index 04feac01767e..e473dd5b438e 100644 --- a/reference/pgsql/reference.xml +++ b/reference/pgsql/reference.xml @@ -34,8 +34,7 @@ PostgreSQL does not have special commands for fetching database schema information (eg. all the tables in the current database). Instead, there - is a standard schema named information_schema in - PostgreSQL 7.4 and above containing + is a standard schema named information_schema containing system views with all the necessary information, in an easily queryable form. See the PostgreSQL Documentation for full details. diff --git a/reference/pgsql/setup.xml b/reference/pgsql/setup.xml index 38a4c2ba8bbe..3c22ec2c31c2 100644 --- a/reference/pgsql/setup.xml +++ b/reference/pgsql/setup.xml @@ -8,9 +8,11 @@
&reftitle.required; - To use PostgreSQL support, you need PostgreSQL 6.5 or - later, PostgreSQL 8.0 or later to enable all PostgreSQL module - features. PostgreSQL supports many character encodings including + To use PostgreSQL support, you need libpq (the PostgreSQL C client + library). + As of PHP 8.0.0, libpq 9.1 or later is required. + As of PHP 8.4.0, libpq 10.0 or later is required. + PostgreSQL supports many character encodings including multibyte character encoding. The current version and more information about PostgreSQL is available at &url.pgsql; and