PostgreSQL 新增自定义内建函数

PG新增自定义函数

举例。添加完自定义系统函数之后需要initdb才生效。

1. 添加proc脚本

vim src/include/catalog/pg_proc.dat

新增UDF set_new_transaction_id

#function to set new transaction ID
{ oid => '29490', descr => 'set current transaction ID',
  proname => 'set_new_transaction_id', provolatile => 's', proparallel => 'u',
  prorettype => 'int8', proargtypes => 'int8', prosrc => 'set_new_transaction_id' },

需要注意的是oid中的数字务必是有效数字,执行下面命令,从中选择一个合适的oid。

./src/include/catalog/unused_oids

2.添加函数定义

vim src/backend/utils/adt/txid.c

只需要新增函数定义,与citus的UDF区别在citus需要函数声明,pg的函数不需要。

Datum
set_new_transaction_id(PG_FUNCTION_ARGS)
{
	txid val = PG_GETARG_INT64(0);

	SetNewTransactionId(val);

	PG_RETURN_INT64(val);
}
posted @ 2022-04-13 15:45  AshenYi  阅读(602)  评论(0编辑  收藏  举报