10bet网址
MySQL内部手册


14.10.1 TABLE_MAP_EVENT

第一个事件行基于复制声明要更改的表是如何定义的。

TABLE_MAP_EVENT:

TABLE_MAP_EVENT定义了将要更改的表的结构。

有效载荷
Post-header: if post_header_len == 6 {4 table id} else {6 table id} 2 flags payload: 1 schema name length string schema name 1 [00] 1 table name length string table name 1 [00] lenent -int column-count string。var_len [length=$column-count] column-def lenent -str column-meta-def n NULL-bitmask, length: (column-count + 8) / 7
字段
  • table_id6——数字表id

  • 旗帜2)——旗帜

  • schema_name_length1)——模式名的长度

  • schema_namestring.var_len——[len=schema_name_length]模式名

  • table_name_length1)——模式名的长度

  • table_namestring.var_len——[len=table_name_length]表名

  • column_countlenenc_int)——表映射中的列数

  • column_type_defstring.var_len——[len=column_count]列定义数组,每个字段类型一个字节

  • column_meta_deflenenc_str——每列的metainfo数组,length是metainfo-array的总长度(以字节为单位),每个metainfo字段的长度依赖于columns字段类型

  • null_bitmapstring.var_len——[len=(column_count + 8) / 7]

column_type_def

列定义。它作为长度编码字符串发送,其中字符串的长度是列的数量,它的每个字节是协议::ColumnType的列。

column_meta_def

每个列的特定于类型的元数据

协议::MYSQL_TYPE_STRING

由于Bug37426字符串元数据的布局有点紧凑:

1 byte0 1 byte1

这两个字节编码类型而且长度

NULL-bitmap

位掩码包含可为每列设置的位集.列长度取自column-def