【问题标题】:mariadb user defined aggregate functionmariadb 用户定义的聚合函数
【发布时间】:2019-03-06 06:42:54
【问题描述】:

我正在使用 mariadb 10.3.9,并创建了一个用户定义的聚合函数 (UDAF) 并放置在 common_schema 中。此架构包含我的实用程序函数,供同一服务器上的其他架构/数据库使用。

问题是在使用任何其他模式时调用 UDAF 时,它总是返回 NULL!

以下是为了说明问题:

CREATE SCHEMA IF NOT EXISTS common_schema;
DELIMITER $$
DROP FUNCTION IF EXISTS common_schema.add_ints $$
CREATE FUNCTION common_schema.add_ints(int_1 INT, int_2 INT) RETURNS INT NO SQL 
BEGIN 
    RETURN int_1 + int_2; 
END $$ 
DROP FUNCTION IF EXISTS common_schema.sum_ints $$
CREATE AGGREGATE FUNCTION common_schema.sum_ints(int_val INT) RETURNS INT 
BEGIN 
    DECLARE result INT DEFAULT 0; 
    DECLARE CONTINUE HANDLER FOR NOT FOUND RETURN result; 
    LOOP FETCH GROUP NEXT ROW; 
        SET result = common_schema.add_ints(result, int_val); 
    END LOOP; 
END $$

DELIMITER ; 

现在,以这种方式调用它,按预期返回结果:

USE common_schema;
SELECT common_schema.sum_ints(seq)
FROM (SELECT 1 seq UNION ALL SELECT 2) t; 
-- result: 3

使用任何其他模式调用它,它返回 NULL:

USE other_schema;
SELECT common_schema.sum_ints(seq) 
FROM (SELECT 1 seq UNION ALL SELECT 2) t; 
-- result: null

我在这里遗漏了什么吗?是否缺少任何配置?

感谢您的帮助。

【问题讨论】:

  • 建议向 MariaDB 提交错误。

标签: mariadb user-defined-functions user-defined-aggregate


【解决方案1】:

报告为错误https://jira.mariadb.org/browse/MDEV-18100

作为一种解决方法,在每个架构中创建 UDAF。

【讨论】:

    猜你喜欢
    • 2017-10-13
    • 2018-11-17
    • 2015-12-03
    • 2015-07-06
    • 2021-06-06
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    相关资源
    最近更新 更多