cdc数据问题

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
observer 4.1 obcdc 4.1
【 使用版本 】
【问题描述】清晰明确描述问题
建表语句

CREATE TABLE `string` (
`c_char_min` CHAR(0),
`c_char_max` CHAR(255),
 primary key(c_char_max)
);

insert语句

insert into string (c_char_min,c_char_max) values('','测试');

cdc日志信息

[2023-12-18 06:22:49.304639] INFO  [TLOG] check_column_ (ob_log_meta_manager.cpp:1121) [36947][Formatter_5][T0][Y86220ABA1084-0000000002200001-0-0] [lt=70] [META_STAT] check_column_(table_name="string", table_id=500232, is_heap_table=false, column_id=17, column_name="c_char_max", is_user_column=true, is_heap_table_pk_increment_column=false, enable_output_hidden_primary_key=false, is_invisible_column=false, enable_output_invisible_column=false, is_hidden_column=false)
[2023-12-18 06:22:49.304652] INFO  [TLOG] check_column_ (ob_log_meta_manager.cpp:1121) [36947][Formatter_5][T0][Y86220ABA1084-0000000002200001-0-0] [lt=13] [META_STAT] check_column_(table_name="string", table_id=500232, is_heap_table=false, column_id=16, column_name="c_char_min", is_user_column=true, is_heap_table_pk_increment_column=false, enable_output_hidden_primary_key=false, is_invisible_column=false, enable_output_invisible_column=false, is_hidden_column=false)
[2023-12-18 06:22:49.304738] INFO  [TLOG] set_table_schema_ (ob_log_meta_manager.cpp:2052) [36947][Formatter_5][T0][Y86220ABA1084-0000000002200001-0-0] [lt=14] set_table_schema succ(schema_version=1702880548422288, tenant_id=1006, table_id=500232, table_name="string", tb_schema_info={rowkey_info:{size=1, column_stored_idx:[0]}, is_heap_table:false, user_column_idx_array:0, user_column_idx_array_cnt:2, column_schema_array:{column_id:17, column_flag:0, column_stored_idx:0, is_usr_column:true, usr_column_idx:0, meta_type:{type:"CHAR", collation:"utf8mb4_general_ci", coercibility:"INVALID"}, accuracy:{length:255, precision:-1, scale:-1}, collation_type:"utf8mb4_general_ci", orig_default_value_str:"", extended_type_info_size:0, extended_type_info:null, is_rowkey:true}, column_schema_array_cnt:2})
[2023-12-18 06:22:49.304775] INFO  [TLOG] set_primary_keys_ (ob_log_meta_manager.cpp:1326) [36947][Formatter_5][T0][Y86220ABA1084-0000000002200001-0-0] [lt=22] [META_STAT] set_primary_keys(ret=0, ret="OB_SUCCESS", table_name="string", table_id=500232, has_pk=true, pk_info="(0)", pks="c_char_max")
[2023-12-18 06:22:49.304785] INFO  [TLOG] set_unique_keys_ (ob_log_meta_manager.cpp:1803) [36947][Formatter_5][T0][Y86220ABA1084-0000000002200001-0-0] [lt=8] [META_STAT] set_unique_keys(ret=0, ret="OB_SUCCESS", table_name="string", table_id=500232, valid_uk_table_count=0, has_uk=false, uk_info=NULL, uks=NULL)

问题:cdc给我们的col并不是按照建表语句的顺序给的,看起来是将特殊列提前然后普通列按照顺序给的,是否有参数可以调整使得cdc一直按照建表语句的顺序获取col,或者有其他方式改正吗

【复现路径】问题出现前后相关操作

可以在OBCDC启动时指定配置项enable_output_by_table_def=1(配置项自OBCDC4.1.0.1版本生效)

1 个赞

非常感谢,帮了大忙

这里的参数没有暴露在文档中,是存在某些问题吗

可能是版本未考虑到,3.x的版本是按照列顺序输出的