From 830edcfbb6246a88887d1c7ec973444616569ffd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Kocsis?= Date: Thu, 16 Jun 2022 09:41:28 +0200 Subject: [PATCH 1/5] Declare ext/mysqli constants in stubs --- ext/mysqli/mysqli.c | 161 ---------- ext/mysqli/mysqli.stub.php | 612 ++++++++++++++++++++++++++++++++++++ ext/mysqli/mysqli_arginfo.h | 131 +++++++- ext/mysqli/mysqli_priv.h | 6 + 4 files changed, 748 insertions(+), 162 deletions(-) diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index 9f031706eaa34..8d2d2b8847b0e 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -533,167 +533,6 @@ PHP_MINIT_FUNCTION(mysqli) MYSQLI_ADD_PROPERTIES(&mysqli_stmt_properties, mysqli_stmt_property_entries); zend_hash_add_ptr(&classes, mysqli_stmt_class_entry->name, &mysqli_stmt_properties); - /* mysqli_options */ - REGISTER_LONG_CONSTANT("MYSQLI_READ_DEFAULT_GROUP", MYSQL_READ_DEFAULT_GROUP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_READ_DEFAULT_FILE", MYSQL_READ_DEFAULT_FILE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_CONNECT_TIMEOUT", MYSQL_OPT_CONNECT_TIMEOUT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_LOCAL_INFILE", MYSQL_OPT_LOCAL_INFILE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_LOAD_DATA_LOCAL_DIR", MYSQL_OPT_LOAD_DATA_LOCAL_DIR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_INIT_COMMAND", MYSQL_INIT_COMMAND, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_READ_TIMEOUT", MYSQL_OPT_READ_TIMEOUT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_NET_CMD_BUFFER_SIZE", MYSQLND_OPT_NET_CMD_BUFFER_SIZE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_NET_READ_BUFFER_SIZE", MYSQLND_OPT_NET_READ_BUFFER_SIZE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_INT_AND_FLOAT_NATIVE", MYSQLND_OPT_INT_AND_FLOAT_NATIVE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_SSL_VERIFY_SERVER_CERT", MYSQL_OPT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("MYSQLI_SERVER_PUBLIC_KEY", MYSQL_SERVER_PUBLIC_KEY, CONST_CS | CONST_PERSISTENT); - - /* mysqli_real_connect flags */ - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL", CLIENT_SSL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_COMPRESS",CLIENT_COMPRESS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_INTERACTIVE", CLIENT_INTERACTIVE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_IGNORE_SPACE", CLIENT_IGNORE_SPACE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_NO_SCHEMA", CLIENT_NO_SCHEMA, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_FOUND_ROWS", CLIENT_FOUND_ROWS, CONST_CS | CONST_PERSISTENT); -#ifdef CLIENT_SSL_VERIFY_SERVER_CERT - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT", CLIENT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT", CLIENT_SSL_DONT_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS", CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS", MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, CONST_CS | CONST_PERSISTENT); - - /* for mysqli_query */ - REGISTER_LONG_CONSTANT("MYSQLI_STORE_RESULT", MYSQLI_STORE_RESULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_USE_RESULT", MYSQLI_USE_RESULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_ASYNC", MYSQLI_ASYNC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_STORE_RESULT_COPY_DATA", MYSQLI_STORE_RESULT_COPY_DATA, CONST_CS | CONST_PERSISTENT); - - /* for mysqli_fetch_assoc */ - REGISTER_LONG_CONSTANT("MYSQLI_ASSOC", MYSQLI_ASSOC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_NUM", MYSQLI_NUM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_BOTH", MYSQLI_BOTH, CONST_CS | CONST_PERSISTENT); - - /* for mysqli_stmt_set_attr */ - REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH", STMT_ATTR_UPDATE_MAX_LENGTH, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_CURSOR_TYPE", STMT_ATTR_CURSOR_TYPE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_NO_CURSOR", CURSOR_TYPE_NO_CURSOR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_READ_ONLY", CURSOR_TYPE_READ_ONLY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_FOR_UPDATE", CURSOR_TYPE_FOR_UPDATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_SCROLLABLE", CURSOR_TYPE_SCROLLABLE, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_PREFETCH_ROWS", STMT_ATTR_PREFETCH_ROWS, CONST_CS | CONST_PERSISTENT); - - /* column information */ - REGISTER_LONG_CONSTANT("MYSQLI_NOT_NULL_FLAG", NOT_NULL_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_PRI_KEY_FLAG", PRI_KEY_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_UNIQUE_KEY_FLAG", UNIQUE_KEY_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_MULTIPLE_KEY_FLAG", MULTIPLE_KEY_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_BLOB_FLAG", BLOB_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_UNSIGNED_FLAG", UNSIGNED_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_ZEROFILL_FLAG", ZEROFILL_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_AUTO_INCREMENT_FLAG", AUTO_INCREMENT_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TIMESTAMP_FLAG", TIMESTAMP_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_SET_FLAG", SET_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_NUM_FLAG", NUM_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_PART_KEY_FLAG", PART_KEY_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_GROUP_FLAG", GROUP_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_ENUM_FLAG", ENUM_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_BINARY_FLAG", BINARY_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_NO_DEFAULT_VALUE_FLAG", NO_DEFAULT_VALUE_FLAG, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("MYSQLI_ON_UPDATE_NOW_FLAG", ON_UPDATE_NOW_FLAG, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DECIMAL", FIELD_TYPE_DECIMAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TINY", FIELD_TYPE_TINY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_SHORT", FIELD_TYPE_SHORT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_LONG", FIELD_TYPE_LONG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_FLOAT", FIELD_TYPE_FLOAT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DOUBLE", FIELD_TYPE_DOUBLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NULL", FIELD_TYPE_NULL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TIMESTAMP", FIELD_TYPE_TIMESTAMP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_LONGLONG", FIELD_TYPE_LONGLONG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_INT24", FIELD_TYPE_INT24, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DATE", FIELD_TYPE_DATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TIME", FIELD_TYPE_TIME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DATETIME", FIELD_TYPE_DATETIME , CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_YEAR", FIELD_TYPE_YEAR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NEWDATE", FIELD_TYPE_NEWDATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_ENUM", FIELD_TYPE_ENUM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_SET", FIELD_TYPE_SET, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TINY_BLOB", FIELD_TYPE_TINY_BLOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_MEDIUM_BLOB", FIELD_TYPE_MEDIUM_BLOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_LONG_BLOB", FIELD_TYPE_LONG_BLOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_BLOB", FIELD_TYPE_BLOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_VAR_STRING", FIELD_TYPE_VAR_STRING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_STRING", FIELD_TYPE_STRING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_CHAR", FIELD_TYPE_CHAR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_INTERVAL", FIELD_TYPE_INTERVAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_GEOMETRY", FIELD_TYPE_GEOMETRY, CONST_CS | CONST_PERSISTENT); -#ifdef FIELD_TYPE_JSON - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_JSON", FIELD_TYPE_JSON, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NEWDECIMAL", FIELD_TYPE_NEWDECIMAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_BIT", FIELD_TYPE_BIT, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("MYSQLI_SET_CHARSET_NAME", MYSQL_SET_CHARSET_NAME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_SET_CHARSET_DIR", MYSQL_SET_CHARSET_DIR, CONST_CS | CONST_PERSISTENT); - - /* bind support */ - REGISTER_LONG_CONSTANT("MYSQLI_NO_DATA", MYSQL_NO_DATA, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); -#ifdef MYSQL_DATA_TRUNCATED - REGISTER_LONG_CONSTANT("MYSQLI_DATA_TRUNCATED", MYSQL_DATA_TRUNCATED, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); -#endif - - /* reporting */ - REGISTER_LONG_CONSTANT("MYSQLI_REPORT_INDEX", MYSQLI_REPORT_INDEX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REPORT_ERROR", MYSQLI_REPORT_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REPORT_STRICT", MYSQLI_REPORT_STRICT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REPORT_ALL", MYSQLI_REPORT_ALL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REPORT_OFF", 0, CONST_CS | CONST_PERSISTENT); - - /* We use non-nested macros with expansion, as VC has problems */ - REGISTER_LONG_CONSTANT("MYSQLI_DEBUG_TRACE_ENABLED", MYSQLND_DBG_ENABLED, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED", SERVER_QUERY_NO_GOOD_INDEX_USED, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); - REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_INDEX_USED", SERVER_QUERY_NO_INDEX_USED, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); -#ifdef SERVER_QUERY_WAS_SLOW - REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_WAS_SLOW", SERVER_QUERY_WAS_SLOW, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); -#endif -#ifdef SERVER_PS_OUT_PARAMS - REGISTER_LONG_CONSTANT("MYSQLI_SERVER_PS_OUT_PARAMS", SERVER_PS_OUT_PARAMS, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); -#endif - - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_GRANT", REFRESH_GRANT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_LOG", REFRESH_LOG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_TABLES", REFRESH_TABLES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_HOSTS", REFRESH_HOSTS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_STATUS", REFRESH_STATUS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_THREADS", REFRESH_THREADS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_REPLICA", REFRESH_SLAVE, CONST_CS | CONST_PERSISTENT); - /* temporarily for backward compatibility */ - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_SLAVE", REFRESH_SLAVE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_MASTER", REFRESH_MASTER, CONST_CS | CONST_PERSISTENT); -#ifdef REFRESH_BACKUP_LOG - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_BACKUP_LOG", REFRESH_BACKUP_LOG, CONST_CS | CONST_PERSISTENT); -#endif - - - REGISTER_LONG_CONSTANT("MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT", TRANS_START_WITH_CONSISTENT_SNAPSHOT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TRANS_START_READ_WRITE", TRANS_START_READ_WRITE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TRANS_START_READ_ONLY", TRANS_START_READ_ONLY, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_AND_CHAIN", TRANS_COR_AND_CHAIN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_AND_NO_CHAIN", TRANS_COR_AND_NO_CHAIN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_RELEASE", TRANS_COR_RELEASE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_NO_RELEASE", TRANS_COR_NO_RELEASE, CONST_CS | CONST_PERSISTENT); - -#ifdef MARIADB_BASE_VERSION - REGISTER_BOOL_CONSTANT("MYSQLI_IS_MARIADB", 1, CONST_CS | CONST_PERSISTENT); -#else - REGISTER_BOOL_CONSTANT("MYSQLI_IS_MARIADB", 0, CONST_CS | CONST_PERSISTENT); -#endif - register_mysqli_symbols(module_number); mysqlnd_reverse_api_register_api(&mysqli_reverse_api); diff --git a/ext/mysqli/mysqli.stub.php b/ext/mysqli/mysqli.stub.php index 1821b8271c26b..f4bd6aa352b1f 100644 --- a/ext/mysqli/mysqli.stub.php +++ b/ext/mysqli/mysqli.stub.php @@ -2,6 +2,618 @@ /** @generate-class-entries */ +/* mysqli_options */ +/** + * @var int + * @cname MYSQL_READ_DEFAULT_GROUP + */ +const MYSQLI_READ_DEFAULT_GROUP = UNKNOWN; +/** + * @var int + * @cname MYSQL_READ_DEFAULT_FILE + */ +const MYSQLI_READ_DEFAULT_FILE = UNKNOWN; +/** + * @var int + * @cname MYSQL_OPT_CONNECT_TIMEOUT + */ +const MYSQLI_OPT_CONNECT_TIMEOUT = UNKNOWN; +/** + * @var int + * @cname MYSQL_OPT_LOCAL_INFILE + */ +const MYSQLI_OPT_LOCAL_INFILE = UNKNOWN; +/** + * @var int + * @cname MYSQL_OPT_LOAD_DATA_LOCAL_DIR + */ +const MYSQLI_OPT_LOAD_DATA_LOCAL_DIR = UNKNOWN; +/** + * @var int + * @cname MYSQL_INIT_COMMAND + */ +const MYSQLI_INIT_COMMAND = UNKNOWN; +/** + * @var int + * @cname MYSQL_OPT_READ_TIMEOUT + */ +const MYSQLI_OPT_READ_TIMEOUT = UNKNOWN; +/** + * @var int + * @cname MYSQLND_OPT_NET_CMD_BUFFER_SIZE + */ +const MYSQLI_OPT_NET_CMD_BUFFER_SIZE = UNKNOWN; +/** + * @var int + * @cname MYSQLND_OPT_NET_READ_BUFFER_SIZE + */ +const MYSQLI_OPT_NET_READ_BUFFER_SIZE = UNKNOWN; +/** + * @var int + * @cname MYSQLND_OPT_INT_AND_FLOAT_NATIVE + */ +const MYSQLI_OPT_INT_AND_FLOAT_NATIVE = UNKNOWN; +/** + * @var int + * @cname MYSQL_OPT_SSL_VERIFY_SERVER_CERT + */ +const MYSQLI_OPT_SSL_VERIFY_SERVER_CERT = UNKNOWN; + +/** + * @var int + * @cname MYSQL_SERVER_PUBLIC_KEY + */ +const MYSQLI_SERVER_PUBLIC_KEY = UNKNOWN; + +/* mysqli_real_connect flags */ +/** + * @var int + * @cname CLIENT_SSL + */ +const MYSQLI_CLIENT_SSL = UNKNOWN; +/** + * @var int + * @cname CLIENT_COMPRESS + */ +const MYSQLI_CLIENT_COMPRESS = UNKNOWN; +/** + * @var int + * @cname CLIENT_INTERACTIVE + */ +const MYSQLI_CLIENT_INTERACTIVE = UNKNOWN; +/** + * @var int + * @cname CLIENT_IGNORE_SPACE + */ +const MYSQLI_CLIENT_IGNORE_SPACE = UNKNOWN; +/** + * @var int + * @cname CLIENT_NO_SCHEMA + */ +const MYSQLI_CLIENT_NO_SCHEMA = UNKNOWN; +/** + * @var int + * @cname CLIENT_FOUND_ROWS + */ +const MYSQLI_CLIENT_FOUND_ROWS = UNKNOWN; +#ifdef CLIENT_SSL_VERIFY_SERVER_CERT +/** + * @var int + * @cname CLIENT_SSL_VERIFY_SERVER_CERT + */ +const MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT = UNKNOWN; +/** + * @var int + * @cname CLIENT_SSL_DONT_VERIFY_SERVER_CERT + */ +const MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT = UNKNOWN; +#endif +/** + * @var int + * @cname CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS + */ +const MYSQLI_CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS = UNKNOWN; +/** + * @var int + * @cname MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS + */ +const MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS = UNKNOWN; + +/* for mysqli_query */ +/** + * @var int + * @cname MYSQLI_STORE_RESULT + */ +const MYSQLI_STORE_RESULT = UNKNOWN; +/** + * @var int + * @cname MYSQLI_USE_RESULT + */ +const MYSQLI_USE_RESULT = UNKNOWN; +/** + * @var int + * @cname MYSQLI_ASYNC + */ +const MYSQLI_ASYNC = UNKNOWN; +/** + * @var int + * @cname MYSQLI_STORE_RESULT_COPY_DATA + */ +const MYSQLI_STORE_RESULT_COPY_DATA = UNKNOWN; + +/* for mysqli_fetch_assoc */ +/** + * @var int + * @cname MYSQLI_ASSOC + */ +const MYSQLI_ASSOC = UNKNOWN; +/** + * @var int + * @cname MYSQLI_NUM + */ +const MYSQLI_NUM = UNKNOWN; +/** + * @var int + * @cname MYSQLI_BOTH + */ +const MYSQLI_BOTH = UNKNOWN; + +/* for mysqli_stmt_set_attr */ +/** + * @var int + * @cname STMT_ATTR_UPDATE_MAX_LENGTH + */ +const MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH = UNKNOWN; + +/** + * @var int + * @cname STMT_ATTR_CURSOR_TYPE + */ +const MYSQLI_STMT_ATTR_CURSOR_TYPE = UNKNOWN; +/** + * @var int + * @cname CURSOR_TYPE_NO_CURSOR + */ +const MYSQLI_CURSOR_TYPE_NO_CURSOR = UNKNOWN; +/** + * @var int + * @cname CURSOR_TYPE_READ_ONLY + */ +const MYSQLI_CURSOR_TYPE_READ_ONLY = UNKNOWN; +/** + * @var int + * @cname CURSOR_TYPE_FOR_UPDATE + */ +const MYSQLI_CURSOR_TYPE_FOR_UPDATE = UNKNOWN; +/** + * @var int + * @cname CURSOR_TYPE_SCROLLABLE + */ +const MYSQLI_CURSOR_TYPE_SCROLLABLE = UNKNOWN; +/** + * @var int + * @cname STMT_ATTR_PREFETCH_ROWS + */ +const MYSQLI_STMT_ATTR_PREFETCH_ROWS = UNKNOWN; + +/* column information */ +/** + * @var int + * @cname NOT_NULL_FLAG + */ +const MYSQLI_NOT_NULL_FLAG = UNKNOWN; +/** + * @var int + * @cname PRI_KEY_FLAG + */ +const MYSQLI_PRI_KEY_FLAG = UNKNOWN; +/** + * @var int + * @cname UNIQUE_KEY_FLAG + */ +const MYSQLI_UNIQUE_KEY_FLAG = UNKNOWN; +/** + * @var int + * @cname MULTIPLE_KEY_FLAG + */ +const MYSQLI_MULTIPLE_KEY_FLAG = UNKNOWN; +/** + * @var int + * @cname BLOB_FLAG + */ +const MYSQLI_BLOB_FLAG = UNKNOWN; +/** + * @var int + * @cname UNSIGNED_FLAG + */ +const MYSQLI_UNSIGNED_FLAG = UNKNOWN; +/** + * @var int + * @cname ZEROFILL_FLAG + */ +const MYSQLI_ZEROFILL_FLAG = UNKNOWN; +/** + * @var int + * @cname AUTO_INCREMENT_FLAG + */ +const MYSQLI_AUTO_INCREMENT_FLAG = UNKNOWN; +/** + * @var int + * @cname TIMESTAMP_FLAG + */ +const MYSQLI_TIMESTAMP_FLAG = UNKNOWN; +/** + * @var int + * @cname SET_FLAG + */ +const MYSQLI_SET_FLAG = UNKNOWN; +/** + * @var int + * @cname NUM_FLAG + */ +const MYSQLI_NUM_FLAG = UNKNOWN; +/** + * @var int + * @cname PART_KEY_FLAG + */ +const MYSQLI_PART_KEY_FLAG = UNKNOWN; +/** + * @var int + * @cname GROUP_FLAG + */ +const MYSQLI_GROUP_FLAG = UNKNOWN; +/** + * @var int + * @cname ENUM_FLAG + */ +const MYSQLI_ENUM_FLAG = UNKNOWN; +/** + * @var int + * @cname BINARY_FLAG + */ +const MYSQLI_BINARY_FLAG = UNKNOWN; +/** + * @var int + * @cname NO_DEFAULT_VALUE_FLAG + */ +const MYSQLI_NO_DEFAULT_VALUE_FLAG = UNKNOWN; + +/** + * @var int + * @cname ON_UPDATE_NOW_FLAG + */ +const MYSQLI_ON_UPDATE_NOW_FLAG = UNKNOWN; + +/** + * @var int + * @cname FIELD_TYPE_DECIMAL + */ +const MYSQLI_TYPE_DECIMAL = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_TINY + */ +const MYSQLI_TYPE_TINY = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_SHORT + */ +const MYSQLI_TYPE_SHORT = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_LONG + */ +const MYSQLI_TYPE_LONG = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_FLOAT + */ +const MYSQLI_TYPE_FLOAT = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_DOUBLE + */ +const MYSQLI_TYPE_DOUBLE = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_NULL + */ +const MYSQLI_TYPE_NULL = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_TIMESTAMP + */ +const MYSQLI_TYPE_TIMESTAMP = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_LONGLONG + */ +const MYSQLI_TYPE_LONGLONG = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_INT24 + */ +const MYSQLI_TYPE_INT24 = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_DATE + */ +const MYSQLI_TYPE_DATE = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_TIME + */ +const MYSQLI_TYPE_TIME = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_DATETIME + */ +const MYSQLI_TYPE_DATETIME = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_YEAR + */ +const MYSQLI_TYPE_YEAR = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_NEWDATE + */ +const MYSQLI_TYPE_NEWDATE = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_ENUM + */ +const MYSQLI_TYPE_ENUM = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_SET + */ +const MYSQLI_TYPE_SET = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_TINY_BLOB + */ +const MYSQLI_TYPE_TINY_BLOB = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_MEDIUM_BLOB + */ +const MYSQLI_TYPE_MEDIUM_BLOB = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_LONG_BLOB + */ +const MYSQLI_TYPE_LONG_BLOB = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_BLOB + */ +const MYSQLI_TYPE_BLOB = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_VAR_STRING + */ +const MYSQLI_TYPE_VAR_STRING = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_STRING + */ +const MYSQLI_TYPE_STRING = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_CHAR + */ +const MYSQLI_TYPE_CHAR = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_INTERVAL + */ +const MYSQLI_TYPE_INTERVAL = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_GEOMETRY + */ +const MYSQLI_TYPE_GEOMETRY = UNKNOWN; +#ifdef FIELD_TYPE_JSON +/** + * @var int + * @cname FIELD_TYPE_JSON + */ +const MYSQLI_TYPE_JSON = UNKNOWN; +#endif +/** + * @var int + * @cname FIELD_TYPE_NEWDECIMAL + */ +const MYSQLI_TYPE_NEWDECIMAL = UNKNOWN; +/** + * @var int + * @cname FIELD_TYPE_BIT + */ +const MYSQLI_TYPE_BIT = UNKNOWN; +/** + * @var int + * @cname MYSQL_SET_CHARSET_NAME + */ +const MYSQLI_SET_CHARSET_NAME = UNKNOWN; +/** + * @var int + * @cname MYSQL_SET_CHARSET_DIR + */ +const MYSQLI_SET_CHARSET_DIR = UNKNOWN; + +/* bind support */ +/** + * @var int + * @cname MYSQL_NO_DATA + * @deprecated + */ +const MYSQLI_NO_DATA = UNKNOWN; +#ifdef MYSQL_DATA_TRUNCATED +/** + * @var int + * @cname MYSQL_DATA_TRUNCATED + * @deprecated + */ +const MYSQLI_DATA_TRUNCATED = UNKNOWN; +#endif + +/* reporting */ +/** + * @var int + * @cname MYSQLI_REPORT_INDEX + */ +const MYSQLI_REPORT_INDEX = UNKNOWN; +/** + * @var int + * @cname MYSQLI_REPORT_ERROR + */ +const MYSQLI_REPORT_ERROR = UNKNOWN; +/** + * @var int + * @cname MYSQLI_REPORT_STRICT + */ +const MYSQLI_REPORT_STRICT = UNKNOWN; +/** + * @var int + * @cname MYSQLI_REPORT_ALL + */ +const MYSQLI_REPORT_ALL = UNKNOWN; +/** + * @var int + * @cname MYSQLI_REPORT_OFF + */ +const MYSQLI_REPORT_OFF = UNKNOWN; + +/** + * @var int + * @cname MYSQLND_DBG_ENABLED + */ +const MYSQLI_DEBUG_TRACE_ENABLED = UNKNOWN; + +/** + * @var int + * @cname SERVER_QUERY_NO_GOOD_INDEX_USED + */ +const MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED = UNKNOWN; +/** + * @var int + * @cname SERVER_QUERY_NO_INDEX_USED + */ +const MYSQLI_SERVER_QUERY_NO_INDEX_USED = UNKNOWN; +#ifdef SERVER_QUERY_WAS_SLOW +/** + * @var int + * @cname SERVER_QUERY_WAS_SLOW + * @deprecated + */ +const MYSQLI_SERVER_QUERY_WAS_SLOW = UNKNOWN; +#endif +#ifdef SERVER_PS_OUT_PARAMS +/** + * @var int + * @cname SERVER_PS_OUT_PARAMS + * @deprecated + */ +const MYSQLI_SERVER_PS_OUT_PARAMS = UNKNOWN; +#endif + +/** + * @var int + * @cname REFRESH_GRANT + */ +const MYSQLI_REFRESH_GRANT = UNKNOWN; +/** + * @var int + * @cname REFRESH_LOG + */ +const MYSQLI_REFRESH_LOG = UNKNOWN; +/** + * @var int + * @cname REFRESH_TABLES + */ +const MYSQLI_REFRESH_TABLES = UNKNOWN; +/** + * @var int + * @cname REFRESH_HOSTS + */ +const MYSQLI_REFRESH_HOSTS = UNKNOWN; +/** + * @var int + * @cname REFRESH_STATUS + */ +const MYSQLI_REFRESH_STATUS = UNKNOWN; +/** + * @var int + * @cname REFRESH_THREADS + */ +const MYSQLI_REFRESH_THREADS = UNKNOWN; +/** + * @var int + * @cname REFRESH_SLAVE + */ +const MYSQLI_REFRESH_REPLICA = UNKNOWN; +/** + * @var int + * @cname REFRESH_SLAVE + */ +const MYSQLI_REFRESH_SLAVE = UNKNOWN; +/** + * @var int + * @cname REFRESH_MASTER + */ +const MYSQLI_REFRESH_MASTER = UNKNOWN; +#ifdef REFRESH_BACKUP_LOG +/** + * @var int + * @cname REFRESH_BACKUP_LOG + */ +const MYSQLI_REFRESH_BACKUP_LOG = UNKNOWN; +#endif + +/** + * @var int + * @cname TRANS_START_WITH_CONSISTENT_SNAPSHOT + */ +const MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT = UNKNOWN; +/** + * @var int + * @cname TRANS_START_READ_WRITE + */ +const MYSQLI_TRANS_START_READ_WRITE = UNKNOWN; +/** + * @var int + * @cname TRANS_START_READ_ONLY + */ +const MYSQLI_TRANS_START_READ_ONLY = UNKNOWN; + +/** + * @var int + * @cname TRANS_COR_AND_CHAIN + */ +const MYSQLI_TRANS_COR_AND_CHAIN = UNKNOWN; +/** + * @var int + * @cname TRANS_COR_AND_NO_CHAIN + */ +const MYSQLI_TRANS_COR_AND_NO_CHAIN = UNKNOWN; +/** + * @var int + * @cname TRANS_COR_RELEASE + */ +const MYSQLI_TRANS_COR_RELEASE = UNKNOWN; +/** + * @var int + * @cname TRANS_COR_NO_RELEASE + */ +const MYSQLI_TRANS_COR_NO_RELEASE = UNKNOWN; + +/** + * @var bool + * @cname MYSQLI_IS_MARIADB + */ +const MYSQLI_IS_MARIADB = UNKNOWN; + final class mysqli_driver { /** @readonly */ diff --git a/ext/mysqli/mysqli_arginfo.h b/ext/mysqli/mysqli_arginfo.h index b26cc0ccf429c..39b3eece23299 100644 --- a/ext/mysqli/mysqli_arginfo.h +++ b/ext/mysqli/mysqli_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 9db7bea22e25a7f3d70a556f0945c74511866de2 */ + * Stub hash: afdbb6b9ddbdc49b58194509333a3bc915948d8d */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_mysqli_affected_rows, 0, 1, MAY_BE_LONG|MAY_BE_STRING) ZEND_ARG_OBJ_INFO(0, mysql, mysqli, 0) @@ -1045,6 +1045,135 @@ static const zend_function_entry class_mysqli_sql_exception_methods[] = { static void register_mysqli_symbols(int module_number) { + REGISTER_LONG_CONSTANT("MYSQLI_READ_DEFAULT_GROUP", MYSQL_READ_DEFAULT_GROUP, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_READ_DEFAULT_FILE", MYSQL_READ_DEFAULT_FILE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_CONNECT_TIMEOUT", MYSQL_OPT_CONNECT_TIMEOUT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_LOCAL_INFILE", MYSQL_OPT_LOCAL_INFILE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_LOAD_DATA_LOCAL_DIR", MYSQL_OPT_LOAD_DATA_LOCAL_DIR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_INIT_COMMAND", MYSQL_INIT_COMMAND, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_READ_TIMEOUT", MYSQL_OPT_READ_TIMEOUT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_NET_CMD_BUFFER_SIZE", MYSQLND_OPT_NET_CMD_BUFFER_SIZE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_NET_READ_BUFFER_SIZE", MYSQLND_OPT_NET_READ_BUFFER_SIZE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_INT_AND_FLOAT_NATIVE", MYSQLND_OPT_INT_AND_FLOAT_NATIVE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_SSL_VERIFY_SERVER_CERT", MYSQL_OPT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_PUBLIC_KEY", MYSQL_SERVER_PUBLIC_KEY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL", CLIENT_SSL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_COMPRESS", CLIENT_COMPRESS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_INTERACTIVE", CLIENT_INTERACTIVE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_IGNORE_SPACE", CLIENT_IGNORE_SPACE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_NO_SCHEMA", CLIENT_NO_SCHEMA, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_FOUND_ROWS", CLIENT_FOUND_ROWS, CONST_CS | CONST_PERSISTENT); +#if defined(CLIENT_SSL_VERIFY_SERVER_CERT) + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT", CLIENT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); +#endif +#if defined(CLIENT_SSL_VERIFY_SERVER_CERT) + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT", CLIENT_SSL_DONT_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS", CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS", MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_STORE_RESULT", MYSQLI_STORE_RESULT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_USE_RESULT", MYSQLI_USE_RESULT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_ASYNC", MYSQLI_ASYNC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_STORE_RESULT_COPY_DATA", MYSQLI_STORE_RESULT_COPY_DATA, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_ASSOC", MYSQLI_ASSOC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_NUM", MYSQLI_NUM, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_BOTH", MYSQLI_BOTH, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH", STMT_ATTR_UPDATE_MAX_LENGTH, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_CURSOR_TYPE", STMT_ATTR_CURSOR_TYPE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_NO_CURSOR", CURSOR_TYPE_NO_CURSOR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_READ_ONLY", CURSOR_TYPE_READ_ONLY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_FOR_UPDATE", CURSOR_TYPE_FOR_UPDATE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_SCROLLABLE", CURSOR_TYPE_SCROLLABLE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_PREFETCH_ROWS", STMT_ATTR_PREFETCH_ROWS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_NOT_NULL_FLAG", NOT_NULL_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_PRI_KEY_FLAG", PRI_KEY_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_UNIQUE_KEY_FLAG", UNIQUE_KEY_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_MULTIPLE_KEY_FLAG", MULTIPLE_KEY_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_BLOB_FLAG", BLOB_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_UNSIGNED_FLAG", UNSIGNED_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_ZEROFILL_FLAG", ZEROFILL_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_AUTO_INCREMENT_FLAG", AUTO_INCREMENT_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TIMESTAMP_FLAG", TIMESTAMP_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_SET_FLAG", SET_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_NUM_FLAG", NUM_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_PART_KEY_FLAG", PART_KEY_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_GROUP_FLAG", GROUP_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_ENUM_FLAG", ENUM_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_BINARY_FLAG", BINARY_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_NO_DEFAULT_VALUE_FLAG", NO_DEFAULT_VALUE_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_ON_UPDATE_NOW_FLAG", ON_UPDATE_NOW_FLAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DECIMAL", FIELD_TYPE_DECIMAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TINY", FIELD_TYPE_TINY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_SHORT", FIELD_TYPE_SHORT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_LONG", FIELD_TYPE_LONG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_FLOAT", FIELD_TYPE_FLOAT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DOUBLE", FIELD_TYPE_DOUBLE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NULL", FIELD_TYPE_NULL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TIMESTAMP", FIELD_TYPE_TIMESTAMP, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_LONGLONG", FIELD_TYPE_LONGLONG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_INT24", FIELD_TYPE_INT24, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DATE", FIELD_TYPE_DATE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TIME", FIELD_TYPE_TIME, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DATETIME", FIELD_TYPE_DATETIME, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_YEAR", FIELD_TYPE_YEAR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NEWDATE", FIELD_TYPE_NEWDATE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_ENUM", FIELD_TYPE_ENUM, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_SET", FIELD_TYPE_SET, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TINY_BLOB", FIELD_TYPE_TINY_BLOB, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_MEDIUM_BLOB", FIELD_TYPE_MEDIUM_BLOB, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_LONG_BLOB", FIELD_TYPE_LONG_BLOB, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_BLOB", FIELD_TYPE_BLOB, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_VAR_STRING", FIELD_TYPE_VAR_STRING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_STRING", FIELD_TYPE_STRING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_CHAR", FIELD_TYPE_CHAR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_INTERVAL", FIELD_TYPE_INTERVAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_GEOMETRY", FIELD_TYPE_GEOMETRY, CONST_CS | CONST_PERSISTENT); +#if defined(FIELD_TYPE_JSON) + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_JSON", FIELD_TYPE_JSON, CONST_CS | CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NEWDECIMAL", FIELD_TYPE_NEWDECIMAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_BIT", FIELD_TYPE_BIT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_SET_CHARSET_NAME", MYSQL_SET_CHARSET_NAME, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_SET_CHARSET_DIR", MYSQL_SET_CHARSET_DIR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_NO_DATA", MYSQL_NO_DATA, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); +#if defined(MYSQL_DATA_TRUNCATED) + REGISTER_LONG_CONSTANT("MYSQLI_DATA_TRUNCATED", MYSQL_DATA_TRUNCATED, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); +#endif + REGISTER_LONG_CONSTANT("MYSQLI_REPORT_INDEX", MYSQLI_REPORT_INDEX, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REPORT_ERROR", MYSQLI_REPORT_ERROR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REPORT_STRICT", MYSQLI_REPORT_STRICT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REPORT_ALL", MYSQLI_REPORT_ALL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REPORT_OFF", MYSQLI_REPORT_OFF, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_DEBUG_TRACE_ENABLED", MYSQLND_DBG_ENABLED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED", SERVER_QUERY_NO_GOOD_INDEX_USED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_INDEX_USED", SERVER_QUERY_NO_INDEX_USED, CONST_CS | CONST_PERSISTENT); +#if defined(SERVER_QUERY_WAS_SLOW) + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_WAS_SLOW", SERVER_QUERY_WAS_SLOW, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); +#endif +#if defined(SERVER_PS_OUT_PARAMS) + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_PS_OUT_PARAMS", SERVER_PS_OUT_PARAMS, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); +#endif + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_GRANT", REFRESH_GRANT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_LOG", REFRESH_LOG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_TABLES", REFRESH_TABLES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_HOSTS", REFRESH_HOSTS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_STATUS", REFRESH_STATUS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_THREADS", REFRESH_THREADS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_REPLICA", REFRESH_SLAVE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_SLAVE", REFRESH_SLAVE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_MASTER", REFRESH_MASTER, CONST_CS | CONST_PERSISTENT); +#if defined(REFRESH_BACKUP_LOG) + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_BACKUP_LOG", REFRESH_BACKUP_LOG, CONST_CS | CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT", TRANS_START_WITH_CONSISTENT_SNAPSHOT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TRANS_START_READ_WRITE", TRANS_START_READ_WRITE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TRANS_START_READ_ONLY", TRANS_START_READ_ONLY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_AND_CHAIN", TRANS_COR_AND_CHAIN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_AND_NO_CHAIN", TRANS_COR_AND_NO_CHAIN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_RELEASE", TRANS_COR_RELEASE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_NO_RELEASE", TRANS_COR_NO_RELEASE, CONST_CS | CONST_PERSISTENT); + REGISTER_BOOL_CONSTANT("MYSQLI_IS_MARIADB", MYSQLI_IS_MARIADB, CONST_CS | CONST_PERSISTENT); + zend_string *attribute_name_SensitiveParameter_mysqli_change_user_arg2 = zend_string_init("SensitiveParameter", sizeof("SensitiveParameter") - 1, 1); zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "mysqli_change_user", sizeof("mysqli_change_user") - 1), 2, attribute_name_SensitiveParameter_mysqli_change_user_arg2, 0); diff --git a/ext/mysqli/mysqli_priv.h b/ext/mysqli/mysqli_priv.h index f08d66b7287d9..6b299fadf5836 100644 --- a/ext/mysqli/mysqli_priv.h +++ b/ext/mysqli/mysqli_priv.h @@ -107,6 +107,12 @@ PHP_MYSQLI_EXPORT(zend_object *) mysqli_objects_new(zend_class_entry *); #define MYSQLI_REPORT_CLOSE 8 #define MYSQLI_REPORT_ALL 255 +#ifdef MARIADB_BASE_VERSION +#define MYSQLI_IS_MARIADB 1 +#else +#define MYSQLI_IS_MARIADB 0 +#endif + #define MYSQLI_REPORT_MYSQL_ERROR(mysql) \ if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) && mysql_errno(mysql)) { \ php_mysqli_report_error(mysql_sqlstate(mysql), mysql_errno(mysql), mysql_error(mysql)); \ From 443b4411bed6bb2d1b024bc6597fbbbffacd8529 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Kocsis?= Date: Sat, 18 Jun 2022 10:51:17 +0200 Subject: [PATCH 2/5] Add missing deprecations --- ext/mysqli/mysqli.stub.php | 2 ++ ext/mysqli/mysqli_arginfo.h | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ext/mysqli/mysqli.stub.php b/ext/mysqli/mysqli.stub.php index f4bd6aa352b1f..80d72841d104f 100644 --- a/ext/mysqli/mysqli.stub.php +++ b/ext/mysqli/mysqli.stub.php @@ -494,11 +494,13 @@ /** * @var int * @cname SERVER_QUERY_NO_GOOD_INDEX_USED + * @deprecated */ const MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED = UNKNOWN; /** * @var int * @cname SERVER_QUERY_NO_INDEX_USED + * @deprecated */ const MYSQLI_SERVER_QUERY_NO_INDEX_USED = UNKNOWN; #ifdef SERVER_QUERY_WAS_SLOW diff --git a/ext/mysqli/mysqli_arginfo.h b/ext/mysqli/mysqli_arginfo.h index 39b3eece23299..e5ba7148b9731 100644 --- a/ext/mysqli/mysqli_arginfo.h +++ b/ext/mysqli/mysqli_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: afdbb6b9ddbdc49b58194509333a3bc915948d8d */ + * Stub hash: c8841d76e26596c0bda247b9e2b75cf3d12e1d72 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_mysqli_affected_rows, 0, 1, MAY_BE_LONG|MAY_BE_STRING) ZEND_ARG_OBJ_INFO(0, mysql, mysqli, 0) @@ -1145,8 +1145,8 @@ static void register_mysqli_symbols(int module_number) REGISTER_LONG_CONSTANT("MYSQLI_REPORT_ALL", MYSQLI_REPORT_ALL, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MYSQLI_REPORT_OFF", MYSQLI_REPORT_OFF, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MYSQLI_DEBUG_TRACE_ENABLED", MYSQLND_DBG_ENABLED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED", SERVER_QUERY_NO_GOOD_INDEX_USED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_INDEX_USED", SERVER_QUERY_NO_INDEX_USED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED", SERVER_QUERY_NO_GOOD_INDEX_USED, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_INDEX_USED", SERVER_QUERY_NO_INDEX_USED, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); #if defined(SERVER_QUERY_WAS_SLOW) REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_WAS_SLOW", SERVER_QUERY_WAS_SLOW, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); #endif From 79dedb6d794f0aaa489ed13d37276fefa8a2c059 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Kocsis?= Date: Mon, 4 Jul 2022 09:20:30 +0200 Subject: [PATCH 3/5] Remove MYSQLI_IS_MARIADB --- ext/mysqli/mysqli.stub.php | 6 ------ ext/mysqli/mysqli_arginfo.h | 3 +-- ext/mysqli/mysqli_priv.h | 6 ------ ext/mysqli/tests/mysqli_constants.phpt | 6 +----- 4 files changed, 2 insertions(+), 19 deletions(-) diff --git a/ext/mysqli/mysqli.stub.php b/ext/mysqli/mysqli.stub.php index 80d72841d104f..090b32ef929ec 100644 --- a/ext/mysqli/mysqli.stub.php +++ b/ext/mysqli/mysqli.stub.php @@ -610,12 +610,6 @@ */ const MYSQLI_TRANS_COR_NO_RELEASE = UNKNOWN; -/** - * @var bool - * @cname MYSQLI_IS_MARIADB - */ -const MYSQLI_IS_MARIADB = UNKNOWN; - final class mysqli_driver { /** @readonly */ diff --git a/ext/mysqli/mysqli_arginfo.h b/ext/mysqli/mysqli_arginfo.h index e5ba7148b9731..6f9f445c48ff5 100644 --- a/ext/mysqli/mysqli_arginfo.h +++ b/ext/mysqli/mysqli_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: c8841d76e26596c0bda247b9e2b75cf3d12e1d72 */ + * Stub hash: 9d9e484b4a287714fab60592ae8c12a5a46f34b3 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_mysqli_affected_rows, 0, 1, MAY_BE_LONG|MAY_BE_STRING) ZEND_ARG_OBJ_INFO(0, mysql, mysqli, 0) @@ -1172,7 +1172,6 @@ static void register_mysqli_symbols(int module_number) REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_AND_NO_CHAIN", TRANS_COR_AND_NO_CHAIN, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_RELEASE", TRANS_COR_RELEASE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_NO_RELEASE", TRANS_COR_NO_RELEASE, CONST_CS | CONST_PERSISTENT); - REGISTER_BOOL_CONSTANT("MYSQLI_IS_MARIADB", MYSQLI_IS_MARIADB, CONST_CS | CONST_PERSISTENT); zend_string *attribute_name_SensitiveParameter_mysqli_change_user_arg2 = zend_string_init("SensitiveParameter", sizeof("SensitiveParameter") - 1, 1); diff --git a/ext/mysqli/mysqli_priv.h b/ext/mysqli/mysqli_priv.h index 6b299fadf5836..f08d66b7287d9 100644 --- a/ext/mysqli/mysqli_priv.h +++ b/ext/mysqli/mysqli_priv.h @@ -107,12 +107,6 @@ PHP_MYSQLI_EXPORT(zend_object *) mysqli_objects_new(zend_class_entry *); #define MYSQLI_REPORT_CLOSE 8 #define MYSQLI_REPORT_ALL 255 -#ifdef MARIADB_BASE_VERSION -#define MYSQLI_IS_MARIADB 1 -#else -#define MYSQLI_IS_MARIADB 0 -#endif - #define MYSQLI_REPORT_MYSQL_ERROR(mysql) \ if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) && mysql_errno(mysql)) { \ php_mysqli_report_error(mysql_sqlstate(mysql), mysql_errno(mysql), mysql_error(mysql)); \ diff --git a/ext/mysqli/tests/mysqli_constants.phpt b/ext/mysqli/tests/mysqli_constants.phpt index 0380792e06284..d8a70b1a6464d 100644 --- a/ext/mysqli/tests/mysqli_constants.phpt +++ b/ext/mysqli/tests/mysqli_constants.phpt @@ -47,7 +47,6 @@ $expected_constants = array( "MYSQLI_GROUP_FLAG" => true, "MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED"=> true, "MYSQLI_SERVER_QUERY_NO_INDEX_USED" => true, - "MYSQLI_IS_MARIADB" => true, "MYSQLI_TYPE_DECIMAL" => true, "MYSQLI_TYPE_TINY" => true, @@ -100,6 +99,7 @@ $expected_constants = array( "MYSQLI_TRANS_COR_AND_NO_CHAIN" => true, "MYSQLI_TRANS_COR_RELEASE" => true, "MYSQLI_TRANS_COR_NO_RELEASE" => true, + "MYSQLI_OPT_LOAD_DATA_LOCAL_DIR" => true, ); /* depends on the build - experimental */ @@ -181,10 +181,6 @@ if ($IS_MYSQLND) { $expected_constants["MYSQLI_TYPE_JSON"] = true; } -if (($version > 80021 && $constants['mysqli']['MYSQLI_IS_MARIADB']) || $IS_MYSQLND) { - $expected_constants['MYSQLI_OPT_LOAD_DATA_LOCAL_DIR'] = true; -} - $unexpected_constants = array(); foreach ($constants as $group => $consts) { From 8dec9fde34de129fa601f15958dcc9a5b68b00a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Kocsis?= Date: Sat, 9 Jul 2022 15:20:13 +0200 Subject: [PATCH 4/5] Revert "Remove MYSQLI_IS_MARIADB" This reverts commit 062d0b7f8850ebeebb2168cc4124e9e4d7ca3406. --- ext/mysqli/mysqli.stub.php | 6 ++++++ ext/mysqli/mysqli_arginfo.h | 3 ++- ext/mysqli/mysqli_priv.h | 6 ++++++ ext/mysqli/tests/mysqli_constants.phpt | 6 +++++- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/ext/mysqli/mysqli.stub.php b/ext/mysqli/mysqli.stub.php index 090b32ef929ec..80d72841d104f 100644 --- a/ext/mysqli/mysqli.stub.php +++ b/ext/mysqli/mysqli.stub.php @@ -610,6 +610,12 @@ */ const MYSQLI_TRANS_COR_NO_RELEASE = UNKNOWN; +/** + * @var bool + * @cname MYSQLI_IS_MARIADB + */ +const MYSQLI_IS_MARIADB = UNKNOWN; + final class mysqli_driver { /** @readonly */ diff --git a/ext/mysqli/mysqli_arginfo.h b/ext/mysqli/mysqli_arginfo.h index 6f9f445c48ff5..e5ba7148b9731 100644 --- a/ext/mysqli/mysqli_arginfo.h +++ b/ext/mysqli/mysqli_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 9d9e484b4a287714fab60592ae8c12a5a46f34b3 */ + * Stub hash: c8841d76e26596c0bda247b9e2b75cf3d12e1d72 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_mysqli_affected_rows, 0, 1, MAY_BE_LONG|MAY_BE_STRING) ZEND_ARG_OBJ_INFO(0, mysql, mysqli, 0) @@ -1172,6 +1172,7 @@ static void register_mysqli_symbols(int module_number) REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_AND_NO_CHAIN", TRANS_COR_AND_NO_CHAIN, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_RELEASE", TRANS_COR_RELEASE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_NO_RELEASE", TRANS_COR_NO_RELEASE, CONST_CS | CONST_PERSISTENT); + REGISTER_BOOL_CONSTANT("MYSQLI_IS_MARIADB", MYSQLI_IS_MARIADB, CONST_CS | CONST_PERSISTENT); zend_string *attribute_name_SensitiveParameter_mysqli_change_user_arg2 = zend_string_init("SensitiveParameter", sizeof("SensitiveParameter") - 1, 1); diff --git a/ext/mysqli/mysqli_priv.h b/ext/mysqli/mysqli_priv.h index f08d66b7287d9..6b299fadf5836 100644 --- a/ext/mysqli/mysqli_priv.h +++ b/ext/mysqli/mysqli_priv.h @@ -107,6 +107,12 @@ PHP_MYSQLI_EXPORT(zend_object *) mysqli_objects_new(zend_class_entry *); #define MYSQLI_REPORT_CLOSE 8 #define MYSQLI_REPORT_ALL 255 +#ifdef MARIADB_BASE_VERSION +#define MYSQLI_IS_MARIADB 1 +#else +#define MYSQLI_IS_MARIADB 0 +#endif + #define MYSQLI_REPORT_MYSQL_ERROR(mysql) \ if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) && mysql_errno(mysql)) { \ php_mysqli_report_error(mysql_sqlstate(mysql), mysql_errno(mysql), mysql_error(mysql)); \ diff --git a/ext/mysqli/tests/mysqli_constants.phpt b/ext/mysqli/tests/mysqli_constants.phpt index d8a70b1a6464d..0380792e06284 100644 --- a/ext/mysqli/tests/mysqli_constants.phpt +++ b/ext/mysqli/tests/mysqli_constants.phpt @@ -47,6 +47,7 @@ $expected_constants = array( "MYSQLI_GROUP_FLAG" => true, "MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED"=> true, "MYSQLI_SERVER_QUERY_NO_INDEX_USED" => true, + "MYSQLI_IS_MARIADB" => true, "MYSQLI_TYPE_DECIMAL" => true, "MYSQLI_TYPE_TINY" => true, @@ -99,7 +100,6 @@ $expected_constants = array( "MYSQLI_TRANS_COR_AND_NO_CHAIN" => true, "MYSQLI_TRANS_COR_RELEASE" => true, "MYSQLI_TRANS_COR_NO_RELEASE" => true, - "MYSQLI_OPT_LOAD_DATA_LOCAL_DIR" => true, ); /* depends on the build - experimental */ @@ -181,6 +181,10 @@ if ($IS_MYSQLND) { $expected_constants["MYSQLI_TYPE_JSON"] = true; } +if (($version > 80021 && $constants['mysqli']['MYSQLI_IS_MARIADB']) || $IS_MYSQLND) { + $expected_constants['MYSQLI_OPT_LOAD_DATA_LOCAL_DIR'] = true; +} + $unexpected_constants = array(); foreach ($constants as $group => $consts) { From c73375a032c9ed9642b92cc51f1da3fa43ec01b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Kocsis?= Date: Mon, 18 Jul 2022 08:56:45 +0200 Subject: [PATCH 5/5] Declare MYSQLI_IS_MARIADB as always false --- ext/mysqli/mysqli.stub.php | 7 ++----- ext/mysqli/mysqli_arginfo.h | 4 ++-- ext/mysqli/mysqli_priv.h | 6 ------ 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/ext/mysqli/mysqli.stub.php b/ext/mysqli/mysqli.stub.php index 80d72841d104f..5c6128deccbd8 100644 --- a/ext/mysqli/mysqli.stub.php +++ b/ext/mysqli/mysqli.stub.php @@ -610,11 +610,8 @@ */ const MYSQLI_TRANS_COR_NO_RELEASE = UNKNOWN; -/** - * @var bool - * @cname MYSQLI_IS_MARIADB - */ -const MYSQLI_IS_MARIADB = UNKNOWN; +/** @var bool */ +const MYSQLI_IS_MARIADB = false; final class mysqli_driver { diff --git a/ext/mysqli/mysqli_arginfo.h b/ext/mysqli/mysqli_arginfo.h index e5ba7148b9731..756a3a65d7343 100644 --- a/ext/mysqli/mysqli_arginfo.h +++ b/ext/mysqli/mysqli_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: c8841d76e26596c0bda247b9e2b75cf3d12e1d72 */ + * Stub hash: ff2b7cd8ab89ecd882e42d3de36429418876dba8 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_mysqli_affected_rows, 0, 1, MAY_BE_LONG|MAY_BE_STRING) ZEND_ARG_OBJ_INFO(0, mysql, mysqli, 0) @@ -1172,7 +1172,7 @@ static void register_mysqli_symbols(int module_number) REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_AND_NO_CHAIN", TRANS_COR_AND_NO_CHAIN, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_RELEASE", TRANS_COR_RELEASE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_NO_RELEASE", TRANS_COR_NO_RELEASE, CONST_CS | CONST_PERSISTENT); - REGISTER_BOOL_CONSTANT("MYSQLI_IS_MARIADB", MYSQLI_IS_MARIADB, CONST_CS | CONST_PERSISTENT); + REGISTER_BOOL_CONSTANT("MYSQLI_IS_MARIADB", false, CONST_CS | CONST_PERSISTENT); zend_string *attribute_name_SensitiveParameter_mysqli_change_user_arg2 = zend_string_init("SensitiveParameter", sizeof("SensitiveParameter") - 1, 1); diff --git a/ext/mysqli/mysqli_priv.h b/ext/mysqli/mysqli_priv.h index 6b299fadf5836..f08d66b7287d9 100644 --- a/ext/mysqli/mysqli_priv.h +++ b/ext/mysqli/mysqli_priv.h @@ -107,12 +107,6 @@ PHP_MYSQLI_EXPORT(zend_object *) mysqli_objects_new(zend_class_entry *); #define MYSQLI_REPORT_CLOSE 8 #define MYSQLI_REPORT_ALL 255 -#ifdef MARIADB_BASE_VERSION -#define MYSQLI_IS_MARIADB 1 -#else -#define MYSQLI_IS_MARIADB 0 -#endif - #define MYSQLI_REPORT_MYSQL_ERROR(mysql) \ if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) && mysql_errno(mysql)) { \ php_mysqli_report_error(mysql_sqlstate(mysql), mysql_errno(mysql), mysql_error(mysql)); \