36 Star 101 Fork 107

openGauss / openGauss-connector-jdbc

 / 详情

UTF8Encoding存在缺陷问题

已验收
缺陷 成员
创建于  
2023-10-26 19:44

【操作步骤】(请填写详细的操作步骤):

新增了UTF8Encoding进行解析UTF8编码数据,但是考虑不完整会到报错退出。
如系统表pg_catalog.pg_stat_activity 这个本身就会存在utf8/gbk编码共存场景。
因为这个是全局的。如果业务库是gbk那就存的数据是gbk编码。加上自己是utf8就存在数据编码混合出现。
可以直接回退到原始的用java自己的netstring方式。

输入图片说明

输入图片说明

输入图片说明

输入图片说明

输入图片说明

【预期输出】:

【实际输出】:

【原因分析】:

  1. 这个问题的根因
  2. 问题推断过程
  3. 还有哪些原因可能造成类似现象
  4. 该问题是否有临时规避措施
  5. 问题解决方案
  6. 预计修复问题时间

【日志信息】(请附上日志文件、截图、coredump信息):

【测试代码】:

评论 (8)

travelliu 创建了缺陷

Hey @travelliu, Welcome to openGauss Community.
All of the projects in openGauss Community are maintained by @opengauss_bot.
That means the developers can comment below every pull request or issue to trigger Bot Commands.
Please follow instructions at Here to find the details.

opengauss_bot 添加了
 
sig/connectors
标签

Hi @travelliu,
if you want to get quick review about your issue, please contact the owner in first: @周斌 ,
and then any of the maintainers: @Pike
and then any of the committers: @aaronwell , @Loong , @Kamus , @vimiix , @汪伟 , @travelliu
if you have any question, please contact the SIG: Connectors.

主要引入点
输入图片说明

jiexiao1413 负责人设置为周斌
jiexiao1413 优先级设置为不重要

@travelliu 问题已收到,待修复。

周斌 计划开始日期设置为2023-11-10
周斌 计划截止日期设置为2023-11-10

必现步骤:

  1. 创建GBK和UTF8两种编码的数据库:
    本次默认UTF8库用postgres,手动创建t1库:
    create database t1 encoding='GBK' lc_collate='C' lc_ctype='C';
    输入图片说明
  2. 新起两个连接分别访问postgres和t1库,并且使用事务保证当前执行的语句为插入中英混合内容:
    测试表定义create table t1 (id int, data varchar2(100));
    两个session都执行begin; insert into t1 values (0, '斤斤计较8哈哈012急急急');
    输入图片说明
  3. 使用jdbc连接postgres库,并查询公共视图pg_stat_acitivity中的query语句,这样就在一个session中同时得到gbk和utf8的字符串:
    try (Connection conn = TestUtil.openDB(props)) {
        conn.setAutoCommit(false);
        try (Statement st = con.createStatement()) {
          try (ResultSet rs = st.executeQuery("select t.datname, t.query  from pg_stat_activity t")) {
            while (rs.next()) {
              System.out.println(String.format("result:%s %s", rs.getString(1), rs.getString(2)));
            }
          } finally {
          }
        }
    }
  1. 打印结果可以看到编码错误,直接断开连接了,影响使用:
    输入图片说明
周斌 任务状态待办的 修改为已确认
周斌 任务状态已确认 修改为修复中
周斌 通过opengauss/openGauss-connector-jdbc Pull Request !167任务状态修复中 修改为已完成
周斌 任务状态已完成 修改为待回归
jiexiao1413 任务状态待回归 修改为测试中
wan005 添加协作者裴琳倩

验收日期:2023-11-21
验收版本:compiled at 2023-11-15-00:26:19 build f4e6290
验收结论:通过
输入图片说明
输入图片说明

裴琳倩 任务状态测试中 修改为已验收

验收日期:2024-4-23
验收版本:compiled at 2024-04-17-15:42:00 build fd771c9 (5.0.1B001)
验收结论:本issue相关场景验收通过
输入图片说明
输入图片说明

除了GBK、UTF8外,SQL_ASCII编码的库存在问题
输入图片说明
输入图片说明
gsql直连正常查询
输入图片说明

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(4)
13084139 opengauss bot 1686829535 1603209 travelliu 1650447184
Java
1
https://gitee.com/opengauss/openGauss-connector-jdbc.git
git@gitee.com:opengauss/openGauss-connector-jdbc.git
opengauss
openGauss-connector-jdbc
openGauss-connector-jdbc

搜索帮助