注册

dm8数据库(购买了授权的),执行一个自定义的聚合函数会让数据库实例挂掉

maybe 2025/05/08 360 1

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:麒麟操作系统,X86的centos版本也会挂
【CPU】:鲲鹏芯片
初步排查到的原因是因为INTEGER 这个类型的问题,用NUMBER替换所有的不会挂
【问题描述】*:
CREATE OR REPLACE TYPE bit_or_agg_type AS OBJECT (
bit_or_result INTEGER,

STATIC FUNCTION ODCI***(sctx IN OUT bit_or_agg_type)
RETURN INTEGER,

……
);

CREATE OR REPLACE TYPE BODY bit_or_agg_type IS

STATIC FUNCTION ODCI***(sctx IN OUT bit_or_agg_type)
RETURN INTEGER IS
BEGIN
sctx := bit_or_agg_type(NULL);
RETURN ODCIConst.Success;
END;
……

END;

CREATE OR REPLACE FUNCTION bit_or(input INTEGER) RETURN INTEGER
PARALLEL_ENABLE AGGREGATE USING bit_or_agg_type;
上面是自定义的聚合函数部分内容示例

SELECT
A.menu_path,
bit_or( A.item_id ) AS bit_privilege
FROM
cs_new_test_item
A INNER JOIN cs_new_test b ON A.menu_path = b.PATH
WHERE
b.menu_type = 2
AND ( b.filed_type & 2 = 2 )
AND b.filed_type & 1 = 0
GROUP BY
A.menu_path,

完整sql已反馈达梦官方

回答 0
暂无回答
扫一扫
联系客服