文档中对枚举值描述部分由 AI 生成。
enum_var_type
(var_type
):变量作用域级别
枚举类型 enum_var_type
描述 MySQL 变量作用域级别。
- OPT_DEFAULT = 0:默认选项。当没有指定其他选项时,将使用此默认值。
- OPT_SESSION:会话级选项。这种类型的选项在用户的一个会话期间有效。
- OPT_GLOBAL:全局选项。指定了对整个系统或应用程序都有效的设置。
- OPT_PERSIST:持久化选项。这类选项不仅即时生效,还会被保存起来,以便在系统重启后依然有效。
- OPT_PERSIST_ONLY:仅持久化选项。这种类型的选项只会在持久存储中更新,不会立即对当前运行的系统产生影响。
// sql/set_var.h
enum enum_var_type : int {
OPT_DEFAULT = 0,
OPT_SESSION,
OPT_GLOBAL,
OPT_PERSIST,
OPT_PERSIST_ONLY
};
YACC 语义组:
option_type
:SET
语句中可选的变量作用域级别关键字。opt_var_type
:SHOW STATUS
语句和SHOW VARIABLES
语句中可选的作用域级别关键字。opt_rvalue_system_variable_type
/opt_set_var_ident_type
:@@
之后可选的作用域级别关键字。install_option_type
:INSTALL
语句中可选的SET
子句中可选的变量作用域级别关键字。
enum row_type
(row_type
):行存储方式
枚举类型 enum_var_type
描述 MySQL 的行存储方式。
- ROW_TYPE_NOT_USED:标识该类型未被使用,值为
-1
。 - ROW_TYPE_DEFAULT:标识默认的行类型,没有特定的存储规则或特征。
- ROW_TYPE_FIXED:标识固定长度的行类型,所有记录具有相同的长度。
- ROW_TYPE_DYNAMIC:标识动态长度的行类型,记录长度可以变化。
- ROW_TYPE_COMPRESSED:标识压缩类型的行,适用于需要节省存储空间的情况。
- ROW_TYPE_REDUNDANT:标识冗余类型的行,可能包含额外的信息用于恢复或其他目的。
- ROW_TYPE_COMPACT:标识紧凑类型的行,优化存储以减少空间占用。
- ROW_TYPE_PAGED:标识分页类型的行,适用于大容量数据存储和检索。
// sql/handler.h
enum row_type : int {
ROW_TYPE_NOT_USED = -1,
ROW_TYPE_DEFAULT,
ROW_TYPE_FIXED,
ROW_TYPE_DYNAMIC,
ROW_TYPE_COMPRESSED,
ROW_TYPE_REDUNDANT,
ROW_TYPE_COMPACT,
ROW_TYPE_PAGED
};
YACC 语义组:
row_types
:DDL 语句中ROW_FORMAT
子句中的行存储格式。
enum_ha_read_modes
(ha_read_mode
):数据读取方式
枚举类型 enum_ha_read_modes
描述 MySQL 的 HANDLER
语句的数据读取的方式。
- RFIRST:表示第一次读取。
- RNEXT:表示读取下一个。
- RPREV:表示读取前一个。
- RLAST:表示最后一次读取。
- RKEY:表示基于键的读取。
- RNEXT_SAME:表示读取下一个相同的数据。
// sql/sql_handler.h
enum class enum_ha_read_modes { RFIRST, RNEXT, RPREV, RLAST, RKEY, RNEXT_SAME };
YACC 语义组:
handler_scan_function
:HANDLER
语句扫描表时的数据读取方式。handler_rkey_function
:HANDLER
语句扫描索引时的数据读取方式。
enum_tx_isolation
(tx_isolation
):隔离级别
枚举类型 enum_tx_isolation
描述事务的隔离级别,用于控制事务之间的可见性及并发副作用(如脏读、不可重复读、幻读等)。
- ISO_READ_UNCOMMITTED:读未提交。允许一个事务读取其他事务未提交的数据,这可能会导致脏读、不可重复读和幻读。
- ISO_READ_COMMITTED:读已提交。保证一个事务只能读取其他事务已经提交的数据,避免了脏读,但无法避免不可重复读和幻读。
- ISO_REPEATABLE_READ:可重复读。确保在同一个事务中多次读取同样的数据结果是一致的,避免了脏读和不可重复读,但理论上可能仍会出现幻读。
- ISO_SERIALIZABLE:可序列化。提供最严格的事务隔离级别,防止任何并发冲突的发生,完全避免了脏读、不可重复读和幻读。
// sql/sql_handler.h
enum enum_tx_isolation : int {
ISO_READ_UNCOMMITTED,
ISO_READ_COMMITTED,
ISO_REPEATABLE_READ,
ISO_SERIALIZABLE
};
YACC 语义组:
isolation_types
:定义事务隔离级别的ISOLATION LEVEL
子句。
enum_mysql_timestamp_type
(date_time_type
):时间戳类型
枚举类型 enum_mysql_timestamp_type
描述了 MySQL 中不同时间戳类型,用于区分不同的日期和时间数据类型。
-
MYSQL_TIMESTAMP_NONE:无时间戳。
-
MYSQL_TIMESTAMP_ERROR:表示错误的时间戳类型。
-
MYSQL_TIMESTAMP_DATE:对应
DATE
关键字,仅存储年、月、日。 -
MYSQL_TIMESTAMP_DATETIME:对应
DATETIME
关键字和TIMESTAMP
关键字,对应DATETIME
时存储本地市区,对应TIMESTAMP
时存储世界时。 -
MYSQL_TIMESTAMP_TIME:对应
TIME
关键字,仅存储小时、分钟、秒和微秒。 -
MYSQL_TIMESTAMP_DATETIME_TZ:带有时间区域信息的
DATETIME
或TIMESTAMP
的临时类型,在时间区域信息被处理后转换为MYSQL_TIMESTAMP_DATETIME
。
// include/mysql_time.h
enum enum_mysql_timestamp_type {
MYSQL_TIMESTAMP_NONE = -2,
MYSQL_TIMESTAMP_ERROR = -1,
MYSQL_TIMESTAMP_DATE = 0,
MYSQL_TIMESTAMP_DATETIME = 1,
MYSQL_TIMESTAMP_TIME = 2,
MYSQL_TIMESTAMP_DATETIME_TZ = 3
};
YACC 语义组:
date_time_type
:GET_FORMAT
函数中的时间戳类型。
enum_filetype
(filetype
):读取的文件类型
枚举类型 enum_filetype
描述 LOAD
语句中读取的文件类型:
- FILETYPE_CSV:csv 格式文件。
- FILETYPE_XML:xml 格式文件。
// sql/sql_exchange.h
enum enum_filetype { FILETYPE_CSV, FILETYPE_XML };
YACC 语义组:
data_or_xml
:LOAD
语句中指定读取文件类型的关键字。
enum_source_type
(source_type
):读取的文件来源
枚举类型 enum_source_type
描述 LOAD
语句中读取的文件来源:
- LOAD_SOURCE_FILE:从本地文件系统加载数据。
- LOAD_SOURCE_URL:从网络URL加载数据。
- LOAD_SOURCE_S3:从Amazon S3存储服务加载数据。
// sql/sql_exchange.h
enum enum_source_type { LOAD_SOURCE_FILE, LOAD_SOURCE_URL, LOAD_SOURCE_S3 };
YACC 语义组:
load_source_type
:LOAD
语句中指定读取文件来源的关键字。
enum_yes_no_unknown
(m_yes_no_unk
):是、否、未知的枚举值
枚举类型 enum_source_type
描述是、否和未知 3 种状态。
// sql/parser_yystype.h
enum enum_yes_no_unknown { TVL_YES, TVL_NO, TVL_UNKNOWN };
YACC 语义组:
opt_chain
:COMMIT
语句和ROLLBACK
语句中可选的AND NO CHAIN
或AND CHAIN
。opt_release
:COMMIT
语句和ROLLBACK
语句中可选的RELEASE
或NO RELEASE
。
enum_condition_item_name
(da_condition_item_name
):条件类型名称
枚举类型 enum_condition_item_name
描述 MySQL 条件区域中条件的所有条件项名称,这些条件可以由用户通过 SIGNAL
或 RESIGNAL
设置,也可以由服务器实现设置。
- CIN_CLASS_ORIGIN = 0:条件类别起源,标记为第一个属性 CIN_FIRST_PROPERTY。
- CIN_SUBCLASS_ORIGIN = 1:子类起源。
- CIN_CONSTRAINT_CATALOG = 2:约束目录。
- CIN_CONSTRAINT_SCHEMA = 3:约束模式。
- CIN_CONSTRAINT_NAME = 4:约束名称。
- CIN_CATALOG_NAME = 5:目录名称。
- CIN_SCHEMA_NAME = 6:模式名称。
- CIN_TABLE_NAME = 7:表名称。
- CIN_COLUMN_NAME = 8:列名称。
- CIN_CURSOR_NAME = 9:游标名称。
- CIN_MESSAGE_TEXT = 10:消息文本。
- CIN_MYSQL_ERRNO = 11:MySQL错误号,同时标记为最后一个属性 CIN_LAST_PROPERTY。
// sql/sql_signal.h
enum enum_condition_item_name {
CIN_CLASS_ORIGIN = 0,
CIN_FIRST_PROPERTY = CIN_CLASS_ORIGIN,
CIN_SUBCLASS_ORIGIN = 1,
CIN_CONSTRAINT_CATALOG = 2,
CIN_CONSTRAINT_SCHEMA = 3,
CIN_CONSTRAINT_NAME = 4,
CIN_CATALOG_NAME = 5,
CIN_SCHEMA_NAME = 6,
CIN_TABLE_NAME = 7,
CIN_COLUMN_NAME = 8,
CIN_CURSOR_NAME = 9,
CIN_MESSAGE_TEXT = 10,
CIN_MYSQL_ERRNO = 11,
CIN_LAST_PROPERTY = CIN_MYSQL_ERRNO
};
YACC 语义组:
opt_set_signal_information
:SIGNAL
语句和RESIGNAL
语句中的SET
子句中的条件名称。
enum_trigger_order_type
(trigger_action_order_type
):触发器顺序子句类型
枚举类型 enum_trigger_order_type
描述 MySQL 触发器顺序子句的类型。
- TRG_ORDER_NONE:未指定触发器顺序子句
- TRG_ORDER_FOLLOWS:FOLLOWS 子句
- TRG_ORDER_PRECEDES:PRECEDES 子句
// sql/triggfer_def.h
enum enum_trigger_order_type {
TRG_ORDER_NONE = 0,
TRG_ORDER_FOLLOWS = 1,
TRG_ORDER_PRECEDES = 2
};
YACC 语义组:
trigger_action_order
:触发器顺序子句FOLLOWS
子句或PRECEDES
子句的类型。
enum olap_type
(olap_type
):GROUP BY
语句中的 OLAP 类型
枚举类型 olap_type
描述 MySQL 的 GROUP BY
语句中的 OLAP 类型。
- UNSPECIFIED_OLAP_TYPE:未指定的OLAP类型
- ROLLUP_TYPE:Rollup类型
- CUBE_TYPE:Cube类型
// sql/olap.h
enum olap_type { UNSPECIFIED_OLAP_TYPE, ROLLUP_TYPE, CUBE_TYPE };
YACC 语义组:
olap_opt
:DQL 语句中的GROUP BY
子句中可选的的WITH ROLLUP
关键字。
enum tablesample_type
(tablesample_type
):抽样方法
枚举类型 tablesample_type
描述 MySQL 的抽样方法。
- UNSPECIFIED_TABLESAMPLE_TYPE:未指定的表采样类型
- SYSTEM_TABLESAMPLE_TYPE:系统表采样类型
- BERNOULLI_TABLESAMPLE_TYPE:伯努利表采样类型
// sql/tablesample.h
enum class tablesample_type {
UNSPECIFIED_TABLESAMPLE_TYPE,
SYSTEM_TABLESAMPLE_TYPE,
BERNOULLI_TABLESAMPLE_TYPE
};
YACC 语义组:
sampling_method
:TABLESAMPLE
子句中的抽样方法SYSTEM
或BERNOULLI
关键字。
enum_window_frame_unit
(frame_units
):窗口函数的单位
枚举类型 enum_window_frame_unit
描述窗口框架单位。
- WFU_ROWS:行单位
- WFU_RANGE:范围单位
- WFU_GROUPS:组单位
// sql/window_lex.h
enum enum_window_frame_unit { WFU_ROWS, WFU_RANGE, WFU_GROUPS };
YACC 语义组:
frame_units
:窗口函数中指定单位的ROWS
、RANGE
或GROUPS
关键字。
enum_null_treatment
(null_treatment
):窗口函数中对 NULL 值的处理方法
枚举类型 enum_null_treatment
描述窗口函数中对 NULL 值的处理方法。
- NT_NONE:未指定空值处理方式
- NT_RESPECT_NULLS:考虑空值
- NT_IGNORE_NULLS:忽略空值
// sql/window_lex.h
enum enum_null_treatment { NT_NONE, NT_RESPECT_NULLS, NT_IGNORE_NULLS };
YACC 语义组:
opt_null_treatment
:窗口函数中可选的指定 NULL 值处理规则的RESPECT NULLS
或IGNORE NULLS
子句。
enum_from_first_last
(from_first_last
):窗口函数中开头方向的选择
枚举类型 enum_from_first_last
描述窗口函数 NTH_VALUE
中开头方向的选择。
- NFL_NONE:未指定是否从第一个或最后一个开始
- NFL_FROM_FIRST:从第一个开始
- NFL_FROM_LAST:从最后一个开始
// sql/window_lex.h
enum enum_from_first_last { NFL_NONE, NFL_FROM_FIRST, NFL_FROM_LAST };
YACC 语义组:
opt_from_first_last
:窗口函数NTH_VALUE
中可选的指定从头还是从尾开始的FROM FIRST
或FROM LAST
子句。
delete_option_enum
(opt_delete_option
):DELETE
语句选项
枚举类型 delete_option_enum
描述 MySQL 中 DELETE
语句的选项。
- DELETE_QUICK:快速删除
- DELETE_LOW_PRIORITY:低优先级删除
- DELETE_IGNORE:忽略错误删除
// sql/parser_yystype.h
enum delete_option_enum {
DELETE_QUICK = 1 << 0,
DELETE_LOW_PRIORITY = 1 << 1,
DELETE_IGNORE = 1 << 2
};
YACC 语义组:
opt_delete_option
:DELETE
语句中删除选项QUICK
或LOW_PRIORITY
、IGNORE
关键字中的零个或一个。opt_delete_options
(语义组为num
类型):DELETE
语句中可选的删除选项QUICK
或LOW_PRIORITY
、IGNORE
关键字中的零个、一个或多个,枚举值按位或合并。
Alter_info::enum_alter_table_lock
(alter_table_lock
):改表结构时的锁级别
枚举类型 enum_alter_table_lock
定义在 Alter_info
中,描述了在执行 ALTER TABLE
操作期间支持的不同锁定级别,这些级别决定了操作的并发性水平。
-
ALTER_TABLE_LOCK_DEFAULT:给定操作支持的最大并发级别。使用此选项时,MySQL 将根据操作类型自动选择最适合的锁定级别以保证最佳的并发性能。
-
ALTER_TABLE_LOCK_NONE:允许并发读和写。如果请求的并发级别不被支持,则返回错误。这是最灵活的选项,允许最大程度的并行操作,但并非所有类型的表变更都支持这种无锁操作。
-
ALTER_TABLE_LOCK_SHARED:只允许并发读操作。如果有写操作尝试访问目标表,则会返回错误。此选项适合于那些不会导致表结构发生重大变化的操作,从而允许其他会话继续查询该表。
-
ALTER_TABLE_LOCK_EXCLUSIVE:阻止所有读写操作。这意味着在进行表变更时,不允许任何其他会话对该表进行访问,直到操作完成。这种锁定级别适用于需要对表进行全面修改的情况,以确保数据的一致性和完整性。
// sql/sql_alter.h
enum enum_alter_table_lock {
ALTER_TABLE_LOCK_DEFAULT,
ALTER_TABLE_LOCK_NONE,
ALTER_TABLE_LOCK_SHARED,
ALTER_TABLE_LOCK_EXCLUSIVE
};
YACC 语义组:
alter_lock_option
/alter_lock_option_value
:ALTER TABLE
语句中指定锁级别的LOCK
子句。lock_option
(语义组为num
类型):LOCK
语句中指定锁级别的READ
、WRITE
、READ LOCAL
子句。
Alter_info::enum_alter_table_algorithm
(alter_table_algorithm
):改表结构时的算法
枚举类型 enum_alter_table_algorithm
定义在 Alter_info
中,描述了在修改表时使用哪种算法。
-
ALTER_TABLE_ALGORITHM_DEFAULT:如果支持,则使用就地(in-place)算法,否则使用复制(copy)算法。
-
ALTER_TABLE_ALGORITHM_INPLACE:如果支持,则使用就地(in-place)算法,否则返回错误。
-
ALTER_TABLE_ALGORITHM_INSTANT:如果支持,则使用即时(instant)算法,否则返回错误。
-
ALTER_TABLE_ALGORITHM_COPY:如果支持,则使用复制(copy)算法,否则返回错误。
// sql/sql_alter.h
enum enum_alter_table_algorithm {
ALTER_TABLE_ALGORITHM_DEFAULT,
ALTER_TABLE_ALGORITHM_INPLACE,
ALTER_TABLE_ALGORITHM_INSTANT,
ALTER_TABLE_ALGORITHM_COPY
};
YACC 语义组:
alter_algorithm_option
/alter_algorithm_option_value
:ALTER TABLE
语句中指定算法类型的ALGORITHM
子句。