From d7a1b44826187710575bbd12b99cfbd6579b2f8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Kocsis?= Date: Fri, 22 Jul 2022 09:31:57 +0200 Subject: [PATCH] Declare ext/pgsql constants in stubs --- ext/pgsql/pgsql.c | 120 +---------- ext/pgsql/pgsql.stub.php | 410 +++++++++++++++++++++++++++++++++++++- ext/pgsql/pgsql_arginfo.h | 94 ++++++++- 3 files changed, 512 insertions(+), 112 deletions(-) diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index 31b1480e3ffe2..b5c4b77ad3f71 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -39,7 +39,6 @@ #include "php_pgsql.h" #include "php_globals.h" #include "zend_exceptions.h" -#include "pgsql_arginfo.h" #ifdef HAVE_PGSQL @@ -61,6 +60,10 @@ #define PGSQL_MAX_LENGTH_OF_LONG 30 #define PGSQL_MAX_LENGTH_OF_DOUBLE 60 +char pgsql_libpq_version[16]; + +#include "pgsql_arginfo.h" + #if ZEND_LONG_MAX < UINT_MAX #define PGSQL_RETURN_OID(oid) do { \ if (oid > ZEND_LONG_MAX) { \ @@ -431,8 +434,6 @@ static void php_libpq_version(char *buf, size_t len) PHP_MINIT_FUNCTION(pgsql) { - char buf[16]; - REGISTER_INI_ENTRIES(); le_plink = zend_register_list_destructors_ex(NULL, _close_pgsql_plink, "pgsql link persistent", module_number); @@ -468,108 +469,10 @@ PHP_MINIT_FUNCTION(pgsql) pgsql_lob_object_handlers.compare = zend_objects_not_comparable; /* libpq version */ - php_libpq_version(buf, sizeof(buf)); - REGISTER_STRING_CONSTANT("PGSQL_LIBPQ_VERSION", buf, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("PGSQL_LIBPQ_VERSION_STR", buf, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); - /* For connection option */ - REGISTER_LONG_CONSTANT("PGSQL_CONNECT_FORCE_NEW", PGSQL_CONNECT_FORCE_NEW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONNECT_ASYNC", PGSQL_CONNECT_ASYNC, CONST_CS | CONST_PERSISTENT); - /* For pg_fetch_array() */ - REGISTER_LONG_CONSTANT("PGSQL_ASSOC", PGSQL_ASSOC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_NUM", PGSQL_NUM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_BOTH", PGSQL_BOTH, CONST_CS | CONST_PERSISTENT); - /* For pg_last_notice() */ - REGISTER_LONG_CONSTANT("PGSQL_NOTICE_LAST", PGSQL_NOTICE_LAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_NOTICE_ALL", PGSQL_NOTICE_ALL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_NOTICE_CLEAR", PGSQL_NOTICE_CLEAR, CONST_CS | CONST_PERSISTENT); - /* For pg_connection_status() */ - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_BAD", CONNECTION_BAD, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_OK", CONNECTION_OK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_STARTED", CONNECTION_STARTED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_MADE", CONNECTION_MADE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_AWAITING_RESPONSE", CONNECTION_AWAITING_RESPONSE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_AUTH_OK", CONNECTION_AUTH_OK, CONST_CS | CONST_PERSISTENT); -#ifdef CONNECTION_SSL_STARTUP - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_SSL_STARTUP", CONNECTION_SSL_STARTUP, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_SETENV", CONNECTION_SETENV, CONST_CS | CONST_PERSISTENT); - /* For pg_connect_poll() */ - REGISTER_LONG_CONSTANT("PGSQL_POLLING_FAILED", PGRES_POLLING_FAILED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_POLLING_READING", PGRES_POLLING_READING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_POLLING_WRITING", PGRES_POLLING_WRITING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_POLLING_OK", PGRES_POLLING_OK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_POLLING_ACTIVE", PGRES_POLLING_ACTIVE, CONST_CS | CONST_PERSISTENT); - /* For pg_transaction_status() */ - REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_IDLE", PQTRANS_IDLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_ACTIVE", PQTRANS_ACTIVE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_INTRANS", PQTRANS_INTRANS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_INERROR", PQTRANS_INERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_UNKNOWN", PQTRANS_UNKNOWN, CONST_CS | CONST_PERSISTENT); - /* For pg_set_error_verbosity() */ - REGISTER_LONG_CONSTANT("PGSQL_ERRORS_TERSE", PQERRORS_TERSE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_ERRORS_DEFAULT", PQERRORS_DEFAULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_ERRORS_VERBOSE", PQERRORS_VERBOSE, CONST_CS | CONST_PERSISTENT); - /* For lo_seek() */ - REGISTER_LONG_CONSTANT("PGSQL_SEEK_SET", SEEK_SET, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_SEEK_CUR", SEEK_CUR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_SEEK_END", SEEK_END, CONST_CS | CONST_PERSISTENT); - /* For pg_result_status() return value type */ - REGISTER_LONG_CONSTANT("PGSQL_STATUS_LONG", PGSQL_STATUS_LONG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_STATUS_STRING", PGSQL_STATUS_STRING, CONST_CS | CONST_PERSISTENT); - /* For pg_result_status() return value */ - REGISTER_LONG_CONSTANT("PGSQL_EMPTY_QUERY", PGRES_EMPTY_QUERY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_COMMAND_OK", PGRES_COMMAND_OK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_TUPLES_OK", PGRES_TUPLES_OK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_COPY_OUT", PGRES_COPY_OUT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_COPY_IN", PGRES_COPY_IN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_BAD_RESPONSE", PGRES_BAD_RESPONSE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_NONFATAL_ERROR", PGRES_NONFATAL_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_FATAL_ERROR", PGRES_FATAL_ERROR, CONST_CS | CONST_PERSISTENT); - /* For pg_result_error_field() field codes */ - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SEVERITY", PG_DIAG_SEVERITY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SQLSTATE", PG_DIAG_SQLSTATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_PRIMARY", PG_DIAG_MESSAGE_PRIMARY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_DETAIL", PG_DIAG_MESSAGE_DETAIL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_HINT", PG_DIAG_MESSAGE_HINT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_STATEMENT_POSITION", PG_DIAG_STATEMENT_POSITION, CONST_CS | CONST_PERSISTENT); -#ifdef PG_DIAG_INTERNAL_POSITION - REGISTER_LONG_CONSTANT("PGSQL_DIAG_INTERNAL_POSITION", PG_DIAG_INTERNAL_POSITION, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef PG_DIAG_INTERNAL_QUERY - REGISTER_LONG_CONSTANT("PGSQL_DIAG_INTERNAL_QUERY", PG_DIAG_INTERNAL_QUERY, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("PGSQL_DIAG_CONTEXT", PG_DIAG_CONTEXT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_FILE", PG_DIAG_SOURCE_FILE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_LINE", PG_DIAG_SOURCE_LINE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_FUNCTION", PG_DIAG_SOURCE_FUNCTION, CONST_CS | CONST_PERSISTENT); -#ifdef PG_DIAG_SCHEMA_NAME - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SCHEMA_NAME", PG_DIAG_SCHEMA_NAME, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef PG_DIAG_TABLE_NAME - REGISTER_LONG_CONSTANT("PGSQL_DIAG_TABLE_NAME", PG_DIAG_TABLE_NAME, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef PG_DIAG_COLUMN_NAME - REGISTER_LONG_CONSTANT("PGSQL_DIAG_COLUMN_NAME", PG_DIAG_COLUMN_NAME, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef PG_DIAG_DATATYPE_NAME - REGISTER_LONG_CONSTANT("PGSQL_DIAG_DATATYPE_NAME", PG_DIAG_DATATYPE_NAME, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef PG_DIAG_CONSTRAINT_NAME - REGISTER_LONG_CONSTANT("PGSQL_DIAG_CONSTRAINT_NAME", PG_DIAG_CONSTRAINT_NAME, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef PG_DIAG_SEVERITY_NONLOCALIZED - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SEVERITY_NONLOCALIZED", PG_DIAG_SEVERITY_NONLOCALIZED, CONST_CS | CONST_PERSISTENT); -#endif - /* pg_convert options */ - REGISTER_LONG_CONSTANT("PGSQL_CONV_IGNORE_DEFAULT", PGSQL_CONV_IGNORE_DEFAULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONV_FORCE_NULL", PGSQL_CONV_FORCE_NULL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONV_IGNORE_NOT_NULL", PGSQL_CONV_IGNORE_NOT_NULL, CONST_CS | CONST_PERSISTENT); - /* pg_insert/update/delete/select options */ - REGISTER_LONG_CONSTANT("PGSQL_DML_ESCAPE", PGSQL_DML_ESCAPE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DML_NO_CONV", PGSQL_DML_NO_CONV, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DML_EXEC", PGSQL_DML_EXEC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DML_ASYNC", PGSQL_DML_ASYNC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DML_STRING", PGSQL_DML_STRING, CONST_CS | CONST_PERSISTENT); + php_libpq_version(pgsql_libpq_version, sizeof(pgsql_libpq_version)); + + register_pgsql_symbols(module_number); + return SUCCESS; } @@ -610,8 +513,7 @@ PHP_MINFO_FUNCTION(pgsql) php_info_print_table_start(); php_info_print_table_header(2, "PostgreSQL Support", "enabled"); - php_libpq_version(buf, sizeof(buf)); - php_info_print_table_row(2, "PostgreSQL (libpq) Version", buf); + php_info_print_table_row(2, "PostgreSQL (libpq) Version", pgsql_libpq_version); #ifdef HAVE_PGSQL_WITH_MULTIBYTE_SUPPORT php_info_print_table_row(2, "Multibyte character support", "enabled"); #else @@ -910,9 +812,7 @@ static void php_pgsql_get_link_info(INTERNAL_FUNCTION_PARAMETERS, int entry_type break; case PHP_PG_VERSION: array_init(return_value); - char buf[16]; - php_libpq_version(buf, sizeof(buf)); - add_assoc_string(return_value, "client", buf); + add_assoc_string(return_value, "client", pgsql_libpq_version); add_assoc_long(return_value, "protocol", PQprotocolVersion(pgsql)); if (PQprotocolVersion(pgsql) >= 3) { /* 8.0 or grater supports protorol version 3 */ diff --git a/ext/pgsql/pgsql.stub.php b/ext/pgsql/pgsql.stub.php index cbe1bc877f36f..3eea65f586d16 100644 --- a/ext/pgsql/pgsql.stub.php +++ b/ext/pgsql/pgsql.stub.php @@ -3,6 +3,415 @@ /** @generate-class-entries */ namespace PgSql { + /* libpq version */ + + /** + * @var string + * @cvalue pgsql_libpq_version + */ + const PGSQL_LIBPQ_VERSION = UNKNOWN; + /** + * @var string + * @cvalue pgsql_libpq_version + * @deprecated + */ + const PGSQL_LIBPQ_VERSION_STR = UNKNOWN; + + /* For connection option */ + + /** + * @var int + * @cvalue PGSQL_CONNECT_FORCE_NEW + */ + const PGSQL_CONNECT_FORCE_NEW = UNKNOWN; + /** + * @var int + * @cvalue PGSQL_CONNECT_ASYNC + */ + const PGSQL_CONNECT_ASYNC = UNKNOWN; + + /* For pg_fetch_array() */ + + /** + * @var int + * @cvalue PGSQL_ASSOC + */ + const PGSQL_ASSOC = UNKNOWN; + /** + * @var int + * @cvalue PGSQL_NUM + */ + const PGSQL_NUM = UNKNOWN; + /** + * @var int + * @cvalue PGSQL_BOTH + */ + const PGSQL_BOTH = UNKNOWN; + + /* For pg_last_notice() */ + + /** + * @var int + * @cvalue PGSQL_NOTICE_LAST + */ + const PGSQL_NOTICE_LAST = UNKNOWN; + /** + * @var int + * @cvalue PGSQL_NOTICE_ALL + */ + const PGSQL_NOTICE_ALL = UNKNOWN; + /** + * @var int + * @cvalue PGSQL_NOTICE_CLEAR + */ + const PGSQL_NOTICE_CLEAR = UNKNOWN; + + /* For pg_connection_status() */ + + /** + * @var int + * @cvalue CONNECTION_BAD + */ + const PGSQL_CONNECTION_BAD = UNKNOWN; + /** + * @var int + * @cvalue CONNECTION_OK + */ + const PGSQL_CONNECTION_OK = UNKNOWN; + /** + * @var int + * @cvalue CONNECTION_STARTED + */ + const PGSQL_CONNECTION_STARTED = UNKNOWN; + /** + * @var int + * @cvalue CONNECTION_MADE + */ + const PGSQL_CONNECTION_MADE = UNKNOWN; + /** + * @var int + * @cvalue CONNECTION_AWAITING_RESPONSE + */ + const PGSQL_CONNECTION_AWAITING_RESPONSE = UNKNOWN; + /** + * @var int + * @cvalue CONNECTION_AUTH_OK + */ + const PGSQL_CONNECTION_AUTH_OK = UNKNOWN; +#ifdef CONNECTION_SSL_STARTUP + /** + * @var int + * @cvalue CONNECTION_SSL_STARTUP + */ + const PGSQL_CONNECTION_SSL_STARTUP = UNKNOWN; +#endif + /** + * @var int + * @cvalue CONNECTION_SETENV + */ + const PGSQL_CONNECTION_SETENV = UNKNOWN; + + /* For pg_connect_poll() */ + /** + * @var int + * @cvalue PGRES_POLLING_FAILED + */ + const PGSQL_POLLING_FAILED = UNKNOWN; + /** + * @var int + * @cvalue PGRES_POLLING_READING + */ + const PGSQL_POLLING_READING = UNKNOWN; + /** + * @var int + * @cvalue PGRES_POLLING_WRITING + */ + const PGSQL_POLLING_WRITING = UNKNOWN; + /** + * @var int + * @cvalue PGRES_POLLING_OK + */ + const PGSQL_POLLING_OK = UNKNOWN; + /** + * @var int + * @cvalue PGRES_POLLING_ACTIVE + */ + const PGSQL_POLLING_ACTIVE = UNKNOWN; + + /* For pg_transaction_status() */ + + /** + * @var int + * @cvalue PQTRANS_IDLE + */ + const PGSQL_TRANSACTION_IDLE = UNKNOWN; + /** + * @var int + * @cvalue PQTRANS_ACTIVE + */ + const PGSQL_TRANSACTION_ACTIVE = UNKNOWN; + /** + * @var int + * @cvalue PQTRANS_INTRANS + */ + const PGSQL_TRANSACTION_INTRANS = UNKNOWN; + /** + * @var int + * @cvalue PQTRANS_INERROR + */ + const PGSQL_TRANSACTION_INERROR = UNKNOWN; + /** + * @var int + * @cvalue PQTRANS_UNKNOWN + */ + const PGSQL_TRANSACTION_UNKNOWN = UNKNOWN; + + /* For pg_set_error_verbosity() */ + + /** + * @var int + * @cvalue PQERRORS_TERSE + */ + const PGSQL_ERRORS_TERSE = UNKNOWN; + /** + * @var int + * @cvalue PQERRORS_DEFAULT + */ + const PGSQL_ERRORS_DEFAULT = UNKNOWN; + /** + * @var int + * @cvalue PQERRORS_VERBOSE + */ + const PGSQL_ERRORS_VERBOSE = UNKNOWN; + + /* For lo_seek() */ + + /** + * @var int + * @cvalue SEEK_SET + */ + const PGSQL_SEEK_SET = UNKNOWN; + /** + * @var int + * @cvalue SEEK_CUR + */ + const PGSQL_SEEK_CUR = UNKNOWN; + /** + * @var int + * @cvalue SEEK_END + */ + const PGSQL_SEEK_END = UNKNOWN; + + /* For pg_result_status() return value type */ + + /** + * @var int + * @cvalue PGSQL_STATUS_LONG + */ + const PGSQL_STATUS_LONG = UNKNOWN; + /** + * @var int + * @cvalue PGSQL_STATUS_STRING + */ + const PGSQL_STATUS_STRING = UNKNOWN; + + /* For pg_result_status() return value */ + + /** + * @var int + * @cvalue PGRES_EMPTY_QUERY + */ + const PGSQL_EMPTY_QUERY = UNKNOWN; + /** + * @var int + * @cvalue PGRES_COMMAND_OK + */ + const PGSQL_COMMAND_OK = UNKNOWN; + /** + * @var int + * @cvalue PGRES_TUPLES_OK + */ + const PGSQL_TUPLES_OK = UNKNOWN; + /** + * @var int + * @cvalue PGRES_COPY_OUT + */ + const PGSQL_COPY_OUT = UNKNOWN; + /** + * @var int + * @cvalue PGRES_COPY_IN + */ + const PGSQL_COPY_IN = UNKNOWN; + /** + * @var int + * @cvalue PGRES_BAD_RESPONSE + */ + const PGSQL_BAD_RESPONSE = UNKNOWN; + /** + * @var int + * @cvalue PGRES_NONFATAL_ERROR + */ + const PGSQL_NONFATAL_ERROR = UNKNOWN; + /** + * @var int + * @cvalue PGRES_FATAL_ERROR + */ + const PGSQL_FATAL_ERROR = UNKNOWN; + + /* For pg_result_error_field() field codes */ + + /** + * @var int + * @cvalue PG_DIAG_SEVERITY + */ + const PGSQL_DIAG_SEVERITY = UNKNOWN; + /** + * @var int + * @cvalue PG_DIAG_SQLSTATE + */ + const PGSQL_DIAG_SQLSTATE = UNKNOWN; + /** + * @var int + * @cvalue PG_DIAG_MESSAGE_PRIMARY + */ + const PGSQL_DIAG_MESSAGE_PRIMARY = UNKNOWN; + /** + * @var int + * @cvalue PG_DIAG_MESSAGE_DETAIL + */ + const PGSQL_DIAG_MESSAGE_DETAIL = UNKNOWN; + /** + * @var int + * @cvalue PG_DIAG_MESSAGE_HINT + */ + const PGSQL_DIAG_MESSAGE_HINT = UNKNOWN; + /** + * @var int + * @cvalue PG_DIAG_STATEMENT_POSITION + */ + const PGSQL_DIAG_STATEMENT_POSITION = UNKNOWN; +#ifdef PG_DIAG_INTERNAL_POSITION + /** + * @var int + * @cvalue PG_DIAG_INTERNAL_POSITION + */ + const PGSQL_DIAG_INTERNAL_POSITION = UNKNOWN; +#endif +#ifdef PG_DIAG_INTERNAL_QUERY + /** + * @var int + * @cvalue PG_DIAG_INTERNAL_QUERY + */ + const PGSQL_DIAG_INTERNAL_QUERY = UNKNOWN; +#endif + /** + * @var int + * @cvalue PG_DIAG_CONTEXT + */ + const PGSQL_DIAG_CONTEXT = UNKNOWN; + /** + * @var int + * @cvalue PG_DIAG_SOURCE_FILE + */ + const PGSQL_DIAG_SOURCE_FILE = UNKNOWN; + /** + * @var int + * @cvalue PG_DIAG_SOURCE_LINE + */ + const PGSQL_DIAG_SOURCE_LINE = UNKNOWN; + /** + * @var int + * @cvalue PG_DIAG_SOURCE_FUNCTION + */ + const PGSQL_DIAG_SOURCE_FUNCTION = UNKNOWN; +#ifdef PG_DIAG_SCHEMA_NAME + /** + * @var int + * @cvalue PG_DIAG_SCHEMA_NAME + */ + const PGSQL_DIAG_SCHEMA_NAME = UNKNOWN; +#endif +#ifdef PG_DIAG_TABLE_NAME + /** + * @var int + * @cvalue PG_DIAG_TABLE_NAME + */ + const PGSQL_DIAG_TABLE_NAME = UNKNOWN; +#endif +#ifdef PG_DIAG_COLUMN_NAME + /** + * @var int + * @cvalue PG_DIAG_COLUMN_NAME + */ + const PGSQL_DIAG_COLUMN_NAME = UNKNOWN; +#endif +#ifdef PG_DIAG_DATATYPE_NAME + /** + * @var int + * @cvalue PG_DIAG_DATATYPE_NAME + */ + const PGSQL_DIAG_DATATYPE_NAME = UNKNOWN; +#endif +#ifdef PG_DIAG_CONSTRAINT_NAME + /** + * @var int + * @cvalue PG_DIAG_CONSTRAINT_NAME + */ + const PGSQL_DIAG_CONSTRAINT_NAME = UNKNOWN; +#endif +#ifdef PG_DIAG_SEVERITY_NONLOCALIZED + /** + * @var int + * @cvalue PG_DIAG_SEVERITY_NONLOCALIZED + */ + const PGSQL_DIAG_SEVERITY_NONLOCALIZED = UNKNOWN; +#endif + + /* pg_convert options */ + + /** + * @var int + * @cvalue PGSQL_CONV_IGNORE_DEFAULT + */ + const PGSQL_CONV_IGNORE_DEFAULT = UNKNOWN; + /** + * @var int + * @cvalue PGSQL_CONV_FORCE_NULL + */ + const PGSQL_CONV_FORCE_NULL = UNKNOWN; + /** + * @var int + * @cvalue PGSQL_CONV_IGNORE_NOT_NULL + */ + const PGSQL_CONV_IGNORE_NOT_NULL = UNKNOWN; + + /* pg_insert/update/delete/select options */ + + /** + * @var int + * @cvalue PGSQL_DML_ESCAPE + */ + const PGSQL_DML_ESCAPE = UNKNOWN; + /** + * @var int + * @cvalue PGSQL_DML_NO_CONV + */ + const PGSQL_DML_NO_CONV = UNKNOWN; + /** + * @var int + * @cvalue PGSQL_DML_EXEC + */ + const PGSQL_DML_EXEC = UNKNOWN; + /** + * @var int + * @cvalue PGSQL_DML_ASYNC + */ + const PGSQL_DML_ASYNC = UNKNOWN; + /** + * @var int + * @cvalue PGSQL_DML_STRING + */ + const PGSQL_DML_STRING = UNKNOWN; /** * @strict-properties @@ -513,5 +922,4 @@ function pg_delete(PgSql\Connection $connection, string $table_name, array $cond * @refcount 1 */ function pg_select(PgSql\Connection $connection, string $table_name, array $conditions, int $flags = PGSQL_DML_EXEC, int $mode = PGSQL_ASSOC): array|string|false {} - } diff --git a/ext/pgsql/pgsql_arginfo.h b/ext/pgsql/pgsql_arginfo.h index d1dfcd1c905f5..dd6abfc29a6e6 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: 35f41dd74485f921feddc223085dea520f8d816e */ + * Stub hash: 16b910c38da087e1b4b55e38031b593334c698ec */ 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) @@ -674,6 +674,98 @@ static const zend_function_entry class_PgSql_Lob_methods[] = { ZEND_FE_END }; +static void register_pgsql_symbols(int module_number) +{ + REGISTER_STRING_CONSTANT("PGSQL_LIBPQ_VERSION", pgsql_libpq_version, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("PGSQL_LIBPQ_VERSION_STR", pgsql_libpq_version, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("PGSQL_CONNECT_FORCE_NEW", PGSQL_CONNECT_FORCE_NEW, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONNECT_ASYNC", PGSQL_CONNECT_ASYNC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_ASSOC", PGSQL_ASSOC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_NUM", PGSQL_NUM, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_BOTH", PGSQL_BOTH, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_NOTICE_LAST", PGSQL_NOTICE_LAST, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_NOTICE_ALL", PGSQL_NOTICE_ALL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_NOTICE_CLEAR", PGSQL_NOTICE_CLEAR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_BAD", CONNECTION_BAD, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_OK", CONNECTION_OK, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_STARTED", CONNECTION_STARTED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_MADE", CONNECTION_MADE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_AWAITING_RESPONSE", CONNECTION_AWAITING_RESPONSE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_AUTH_OK", CONNECTION_AUTH_OK, CONST_CS | CONST_PERSISTENT); +#if defined(CONNECTION_SSL_STARTUP) + REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_SSL_STARTUP", CONNECTION_SSL_STARTUP, CONST_CS | CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_SETENV", CONNECTION_SETENV, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_POLLING_FAILED", PGRES_POLLING_FAILED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_POLLING_READING", PGRES_POLLING_READING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_POLLING_WRITING", PGRES_POLLING_WRITING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_POLLING_OK", PGRES_POLLING_OK, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_POLLING_ACTIVE", PGRES_POLLING_ACTIVE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_IDLE", PQTRANS_IDLE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_ACTIVE", PQTRANS_ACTIVE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_INTRANS", PQTRANS_INTRANS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_INERROR", PQTRANS_INERROR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_UNKNOWN", PQTRANS_UNKNOWN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_ERRORS_TERSE", PQERRORS_TERSE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_ERRORS_DEFAULT", PQERRORS_DEFAULT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_ERRORS_VERBOSE", PQERRORS_VERBOSE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_SEEK_SET", SEEK_SET, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_SEEK_CUR", SEEK_CUR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_SEEK_END", SEEK_END, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_STATUS_LONG", PGSQL_STATUS_LONG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_STATUS_STRING", PGSQL_STATUS_STRING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_EMPTY_QUERY", PGRES_EMPTY_QUERY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_COMMAND_OK", PGRES_COMMAND_OK, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_TUPLES_OK", PGRES_TUPLES_OK, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_COPY_OUT", PGRES_COPY_OUT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_COPY_IN", PGRES_COPY_IN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_BAD_RESPONSE", PGRES_BAD_RESPONSE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_NONFATAL_ERROR", PGRES_NONFATAL_ERROR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_FATAL_ERROR", PGRES_FATAL_ERROR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_SEVERITY", PG_DIAG_SEVERITY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_SQLSTATE", PG_DIAG_SQLSTATE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_PRIMARY", PG_DIAG_MESSAGE_PRIMARY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_DETAIL", PG_DIAG_MESSAGE_DETAIL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_HINT", PG_DIAG_MESSAGE_HINT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_STATEMENT_POSITION", PG_DIAG_STATEMENT_POSITION, CONST_CS | CONST_PERSISTENT); +#if defined(PG_DIAG_INTERNAL_POSITION) + REGISTER_LONG_CONSTANT("PGSQL_DIAG_INTERNAL_POSITION", PG_DIAG_INTERNAL_POSITION, CONST_CS | CONST_PERSISTENT); +#endif +#if defined(PG_DIAG_INTERNAL_QUERY) + REGISTER_LONG_CONSTANT("PGSQL_DIAG_INTERNAL_QUERY", PG_DIAG_INTERNAL_QUERY, CONST_CS | CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("PGSQL_DIAG_CONTEXT", PG_DIAG_CONTEXT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_FILE", PG_DIAG_SOURCE_FILE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_LINE", PG_DIAG_SOURCE_LINE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_FUNCTION", PG_DIAG_SOURCE_FUNCTION, CONST_CS | CONST_PERSISTENT); +#if defined(PG_DIAG_SCHEMA_NAME) + REGISTER_LONG_CONSTANT("PGSQL_DIAG_SCHEMA_NAME", PG_DIAG_SCHEMA_NAME, CONST_CS | CONST_PERSISTENT); +#endif +#if defined(PG_DIAG_TABLE_NAME) + REGISTER_LONG_CONSTANT("PGSQL_DIAG_TABLE_NAME", PG_DIAG_TABLE_NAME, CONST_CS | CONST_PERSISTENT); +#endif +#if defined(PG_DIAG_COLUMN_NAME) + REGISTER_LONG_CONSTANT("PGSQL_DIAG_COLUMN_NAME", PG_DIAG_COLUMN_NAME, CONST_CS | CONST_PERSISTENT); +#endif +#if defined(PG_DIAG_DATATYPE_NAME) + REGISTER_LONG_CONSTANT("PGSQL_DIAG_DATATYPE_NAME", PG_DIAG_DATATYPE_NAME, CONST_CS | CONST_PERSISTENT); +#endif +#if defined(PG_DIAG_CONSTRAINT_NAME) + REGISTER_LONG_CONSTANT("PGSQL_DIAG_CONSTRAINT_NAME", PG_DIAG_CONSTRAINT_NAME, CONST_CS | CONST_PERSISTENT); +#endif +#if defined(PG_DIAG_SEVERITY_NONLOCALIZED) + REGISTER_LONG_CONSTANT("PGSQL_DIAG_SEVERITY_NONLOCALIZED", PG_DIAG_SEVERITY_NONLOCALIZED, CONST_CS | CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("PGSQL_CONV_IGNORE_DEFAULT", PGSQL_CONV_IGNORE_DEFAULT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONV_FORCE_NULL", PGSQL_CONV_FORCE_NULL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONV_IGNORE_NOT_NULL", PGSQL_CONV_IGNORE_NOT_NULL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DML_ESCAPE", PGSQL_DML_ESCAPE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DML_NO_CONV", PGSQL_DML_NO_CONV, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DML_EXEC", PGSQL_DML_EXEC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DML_ASYNC", PGSQL_DML_ASYNC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DML_STRING", PGSQL_DML_STRING, CONST_CS | CONST_PERSISTENT); +} + static zend_class_entry *register_class_PgSql_Connection(void) { zend_class_entry ce, *class_entry;