- 25 10月, 2022 23 次提交
- 24 10月, 2022 3 次提交
-
-
由 obdev 提交于
-
由 obdev 提交于
-
由 wangzelin.wzl 提交于
-
- 21 10月, 2022 1 次提交
-
-
由 obdev 提交于
-
- 14 10月, 2022 4 次提交
- 13 10月, 2022 1 次提交
-
-
由 beifangxiuwhx 提交于
Description: ============ 对于Binary类型来说,所有数据的存储看作二进制,是不需要校验字符集的。 但是OB在处理Binary类型的数据操作时,会校验字符集,举个例子,如果你在utf8mb4的表里,往binary写入GBK编码的"你"字,是会报错的。只能以 insert into t values(X'C4E3')方法插入 这对业务从mysql迁移到OB是很痛苦的事情。 Analysis: ========= OB的binary类型底层实现和varchar相同,只在DDL阶段会区分binary类型。 出错的原因是在SQL解析阶段(transform_tree)将binary的字段按varchar处理进行字符集编码检查。这是因为在词法语法解析时数据库无从得知当前的字符串是否为binary(目前SQL解析阶段还获取不到实际表结构) Fix: ======== 修复方法: 个人觉得词法语法解析阶段进行字符集检查完全没有必要,后续物理执行计划算子打开时,OB也会对字符集编码进行处理。 因此,建议删除resolve_const函数中的check_well_formed_str 目前来看,这个函数只用来处理SQL解析后的parseNode节点,对后续的SQL逻辑没有侵入。 ------------- wenghaixing@unionpay.com
-
- 12 10月, 2022 5 次提交
- 09 10月, 2022 2 次提交
- 04 10月, 2022 1 次提交
-
-
由 程序员小王(troy) 提交于
-