某些场景下查询mysql.stats_top_n表导致乱码

Bug 反馈
清晰准确地描述您发现的问题,提供任何可能复现问题的步骤有助于研发同学及时处理问题
【 TiDB 版本】6.3.0
【 Bug 的影响】导致客户端乱码

【可能的问题复现步骤】

mysql> show variables like 'tidb_analyze_version';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| tidb_analyze_version | 2     |
+----------------------+-------+
1 row in set (0.00 sec)

开启tpch的bench,等自动统计信息完成后,查询topN的统计信息视图
select * from mysql.stats_top_n where table_id=125 and hist_id=2;

【看到的非预期行为】

mysql> select * from mysql.stats_top_n where table_id=125 and hist_id=2;
+----------+----------+---------+-----------+-------+
| table_id | is_index | hist_id | value     | count |
+----------+----------+---------+-----------+-------+
|      125 |        1 |       2 |      | 60099 |
|      125 |        1 |       2 |      | 58500 |
|      125 |        1 |       2 |    
                                       | 58357 |
|      125 |        1 |       2 |      | 58344 |
|      125 |        1 |       2 |      | 58032 |
|      125 |        1 |       2 |    
                                       | 58019 |
|      125 |        1 |       2 |     | 57993 |
|      125 |        1 |       2 |      | 57915 |
|      125 |        1 |       2 |      | 57863 |
|      125 |        1 |       2 |      | 57850 |
|      125 |        1 |       2 |      | 57421 |
|      125 |        1 |       2 |       | 57408 |
|      125 |        1 |       2 |         | 57382 |
|      125 |        1 |       2 |      | 57369 |
  | 57148 ||        1 |       2 |    
|      125 |        1 |       2 |      | 57018 |
|      125 |        1 |       2 |      | 56927 |
|      125 |        1 |       2 |    
  | 56706 |
|      125 |        1 |       2 |      | 56576 |
|      125 |        1 |       2 |      | 56563 |
|      125 |        1 |       2 |      | 56524 |
|      125 |        1 |       2 |      | 56459 |
|      125 |        1 |       2 |      | 56329 |
|      125 |        1 |       2 |         | 56225 |
|      125 |        1 |       2 |         | 56056 |
+----------+----------+---------+-----------+-------+
25 _-+_ i+ _e+ (0.01 _ec)

+y_-+> 
+y_-+> 
+y_-+> 
+y_-+> 

【期望看到的行为】
正常输出
【相关组件及具体版本】

【其他背景信息或者截图】

您好,我这边测试没有出现这个情况,可能是你的 session 窗口设置问题或者 client 兼容性配置问题。麻烦提供最小的复现步骤。感谢!

好的,晚上我回家把详细信息发一下。

topn乱码_ddl.sql (2.8 KB)

您好,可以按照脚本创建相关表,然后做查询就可以复现。

也遇到过类似的问题

您好,我这边没有复现出来。麻烦确认一下你的 client 端的操作系统、字符集以及 client app 。

学习学习。。我也测测

看你的截图,内容里面也存在乱码了,只是没有破坏掉窗口的显示。原文内容是没有乱码的,你可以查一下导入的这个表的数据。我那个展现问题应该就是内容乱码导致的,我后来写程序读取这个topn统计信息表发现内容存在乱码。实际上真正业务表里面没有乱码。

我这乱的很彻底 6.3.0
image
image

是不是字符集原因呢

看下xshell的字符集

@人如其名 应该是我的客户端字符集问题,我测试一下 v5.4.2 输出结果也一样的。应该和 TiDB 版本没有关系。建议你再试试调整一下从 TiDB → Client → OS 的字符集配置。

是因为查询的表里有个longblob字段,二进制显示出来导致乱码了

可能是你说的这样,但是感觉这个字段用varchar就可以了。

我感觉就是字符集的问题 , 字符串应该没啥问题

怎么会是字符集的问题呢,你看h5n1老哥的那个设置的明明白白。

我iterm2里并不乱码,只不过longblob字段查出来一堆不规则字符串,其他的终端工具还有securecrt xshell ubuntu里全乱的很彻底