GaussDB(DWS)现网案例:collation报错
摘要:用户创建hash分布表,使用pbe方式执行使用分布列作为查询条件的语句时报错
本文分享自华为云社区《GaussDB(DWS)现网案例之collation报错》,作者: 你是猴子请来的救兵吗 。
用户创建hash分布表,使用pbe方式执行使用分布列作为查询条件的语句时报错,ERROR: could not determine which collation to use for string hashing
问题背景
内核版本:GaussDB 8.1.3
业务框架:jalor + mybatis
问题描述:用户创建hash分布表,使用pbe方式执行使用分布列作为查询条件的语句时报错,ERROR: could not determine which collation to use for string hashing
根因分析
源表为hash分布表,当使用分布列作为查询条件时,可以通过节点分区剪枝提升性能;
分布列类型为nvarchar2(100),构造pbe剪枝语句时,需要对传入变量进行类型转换和精度转换,未正确更新collation,导致执行报错
场景复现
建表数据
drop table t1; create table t1(c1 nvarchar2(5),c2 varchar)with (orientation=column)distribute by hash(c1);--分布列类型为nvarchar2(n) insert into t1(c1) values(generate_series(1,10));
场景1:client + p/e
prepare c1(nvarchar2) as select c2 from t1 where c1 = $1; execute c1(5);
场景2:jdbc + p/b/e
PreparedStatement pstmt = con.prepareStatement("select c2 from t1 where c1 = ?;"); pstmt.setString(1, "5"); ResultSet rs = pstmt.executeQuery();
场景3:jalor + *Dao.*.xml
<delete id="query"> select c2 from t1 where c1 = #{c1} </delete>
规避办法
任选一种既可,推荐第一种,改动小影响小
1,将分布列类型nvarchar2(n)修改为nvarchar2或varchar(n)
2,使用拼接sql的办法执行语句,而不是pbe
3,语句中指定collate子句,如select c2 from t1 where c1 collate "default" = ?;
4,升级版本
知识小结
问题条件:
1,内核版本8.1.3 ≤ version ≤ 8.1.3.300
2,分布列包含nvarchar2(n)类型字段
3,使用pbe的方式执行语句
4,语句过滤条件包含所有分布列
规避方法:
打破以上任一条件即可规避

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
付费为爱发电?欧盟 CRA 法案或将破坏开源生态!
去年 9 月,欧盟提出了一项网络弹性法案 (CRA) ,目标是“加强网络安全规则,以提供更安全的硬件和软件产品”。但该法案随即引起了公众的批评,因为它可能会对开源生态产生严重的影响。 这个法案可以理解为软件产品的 CE (欧盟认证)标准,有四个具体目标: 要求软件制造商提高“全生命周期”数字元素产品的安全性 提供一个“一致的网络安全框架”来衡量软件的安全合规性 提高软/硬件产品的“数字元素”的安全属性透明度 让客户可以“放心使用带有数字元素的产品” 总而言之,这是一套新的欧盟软件安全认证规定。对于软件开发商和硬件制造商,它将增加新的网络安全要求、合格评定费、合格认证文件和报告义务等直接合规成本。当然,这些成本毫无意外地会转嫁到消费端,法案中如此描述: 这些额外成本是合规总成本的一部分,包括对企业和公共政务的负担,估计为 290 亿欧元(315.4 亿美元),随之而来的是消费者侧的软件价格将会上涨。 但每年在网络安全事件中受到的损失将减少 180 至 2900 亿欧元。 但对于大部分为爱发电的开源软件作者来说,这无疑是一项疯狂的规定,数年如一日的辛苦付出没有回报也就算了,还要自掏腰包来进...
- 下一篇
VSCode一键接入Notebook体验算法套件快速完成水表读数
摘要:本示例围绕真实AI需求场景,介绍VSCode一键接入Notebook体验算法套件快速完成水表读数的使用流程。 本文分享自华为云社区《VSCode一键接入Notebook体验算法套件快速完成水表读数》,作者:HWCloudAI。 本示例围绕真实AI需求场景,介绍VSCode一键接入Notebook体验算法套件快速完成水表读数的使用流程。 算法开发套件中目前提供自研(ivg系列)和开源(mm系列)共两套算法资产,可应用于分类、检测、分割和OCR等任务中。本示例中将组合使用自研分割算法(ivgSegmentation)和开源OCR算法(mmOCR)完成水表读数识别项目,并使用算法开发套件将其部署为华为云在线服务。 说明: 本案例教程仅适用于“华北-北京四”区域,新版Notebook。 准备数据 登录OBS控制台,创建OBS对象桶,区域选择“华北-北京四”。 登录ModelArts控制台,选择控制台区域为“华北-北京四”。 在“全局配置”页面查看是否已经配置授权,允许ModelArts访问OBS。如果没有配置授权,请参考配置访问授权(全局配置)添加授权。 分别下载本案例的数据集,水表表盘...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19