达梦报错2685-试图在blob或者clob列上排序或比较

客户环境:

COMPATIBLE_MODE=4,GROUP_OPT_FLAG=52,ENABLE_BLOB_CMP_FLAG=0
在clob时,报错2685,不能排序,将ENABLE_BLOB_CMP_FLAG参数配置为2后,问题解决,
经测试ENABLE_BLOB_CMP_FLAG为0时,test字段跟clob一样会报错,
ENABLE_BLOB_CMP_FLAG参数为动态参数,可以在线修改,ENABLE_BLOB_CMP_FLAG由0改2时,立即生效,由2改0时,需要重启生效。

====================测试记录=======================

select para_name,para_value from v$dm_ini where para_name='ENABLE_BLOB_CMP_FLAG';
select para_name,para_value from v$dm_ini where para_name='GROUP_OPT_FLAG';
select para_name,para_value from v$dm_ini where para_name='COMPATIBLE_MODE';


创建测试环境
CREATE TABLE TAB3 ( T_INT INT NOT NULL, T_INT1 INT, T_DATE DATE,T_CLOB CLOB, T_TEXT INT, T_VARCHAR CLOB,t_text1 text);

插入数据:
insert into tab3 values(1,1,'2022-04-11','clob',1,'clob','text');

insert into tab3 values(2,1,'2022-04-11','clob',1,'clob','text');

insert into tab3 values(3,1,'2022-04-11','clob',1,'clob','text');

insert into tab3 values(4,1,'2022-04-11','clobbak',1,'clob','text');

insert into tab3 values(5,1,'2022-04-11','clob',1,'clob','text');

insert into tab3 values(6,1,'2022-04-11','clob',1,'clob','text');

insert into tab3 values(7,1,'2022-04-11','clob',1,'clob','text');

insert into tab3 values(8,1,'2022-04-11','clobbak',1,'clob','text');

insert into tab3 values(9,1,'2022-04-11','clobbak',1,'clob','text');

insert into tab3 values(10,1,'2022-04-11','clobbak',1,'clob','text');

select * from tab3;

select T_INT,T_CLOB from tab3 where T_INT>3 group by T_INT,T_CLOB order by T_INT;
select T_INT,t_text1 from tab3 where T_INT>3 group by T_INT,t_text1 order by T_INT;

===结果===
SQL> select T_INT,t_text1 from tab3 where T_INT>3 group by T_INT,t_text1 order by T_INT;
select T_INT,t_text1 from tab3 where T_INT>3 group by T_INT,t_text1 order by T_INT;
第1 行附近出现错误[-2685]:试图在blob或者clob列上排序或比较.
已用时间: 0.711(毫秒). 执行号:0.

修改参数:ENABLE_BLOB_CMP_FLAG=2

SQL> select T_INT,T_CLOB from tab3 where T_INT>3 group by T_INT,T_CLOB order by T_INT;

行号     T_INT       T_CLOB
---------- ----------- -------
1          4           clobbak
2          5           clob
3          6           clob
4          7           clob
5          8           clobbak
6          9           clobbak
7          10          clobbak

7 rows got

==测试修改兼容性为不兼容,检查相关参数配置==

兼容性改为0,测试两个参数作用,
GROUP_OPT_FLAG=53,同样报错
ENABLE_BLOB_CMP_FLAG=2 生效


SP_SET_PARA_VALUE(1,'ENABLE_BLOB_CMP_FLAG',0);
SP_SET_PARA_VALUE(1,'GROUP_OPT_FLAG',53);
SP_SET_PARA_VALUE(2,'COMPATIBLE_MODE',0);

select para_name,para_value from v$dm_ini where para_name='ENABLE_BLOB_CMP_FLAG';
select para_name,para_value from v$dm_ini where para_name='GROUP_OPT_FLAG';
select para_name,para_value from v$dm_ini where para_name='COMPATIBLE_MODE';

SQL> select T_INT,T_CLOB from tab3 where T_INT>3 group by T_INT,T_CLOB order by T_INT;
select T_INT,T_CLOB from tab3 where T_INT>3 group by T_INT,T_CLOB order by T_INT;
第1 行附近出现错误[-2685]:试图在blob或者clob列上排序或比较.
已用时间: 0.754(毫秒). 执行号:0.
SQL> select para_name,para_value from v$dm_ini where para_name='ENABLE_BLOB_CMP_FLAG';
select para_name,para_value from v$dm_ini where para_name='GROUP_OPT_FLAG';
select para_name,para_value from v$dm_ini where para_name='COMPATIBLE_MODE';

行号     para_name            para_value
---------- -------------------- ----------
1          ENABLE_BLOB_CMP_FLAG 0

已用时间: 6.127(毫秒). 执行号:601.
SQL>
行号     para_name      para_value
---------- -------------- ----------
1          GROUP_OPT_FLAG 52

已用时间: 6.148(毫秒). 执行号:602.
SQL>
行号     para_name       para_value
---------- --------------- ----------
1          COMPATIBLE_MODE 0

已用时间: 6.528(毫秒). 执行号:603.
SQL> SP_SET_PARA_VALUE(1,'ENABLE_BLOB_CMP_FLAG',2);
DMSQL 过程已成功完成
已用时间: 14.442(毫秒). 执行号:604.
SQL> select T_INT,T_CLOB from tab3 where T_INT>3 group by T_INT,T_CLOB order by T_INT;

行号     T_INT       T_CLOB
---------- ----------- -------
1          4           clobbak
2          5           clob
3          6           clob
4          7           clob
5          8           clobbak
6          9           clobbak
7          10          clobbak

7 rows got

ENABLE_BLOB_CMP_FLAG:是否支持大字段类型的比较。
0:不支持;
1:支持,此时 DISTINCT、ORDER BY、 分析函数和集函数支持对大字段进行处理,且当大字段跟字符串比较时,让大字段转换成字符串类型;
2:支持,此时 DISTINCT、ORDER BY、分析函数和集函数支持对大字段进行处理,且兼容 MYSQL 模式下,大字段跟字符串比较时,让字符串转换成大字段类型

GROUP_OPT_FLAG:分组项优化参数开关。
0:不优化;
1:非 MYSQL 兼容模式下(即 COMPATIBLE_MODE 不等于 4),支持查询项不是 GROUP BY 表达式;
2:外层分组项下放到内层派生表中提前分组优化;
4:表示对于多级分区,并行下允许尝试不生成多个 AGR;
8:进行哈希分组时,依赖分组项列中的核心项分组列来分组;
16:位图索引覆盖简单分组查询中的所有列时,允许使用位图索引对查询进行优化;
32:进行哈希分组时,对 TOP 查询进行优化,提前返回指定数量的分组;
64:DMDPC 下,对无分组项且含有 DISTINCT 集函数的查询,允许对集函数参数先进行一次分发处理;
128:尽量使用 SAGR+SORT 计划实现 GROUP。
支持使用上述有效值的组合值,如 3 表示同时进行 1 和 2 的优化

达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值