반응형
mariadb 사용자 정의 집계 함수
저는 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
내가 뭘 빠트렸나요?누락된 구성이 있습니까?
도와주셔서 감사합니다.
버그 https://jira.mariadb.org/browse/MDEV-18100 로 보고되었습니다.
해결 방법으로 모든 스키마에 UDAF를 만듭니다.
언급URL : https://stackoverflow.com/questions/52586307/mariadb-user-defined-aggregate-function
반응형
'programing' 카테고리의 다른 글
Woocommerce 아카이브 페이지에서 제품 루프 파라미터를 변경하려면 어떻게 해야 합니까? (0) | 2023.09.14 |
---|---|
빨리 이중 물음표를 다는 것의 목적은 무엇입니까? (0) | 2023.09.14 |
Angular-CLI가 Angular Project에서 '모델'에 대한 명령을 생성하지 않는 이유는 무엇입니까? (0) | 2023.09.14 |
차트 js 2 막대폭을 설정하는 방법 (0) | 2023.09.14 |
Gist: 이미지는 어떻게 Gist에게 업로드됩니까? (0) | 2023.09.14 |