diff --git a/ext/pgsql/config.m4 b/ext/pgsql/config.m4 index f9ba584f31989..7d58564b70ef7 100644 --- a/ext/pgsql/config.m4 +++ b/ext/pgsql/config.m4 @@ -62,6 +62,8 @@ if test "$PHP_PGSQL" != "no"; then old_LIBS=$LIBS old_LDFLAGS=$LDFLAGS LDFLAGS="-L$PGSQL_LIBDIR $LDFLAGS" + old_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -I$PGSQL_INCLUDE" AC_CHECK_LIB(pq, PQlibVersion,, AC_MSG_ERROR([Unable to build the PostgreSQL extension: at least libpq 9.1 is required])) AC_CHECK_LIB(pq, pg_encoding_to_char,AC_DEFINE(HAVE_PGSQL_WITH_MULTIBYTE_SUPPORT,1,[Whether libpq is compiled with --enable-multibyte])) AC_CHECK_LIB(pq, lo_truncate64, AC_DEFINE(HAVE_PG_LO64,1,[PostgreSQL 9.3 or later])) @@ -69,8 +71,21 @@ if test "$PHP_PGSQL" != "no"; then AC_CHECK_LIB(pq, PQresultMemorySize, AC_DEFINE(HAVE_PG_RESULT_MEMORY_SIZE,1,[PostgreSQL 12 or later])) AC_CHECK_LIB(pq, PQchangePassword, AC_DEFINE(HAVE_PG_CHANGE_PASSWORD,1,[PostgreSQL 17 or later])) AC_CHECK_LIB(pq, PQsocketPoll, AC_DEFINE(HAVE_PG_SOCKET_POLL,1,[PostgreSQL 17 or later])) + + dnl Available since PostgreSQL 12. + AC_CACHE_CHECK([if PGVerbosity enum has PQERRORS_SQLSTATE], + [php_cv_enum_pgverbosity_pqerrors_sqlstate], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], + [PGVerbosity e = PQERRORS_SQLSTATE; (void)e;])], + [php_cv_enum_pgverbosity_pqerrors_sqlstate=yes], + [php_cv_enum_pgverbosity_pqerrors_sqlstate=no])]) + AS_VAR_IF([php_cv_enum_pgverbosity_pqerrors_sqlstate], [yes], + [AC_DEFINE([HAVE_PQERRORS_SQLSTATE], [1], + [Define to 1 if PGVerbosity enum has PQERRORS_SQLSTATE.])]) + LIBS=$old_LIBS LDFLAGS=$old_LDFLAGS + CFLAGS=$old_CFLAGS PHP_ADD_LIBRARY_WITH_PATH(pq, $PGSQL_LIBDIR, PGSQL_SHARED_LIBADD) PHP_SUBST(PGSQL_SHARED_LIBADD) diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index 54cb422a7ff73..52b925881086b 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -116,7 +116,7 @@ char pgsql_libpq_version[16]; #define PQfreemem free #endif -#if PG_VERSION_NUM < 120000 +#ifndef HAVE_PQERRORS_SQLSTATE #define PQERRORS_SQLSTATE 0 #endif diff --git a/ext/pgsql/pgsql.stub.php b/ext/pgsql/pgsql.stub.php index 60109e4048061..33bf5c2f2326e 100644 --- a/ext/pgsql/pgsql.stub.php +++ b/ext/pgsql/pgsql.stub.php @@ -183,7 +183,7 @@ * @cvalue PQERRORS_VERBOSE */ const PGSQL_ERRORS_VERBOSE = UNKNOWN; - #if PG_VERSION_NUM > 110000 + #ifdef HAVE_PQERRORS_SQLSTATE /** * @var int * @cvalue PQERRORS_SQLSTATE diff --git a/ext/pgsql/pgsql_arginfo.h b/ext/pgsql/pgsql_arginfo.h index 11dc737af4739..e086d39aa423b 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: 0ea640eeff569a01b335eb1ab4ae3bc90598c5e2 */ + * Stub hash: 464db6ede26d59885bec20e40346702f84c3e515 */ 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) @@ -765,10 +765,10 @@ 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 PG_VERSION_NUM > 110000 +#if defined(HAVE_PQERRORS_SQLSTATE) REGISTER_LONG_CONSTANT("PGSQL_ERRORS_SQLSTATE", PQERRORS_SQLSTATE, CONST_PERSISTENT); #endif -#if !(PG_VERSION_NUM > 110000) +#if !(defined(HAVE_PQERRORS_SQLSTATE)) REGISTER_LONG_CONSTANT("PGSQL_ERRORS_SQLSTATE", PQERRORS_TERSE, CONST_PERSISTENT); #endif REGISTER_LONG_CONSTANT("PGSQL_SEEK_SET", SEEK_SET, CONST_PERSISTENT);