问题现象
使用 show triggers where/like 报错 Incorrect value,如下图所示。

关键日志信息,日志中存在长度超限的索引名:__idx_500729_scoreable_level_definition_scoreable_type_scope_id_index。
[2024-10-18 17:01:44.058092] WDIAG [SQL] string_length_check (ob_datum_cast.cpp:9606) [5965][T1002_L0_G0][T1002][xxxxx-xxxxx-xxxxx-xxxxx] [lt=0][errcode=-5167] char type length is too long(max_accuracy_len=64, trunc_len_char=69)
[2024-10-18 17:01:44.058160] WDIAG [STORAGE] get_next_row (ob_multiple_merge.cpp:361) [5965][T1002_L0_G0][T1002][xxxxx-xxxxx-xxxxx-xxxxx] [lt=5][errcode=-5222] get row from fuse failed(ret=-5222, unprojected_row_={row_flag:{flag:"INSERT", flag_type:0}, trans_id:{txid:0}, scan_index:0, mvcc_row_flag:{first:0, uncommitted:0, shadow:0, compact:0, ghost:0, last:0, reserved:0, flag:0}, snapshot_version:0, fast_filter_skipped:false, have_uncommited_row:false, group_idx:0, count:3, datum_buffer:{capacity:32, datums:0x7f62acf95920, local_datums:0x7f62acf95920}, datums:[col_id=0:{len: 69, flag: 0, null: 0, ptr: 0x7f649e4e8af4, hex: 5F5F6964785F3530303732395F73636F726561626C655F6C6576656C5F646566696E6974696F6E5F73636F726561626C655F747970655F73636F70655F69645F696E646578, cstr: __idx_500729_scoreable_level_definition_scoreable_type_scope_id_index},col_id=1:{len: 8, flag: 0, null: 0, ptr: 0x7f62acf95968, hex: 0000000000000000, int: 0},col_id=2:{len: 8, flag: 0, null: 0, ptr: 0x7f62acf959a0, hex: 89A6070000000000, int: 501385},]})
问题原因
因为存在缺陷,导致 OceanBase 数据库创建索引名加上 OceanBase 数据库自带前缀,导致超过 64 字节的索引限制,导致 show trigger where/like 报错 Incorrect value。

问题的风险及影响
show triggers where/like 报错。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V3.x、V4.x 版本。
解决方法及规避方式
解决方法:
索引重新命名。
ALTER TABLE table_name RENAME INDEX old_index_name TO new_index_name;规避方式:
尽量少创建长命名索引。