代码拉取完成,页面将自动刷新
1764
函数使用internal类型的限制添加wm_concat
已合并
函数使用internal类型的限制添加wm_concat
需求场景
Orafce-3.17往OpenGauss移植,需要保持插件原有的函数wm_concat,故需要内核支持该函数使用internal数据类型。
wm_concat是Oracle12c以前版本的函数,在12c版本之后被删除,但插件Orafce-3.17为了兼容Oracle12c之前的版本,所以需要保留该函数wm_concat。
关联的Issue
场景表象
Orafce-3.17在OpenGauss-2.1.0版本中,安装插件时,
create extension orafce;
创建wm_concat函数,报错内容如下:
unsafe use of pseudo-type "internal"
插件orafce-3.17中函数wm_concat创建过程
CREATE AGGREGATE pg_catalog.wm_concat(text) (
SFUNC=pg_catalog.wm_concat_transfn,
STYPE=internal,
FINALFUNC=pg_catalog.listagg_finalfn
);
根因分析
opengauss内核对使用internal数据类型的函数限制在代码中InternalAggIsSupported函数中写死,但orafce中的wm_concat函数需要使用internal数据类型,orafce插件为了兼容12c之前的版本,所以必须保留wm_concat。
修改方案
在opengauss内核中InternalAggIsSupported函数处,添加对wm_concat的函数支持。
实现内容
在函数InternalAggIsSupported中,添加wm_concat其使用internal的权限。