文档中对枚举值描述部分由 AI 生成。
enum_key_algorithm
(opt_key_algo
):分区算法
枚举类型 enum_key_algorithm
描述 MySQL 的分区键使用的哈希算法。
-
KEY_ALGORITHM_NONE = 0:不使用任何特定的哈希算法。
-
KEY_ALGORITHM_51 = 1:使用 MySQL 5.1 版本的哈希算法(数值字段作为二进制数据进行哈希)。
-
KEY_ALGORITHM_55 = 2:使用 MySQL 5.5 版本的哈希算法(数值字段以 latin1 字节的形式进行哈希处理)。
// sql/partition_info.h
enum class enum_key_algorithm {
KEY_ALGORITHM_NONE = 0,
KEY_ALGORITHM_51 = 1,
KEY_ALGORITHM_55 = 2
};
YACC 语义组:
opt_num_subparts
:指定分区键哈希算法的可选的ALGORITHM = 1
或ALGORITHM = 2
子句。
enum_drop_mode
(opt_restrict
):DROP
语句模式
枚举类型 enum_drop_mode
描述 MySQL 删除操作的行为模式。
-
DROP_DEFAULT:未指定模式,使用默认行为。
-
DROP_CASCADE:级联删除选项。不仅会删除指定的对象,还会删除引用该对象的所有其他对象。
-
DROP_RESTRICT:限制删除选项。如果存在引用指定对象的其他对象,则不允许删除该对象。
// sql/parser_yystype.h
enum enum_drop_mode {
DROP_DEFAULT, // mode is not specified
DROP_CASCADE, // CASCADE option
DROP_RESTRICT // RESTRICT option
};
YACC 语义组:
opt_restrict
:DROP
语句中可选的指定删除模式的RESTRICT
或CASCADE
关键字。
enum_jt_column
(jt_column_type
):JSON_TABLE
的字段类型
枚举类型 enum_jt_column
描述 MySQL 中 JSON_TABLE
的字段类型。
-
JTC_ORDINALITY:表示 JSON 数据中的顺序性列,通常用于表示数组元素的位置。
-
JTC_PATH:路径列类型,用于从 JSON 文档中提取指定路径的数据。
-
JTC_EXISTS:存在性列类型,用于检查特定路径的数据是否存在,并返回布尔值结果。
-
JTC_NESTED_PATH:嵌套路径列类型,允许对 JSON 数据进行深层次的嵌套查询,适用于复杂结构的 JSON 数据。
// sql/table_functions.h
enum class enum_jt_column {
JTC_ORDINALITY,
JTC_PATH,
JTC_EXISTS,
JTC_NESTED_PATH
};
YACC 语义组:
jt_column_type
:JSON_TABLE
子句中指定字段类型的可选的EXISTS
关键字。
enum_order
(order_direction
):排序方向
枚举类型 enum_order
描述 MySQL 中的排序方向。
-
ORDER_NOT_RELEVANT:表示排序不相关,通常用于不需要考虑排序的情况。
-
ORDER_ASC:表示升序排列,数据将按照从小到大的顺序进行排序。
-
ORDER_DESC:表示降序排列,数据将按照从大到小的顺序进行排序。
// sql/key_spec.h
enum enum_order : int { ORDER_NOT_RELEVANT = 1, ORDER_ASC, ORDER_DESC };
YACC 语义组:
order_direction
/opt_ordering_direction
:指定排序顺序的可选的ASC
、DESC
关键字。
Alter_info::enum_with_validation
(with_validation
):改表结构的验证策略
枚举类型 Alter_info::enum_with_validation
描述 MySQL 中 ALTER TABLE
语句中的验证策略。
-
ALTER_VALIDATION_DEFAULT:默认值,当语句中未指定时使用。对于分区更改意味着“WITH VALIDATION”,而对于虚拟GC的更改则意味着“WITHOUT VALIDATION”。
-
ALTER_WITH_VALIDATION:表示带验证的更改。在执行表结构变更时,会进行数据有效性的检查。
-
ALTER_WITHOUT_VALIDATION:表示不带验证的更改。在执行表结构变更时,不会进行数据有效性的检查。
// sql/sql_alter.h
enum enum_with_validation {
ALTER_VALIDATION_DEFAULT,
ALTER_WITH_VALIDATION,
ALTER_WITHOUT_VALIDATION
};
YACC 语义组:
with_validation
/opt_with_validation
:在ALTER
语句指定验证策略的可选的验证子句WITH VALIDATION
或WITHOUT VALIDATION
。
keytype
(key_type
):索引类型
枚举类型 key_type
描述 MySQL 中索引类型。
-
KEYTYPE_PRIMARY:主键,用于唯一标识表中的每一行记录。
-
KEYTYPE_UNIQUE:唯一键,确保一列或多列的组合值是唯一的。
-
KEYTYPE_MULTIPLE:复合键,由多个字段组成的键,用于确保这些字段值的组合是唯一的。
-
KEYTYPE_FULLTEXT:全文索引键,用于快速匹配检索大文本中的关键词。
-
KEYTYPE_SPATIAL:空间索引键,用于地理空间数据的存储和查询。
-
KEYTYPE_FOREIGN:外键,用于维护两个表之间的引用完整性。
// sql/key_spec.h
enum keytype {
KEYTYPE_PRIMARY,
KEYTYPE_UNIQUE,
KEYTYPE_MULTIPLE,
KEYTYPE_FULLTEXT,
KEYTYPE_SPATIAL,
KEYTYPE_FOREIGN
};
YACC 语义组:
opt_unique
:CREATE INDEX
语句中指定是否唯一键的可选的UNIQUE
关键字。constraint_key_type
:CREATE TABLE
语句和ALTER TABLE
语句中,定义索引时,指定索引类型的PRIMARY KEY
或UNIQUE
字段。
ha_rkey_function
(ha_rkey_mode
):HANDLE
语句中的查找模式
枚举类型 ha_rkey_function
描述 MySQL 中 HANDLE
语句中的字段与查找值之间的关系模式。
-
HA_READ_KEY_EXACT:精确查找第一条记录,否则报错。
-
HA_READ_KEY_OR_NEXT:查找记录或下一条记录。
-
HA_READ_KEY_OR_PREV:查找记录或上一条记录。
-
HA_READ_AFTER_KEY:查找键记录之后的下一条记录。
-
HA_READ_BEFORE_KEY:查找键记录之前的下一条记录。
-
HA_READ_PREFIX:具有相同前缀的键。
-
HA_READ_PREFIX_LAST:具有相同前缀的最后一个键。
-
HA_READ_PREFIX_LAST_OR_PREV:具有相同前缀的最后一个键或前一个键。
-
HA_READ_MBR_CONTAIN:最小边界矩形包含关系。
-
HA_READ_MBR_INTERSECT:最小边界矩形相交关系。
-
HA_READ_MBR_WITHIN:最小边界矩形包含于关系。
-
HA_READ_MBR_DISJOINT:最小边界矩形不相交关系。
-
HA_READ_MBR_EQUAL:最小边界矩形相等关系。
-
HA_READ_NEAREST_NEIGHBOR:最近邻搜索。
-
HA_READ_INVALID:无效的枚举值,总是作为最后一个值。
// include/my_base.h
enum ha_rkey_function {
HA_READ_KEY_EXACT, /* Find first record else error */
HA_READ_KEY_OR_NEXT, /* Record or next record */
HA_READ_KEY_OR_PREV, /* Record or previous */
HA_READ_AFTER_KEY, /* Find next rec. after key-record */
HA_READ_BEFORE_KEY, /* Find next rec. before key-record */
HA_READ_PREFIX, /* Key which as same prefix */
HA_READ_PREFIX_LAST, /* Last key with the same prefix */
HA_READ_PREFIX_LAST_OR_PREV, /* Last or prev key with the same prefix */
HA_READ_MBR_CONTAIN, /* Minimum Bounding Rectangle contains */
HA_READ_MBR_INTERSECT, /* Minimum Bounding Rectangle intersect */
HA_READ_MBR_WITHIN, /* Minimum Bounding Rectangle within */
HA_READ_MBR_DISJOINT, /* Minimum Bounding Rectangle disjoint */
HA_READ_MBR_EQUAL, /* Minimum Bounding Rectangle equal */
HA_READ_NEAREST_NEIGHBOR, /* Nearest Neighbor search */
HA_READ_INVALID = -1 /* Invalid enumeration value, always last. */
};
YACC 语义组:
handler_rkey_mode
:HANDLE
语句中指定查找模式的运算符。
thr_lock_type
(lock_type
):线程锁类型
枚举类型 thr_lock_type
描述了 MySQL 中的线程锁类型。
-
TL_IGNORE:忽略锁,值为 -1。
-
TL_UNLOCK:解锁任何锁。
-
TL_READ_DEFAULT:仅解析器使用!在
open_tables()
时根据二进制日志格式(SBR/RBR)和表类别(日志表)变为TL_READ
或TL_READ_NO_INSERT
。用于被修改表的语句读取的表。 -
TL_READ:读锁。
-
TL_READ_WITH_SHARED_LOCKS:带有共享锁的读锁。
-
TL_READ_HIGH_PRIORITY:高优先级读锁,允许并发插入。
-
TL_READ_NO_INSERT:读锁,不允许并发插入。
-
TL_WRITE_ALLOW_WRITE:写锁,但允许其他线程进行读/写操作。由 MySQL 中的 BDB 表使用,以标记有人正在读取/写入表。
-
TL_WRITE_CONCURRENT_DEFAULT:仅解析器使用!延迟绑定的
low_priority_flag
。在open_tables()
时变为thd->insert_lock_default
。 -
TL_WRITE_CONCURRENT_INSERT:用于并发插入的写锁。如果可以在表上使用并发插入,则允许读取。
-
TL_WRITE_DEFAULT:仅解析器使用!延迟绑定的
low_priority
标志。在open_tables()
时变为thd->update_lock_default
。 -
TL_WRITE_LOW_PRIORITY:写锁,其优先级低于
TL_READ
。 -
TL_WRITE:普通写锁。
-
TL_WRITE_ONLY:仅写锁,拒绝新的锁请求并报错。
// include/thr_lock.h
enum thr_lock_type {
TL_IGNORE = -1,
TL_UNLOCK,
TL_READ_DEFAULT,
TL_READ,
TL_READ_WITH_SHARED_LOCKS,
TL_READ_HIGH_PRIORITY,
TL_READ_NO_INSERT,
TL_WRITE_ALLOW_WRITE,
TL_WRITE_CONCURRENT_DEFAULT,
TL_WRITE_CONCURRENT_INSERT,
TL_WRITE_DEFAULT,
TL_WRITE_LOW_PRIORITY,
TL_WRITE,
TL_WRITE_ONLY
};
YACC 语义组:
replace_lock_option
:REPLACE
语句中的锁选项。opt_low_priority
:UPDATE
语句和REPLACE
语句中可选的LOW_PRIORITY
选项。insert_lock_option
:INSERT
语句中的锁选项。load_data_lock
:LOAD
语句中的锁选项。
interval_type
(interval
、interval_time_st
):INTERVAL
子句中的间隔类型
官方文档:MySQL 参考手册 - 11.5 Expressions - Temporal Intervals
枚举类型 interval_type
描述 INTERVAL
子句中的间隔类型。
-
INTERVAL_YEAR:年份间隔。
-
INTERVAL_QUARTER:季度间隔。
-
INTERVAL_MONTH:月份间隔。
-
INTERVAL_WEEK:周间隔。
-
INTERVAL_DAY:天间隔。
-
INTERVAL_HOUR:小时间隔。
-
INTERVAL_MINUTE:分钟间隔。
-
INTERVAL_SECOND:秒间隔。
-
INTERVAL_MICROSECOND:微秒间隔。
-
INTERVAL_YEAR_MONTH:年月间隔。
-
INTERVAL_DAY_HOUR:天小时间隔。
-
INTERVAL_DAY_MINUTE:天分钟间隔。
-
INTERVAL_DAY_SECOND:天秒间隔。
-
INTERVAL_HOUR_MINUTE:小时分钟间隔。
-
INTERVAL_HOUR_SECOND:小时秒间隔。
-
INTERVAL_MINUTE_SECOND:分钟秒间隔。
-
INTERVAL_DAY_MICROSECOND:天微秒间隔。
-
INTERVAL_HOUR_MICROSECOND:小时微秒间隔。
-
INTERVAL_MINUTE_MICROSECOND:分钟微秒间隔。
-
INTERVAL_SECOND_MICROSECOND:秒微秒间隔。
-
INTERVAL_LAST:最后一个间隔,用于标记枚举结束。
// include/my_time.h
enum interval_type {
INTERVAL_YEAR,
INTERVAL_QUARTER,
INTERVAL_MONTH,
INTERVAL_WEEK,
INTERVAL_DAY,
INTERVAL_HOUR,
INTERVAL_MINUTE,
INTERVAL_SECOND,
INTERVAL_MICROSECOND,
INTERVAL_YEAR_MONTH,
INTERVAL_DAY_HOUR,
INTERVAL_DAY_MINUTE,
INTERVAL_DAY_SECOND,
INTERVAL_HOUR_MINUTE,
INTERVAL_HOUR_SECOND,
INTERVAL_MINUTE_SECOND,
INTERVAL_DAY_MICROSECOND,
INTERVAL_HOUR_MICROSECOND,
INTERVAL_MINUTE_MICROSECOND,
INTERVAL_SECOND_MICROSECOND,
INTERVAL_LAST
};
YACC 语义组:
interval
/interval_time_st
:INTERVAL
子句或CAST
子句中的间隔关键字。
index_hint_type
(index_hint
):索引提示子句类型
枚举类型 index_hint_type
描述 MySQL 中的索引提示子句类型。
-
INDEX_HINT_IGNORE:忽略索引提示,数据库优化器将不使用指定的索引。
-
INDEX_HINT_USE:使用索引提示,建议数据库优化器使用指定的索引,但不是强制性的。
-
INDEX_HINT_FORCE:强制使用索引提示,要求数据库优化器必须使用指定的索引。
// sql/table.h
enum index_hint_type { INDEX_HINT_IGNORE, INDEX_HINT_USE, INDEX_HINT_FORCE };
YACC 语义组:
index_hint_type
:DQL 语句中的索引提示子句中的FORCE
或IGNORE
关键字。
fk_option
(m_fk_option
):索引处理数据变化时的处理选项
索引类型 fk_option
描述 MySQL 索引对数据变化时的处理选项。
-
FK_OPTION_UNDEF:未定义选项,表示没有指定任何外键动作。
-
FK_OPTION_RESTRICT:限制操作,如果外键相关的记录存在,则不允许删除或更新父表记录。
-
FK_OPTION_CASCADE:级联操作,父表中的更改(如更新或删除)会自动传播到相关子表记录。
-
FK_OPTION_SET_NULL:设为空操作,当父表记录被删除或更新时,子表中外键字段将被设置为 NULL。
-
FK_OPTION_NO_ACTION:不执行任何动作,与 RESTRICT 类似,但在检查约束之前不会执行任何动作。
-
FK_OPTION_DEFAULT:默认操作,使用数据库系统的默认行为处理外键约束。
// sql/key_spec.h
enum fk_option {
FK_OPTION_UNDEF,
FK_OPTION_RESTRICT,
FK_OPTION_CASCADE,
FK_OPTION_SET_NULL,
FK_OPTION_NO_ACTION,
FK_OPTION_DEFAULT
};
YACC 语义组:
delete_option
:DDL 语句中,索引对数据变化时的处理选项。
PT_joined_table_type
(join_type
):关联类型
枚举类型 PT_joined_table_type
描述 MySQL 中的关联类型。
-
JTT_INNER:内连接,值为 0x01。
-
JTT_STRAIGHT:直连,值为 0x02。
-
JTT_NATURAL:自然连接,值为 0x04。
-
JTT_LEFT:左连接,值为 0x08。
-
JTT_RIGHT:右连接,值为 0x10。
-
JTT_STRAIGHT_INNER:直连内连接,
JTT_STRAIGHT | JTT_INNER
的组合。 -
JTT_NATURAL_INNER:自然内连接,
JTT_NATURAL | JTT_INNER
的组合。 -
JTT_NATURAL_LEFT:自然左连接,
JTT_NATURAL | JTT_LEFT
的组合。 -
JTT_NATURAL_RIGHT:自然右连接,
JTT_NATURAL | JTT_RIGHT
的组合。
// sql/parser_yystype.h
enum PT_joined_table_type {
JTT_INNER = 0x01,
JTT_STRAIGHT = 0x02,
JTT_NATURAL = 0x04,
JTT_LEFT = 0x08,
JTT_RIGHT = 0x10,
JTT_STRAIGHT_INNER = JTT_STRAIGHT | JTT_INNER,
JTT_NATURAL_INNER = JTT_NATURAL | JTT_INNER,
JTT_NATURAL_LEFT = JTT_NATURAL | JTT_LEFT,
JTT_NATURAL_RIGHT = JTT_NATURAL | JTT_RIGHT
};
YACC 语义组:
outer_join_type
/natural_join_type
/inner_join_type
:JOIN
子句中的关联类型。
xa_option_words
(xa_option_type
):XA 事务选项
枚举类型 xa_option_words
描述 MySQL 的 XA 事务选项。
-
XA_NONE:无选项,表示没有特定的XA事务选项。
-
XA_JOIN:加入选项,用于指示当前事务应加入一个已存在的XA事务。
-
XA_RESUME:恢复选项,用于恢复之前挂起的XA事务。
-
XA_ONE_PHASE:单阶段提交选项,指示使用单阶段提交协议完成XA事务。
-
XA_SUSPEND:挂起选项,用于暂时挂起当前XA事务。
-
XA_FOR_MIGRATE:迁移选项,特指与事务迁移相关的XA操作。
// sql/xa.h
enum xa_option_words {
XA_NONE,
XA_JOIN,
XA_RESUME,
XA_ONE_PHASE,
XA_SUSPEND,
XA_FOR_MIGRATE
};
YACC 语义组:
opt_join_or_resume
:XA BEGIN
和XA START
语句中的 XA 事务选项。opt_suspend
:XA END
语句中的 XA 事务选项。opt_one_phase
:XA COMMIT
语句中的 XA 事务选项。
Int_type
(int_type
):整数类字段类型
枚举类型 Int_type
描述 MySQL 中整数类字段的类型:
// sql/parser_yystype.h
enum class Int_type : ulong {
INT = MYSQL_TYPE_LONG,
TINYINT = MYSQL_TYPE_TINY,
SMALLINT = MYSQL_TYPE_SHORT,
MEDIUMINT = MYSQL_TYPE_INT24,
BIGINT = MYSQL_TYPE_LONGLONG,
};
YACC 语义组:
int_type
:整数类的字段类型。
Numeric_type
(numeric_type
):浮点类字段的类型
枚举类型 Numeric_type
描述 MySQL中浮点类字段的类型:
// sql/parser_yystype.h
enum class Numeric_type : ulong {
DECIMAL = MYSQL_TYPE_NEWDECIMAL,
FLOAT = MYSQL_TYPE_FLOAT,
DOUBLE = MYSQL_TYPE_DOUBLE,
};
YACC 语义组:
real_type
/numeric_type
:小数、浮点数类的字段类型。
Show_cmd_type
(show_cmd_type
):SHOW
语句模式
枚举类型 Show_cmd_type
用于指定 SHOW
命令的不同模式。
- STANDARD:标准显示模式,仅展示基本信息。
- FULL_SHOW:完整显示模式,展示详细信息而不进行扩展。
- EXTENDED_SHOW:扩展显示模式,提供额外的信息字段。
- EXTENDED_FULL_SHOW:完全扩展显示模式,结合了完整与扩展显示的特点,提供最详尽的信息。
// sql/parser_yystype.h
enum class Show_cmd_type {
STANDARD,
FULL_SHOW,
EXTENDED_SHOW,
EXTENDED_FULL_SHOW
};
YACC 语义组:
opt_show_cmd_type
:SHOW
语句中可选的模式指定关键字。
Acl_type
(acl_type
):REVOKE
语句移除权限类型
枚举类型 Acl_type
用于指定 REVOKE
语句移除权限类型。
- TABLE:表,与数据库表相关的访问控制。
- FUNCTION:函数,与数据库函数相关的访问控制,等同于
TYPE_ENUM_FUNCTION
。 - PROCEDURE:存储过程,与数据库存储过程相关的访问控制,等同于
TYPE_ENUM_PROCEDURE
。
// sql/sql_lex.h
enum class Acl_type {
TABLE = 0,
FUNCTION = TYPE_ENUM_FUNCTION,
PROCEDURE = TYPE_ENUM_PROCEDURE,
};
YACC 语义组:
opt_acl_type
:REVOKE
语句中可选的移除权限类型。