有没有办法编写一个自定义聚合 Postgresql C 扩展函数,该函数从用户那里获取输入并将其设置为初始条件?如果是这样,怎么做?
我过去写过几个 Postgresql 扩展。输入始终是表格的列,但现在出于理论上的原因,我需要根据一个变化很大的用户输入进行聚合扩展。特别是,这些值也不能存储在数据库中。
编辑1: 例如,说我想运行该功能
aggregate fancy_select( int tmp_accum_value, int column, int *fancy_math_stuff){
return (row *** fancy_math_stuff)
}
其中 *** 是一个花哨的数学运算,它使用整个 fancy_math_stuff 数组,并且所述数组在第一次调用时传递,但它不作为列存储在数据库中。tmp_accum_value 是累积的中间状态。
如果您需要将参数传递给聚合函数,请执行此操作。该参数不必是表列。
例如:
没错,您也可以将该函数称为
但是没有人强迫你这样做,如果你希望第二个参数是一个用于初始化然后状态的常量。