#yyds干货盘点#GreenPlum7/PG12中如何添加一个自定义内置函数

GP7的内置函数机制和GP6稍有不同。其中内置函数元数据信息来自pg_proc.dat。pg_proc.dat中是什么东西呢?

...

...

例如加法的函数int4_sum。这里解释下几个重要成员:oid为函数的OID,descr为函数的描述,proname为函数名,prore其他应付款type为函数返回值类型,proargtypes数据库原理为函数所有入参类型,prosrc为函数。这些自定义函数内容构成了所有内置函数的元数据信息。(如果需要新添加用户自定义函数,可以在这里添加元数据信息)。

GP7通过gen_fmgrtab.pl的perl脚本利用pg_proc.dat元数据生成fmgroids.h、fmgrprotos.h和f数据库系统概论mgrtab.c三个文件。

其中fmgroids.h是所有内置函数的OID宏定义:

#define F_HEAP_TABLEAM_HANDLER 3
#define F_BYTEAOUT 31
#define F_CHAROUT 33
...