From d16135ea1e7b03e216429849411d6975b1b717af Mon Sep 17 00:00:00 2001 From: David CARLIER Date: Tue, 2 May 2023 19:05:53 +0100 Subject: [PATCH] ext/pgsql adding PGSQL_ERRORS_SQLSTATE constant support. --- ext/pgsql/pgsql.c | 6 +++++- ext/pgsql/pgsql.stub.php | 13 +++++++++++++ ext/pgsql/pgsql_arginfo.h | 8 +++++++- ext/pgsql/tests/07optional.phpt | 1 + 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index f2a7fb2ac296b..14488ca6157db 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -112,6 +112,10 @@ char pgsql_libpq_version[16]; #define PQfreemem free #endif +#if PG_VERSION_NUM < 120000 +#define PQERRORS_SQLSTATE 0 +#endif + ZEND_DECLARE_MODULE_GLOBALS(pgsql) static PHP_GINIT_FUNCTION(pgsql); @@ -2821,7 +2825,7 @@ PHP_FUNCTION(pg_set_error_verbosity) pgsql = link->conn; - if (verbosity & (PQERRORS_TERSE|PQERRORS_DEFAULT|PQERRORS_VERBOSE)) { + if (verbosity & (PQERRORS_TERSE|PQERRORS_DEFAULT|PQERRORS_VERBOSE|PQERRORS_SQLSTATE)) { RETURN_LONG(PQsetErrorVerbosity(pgsql, verbosity)); } else { RETURN_FALSE; diff --git a/ext/pgsql/pgsql.stub.php b/ext/pgsql/pgsql.stub.php index e095350543c79..fd58fb92c0045 100644 --- a/ext/pgsql/pgsql.stub.php +++ b/ext/pgsql/pgsql.stub.php @@ -183,6 +183,19 @@ * @cvalue PQERRORS_VERBOSE */ const PGSQL_ERRORS_VERBOSE = UNKNOWN; + #if PGVERSION_NUM > 110000 + /** + * @var int + * @cvalue PQERRORS_SQLSTATE + */ + const PGSQL_ERRORS_SQLSTATE = UNKNOWN; + #else + /** + * @var int + * @cvalue PQERRORS_TERSE + */ + const PGSQL_ERRORS_SQLSTATE = UNKNOWN; + #endif /* For lo_seek() */ diff --git a/ext/pgsql/pgsql_arginfo.h b/ext/pgsql/pgsql_arginfo.h index 2b8e7cd17ae6a..839842bbc3944 100644 --- a/ext/pgsql/pgsql_arginfo.h +++ b/ext/pgsql/pgsql_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: f18a73443942daa2b3695e8750c8daaea6b96194 */ + * Stub hash: f5b563282ffa08a4f79293fcf91df284433a6f5c */ ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_pg_connect, 0, 1, PgSql\\Connection, MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, connection_string, IS_STRING, 0) @@ -754,6 +754,12 @@ static void register_pgsql_symbols(int module_number) REGISTER_LONG_CONSTANT("PGSQL_ERRORS_TERSE", PQERRORS_TERSE, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PGSQL_ERRORS_DEFAULT", PQERRORS_DEFAULT, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PGSQL_ERRORS_VERBOSE", PQERRORS_VERBOSE, CONST_PERSISTENT); +#if PGVERSION_NUM > 110000 + REGISTER_LONG_CONSTANT("PGSQL_ERRORS_SQLSTATE", PQERRORS_SQLSTATE, CONST_PERSISTENT); +#endif +#if !(PGVERSION_NUM > 110000) + REGISTER_LONG_CONSTANT("PGSQL_ERRORS_SQLSTATE", PQERRORS_TERSE, CONST_PERSISTENT); +#endif REGISTER_LONG_CONSTANT("PGSQL_SEEK_SET", SEEK_SET, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PGSQL_SEEK_CUR", SEEK_CUR, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PGSQL_SEEK_END", SEEK_END, CONST_PERSISTENT); diff --git a/ext/pgsql/tests/07optional.phpt b/ext/pgsql/tests/07optional.phpt index 6c58727e4adbe..b9ce491b2ca7a 100644 --- a/ext/pgsql/tests/07optional.phpt +++ b/ext/pgsql/tests/07optional.phpt @@ -19,6 +19,7 @@ if (function_exists('pg_set_error_verbosity')) { pg_set_error_verbosity($db, PGSQL_ERRORS_TERSE); pg_set_error_verbosity($db, PGSQL_ERRORS_DEFAULT); pg_set_error_verbosity($db, PGSQL_ERRORS_VERBOSE); + pg_set_error_verbosity($db, PGSQL_ERRORS_SQLSTATE); } echo "OK"; ?>