1
我想創建一個函數,將發現的tsrange
交集,但我不能得到它的工作聚集函數:PostgreSQL的超範圍
CREATE AGGREGATE intersection (tsrange) (
SFUNC = *,
STYPE = tsrange
)
我想創建一個函數,將發現的tsrange
交集,但我不能得到它的工作聚集函數:PostgreSQL的超範圍
CREATE AGGREGATE intersection (tsrange) (
SFUNC = *,
STYPE = tsrange
)
有兩個修改您的嘗試。首先,我不認爲你可以使用一個運算符作爲SFUNC,所以你需要定義一個命名函數來做交點,並使用它。
CREATE or REPLACE FUNCTION int_tsrange(a tsrange, b tsrange)
returns tsrange language plpgsql as
'begin return a * b; end';
其次,對於一個範圍的默認值是空範圍 - 這樣的交叉點永遠是空的。您需要將範圍初始化爲無限範圍'[,]'
以開始聚合。然後彙總定義是這樣的:
CREATE AGGREGATE intersection (tsrange) (
SFUNC = int_tsrange,
STYPE = tsrange,
INITCOND = '[,]'
);
太棒了,謝謝! –
哦,請張貼一個PGXN當你完成......這是那些東西,應該是一個核心... –
HTTP://www.postgresql .org/docs/9.2/static/xaggr.html –