PostgreSQL:如何在C扩展函数中获取参数?

时间:2018-01-22 16:35:50

标签: c postgresql

我正在为Postgres编写一个C用户定义的扩展函数,并希望获得我在C代码中在SQL级别设置的参数值。

例如,在SQL中,我有类似的东西:

CREATE FUNCTION my_test_function(text) RETURNS text AS 'path_to_so', 'my_function' LANGUAGE C STRICT SET some_boolean TO true;

问题是如何在C代码中获取 some_boolean 变量的值?

Datum my_test_function(PG_FUNCTION_ARGS) {
// try to get some_boolean here
}

1 个答案:

答案 0 :(得分:1)

some_boolean必须是现有的GUC(配置参数),否则函数定义将生成

ERROR:  unrecognized configuration parameter "some_boolean"

如果它是GUC,它可以是核心PostgreSQL GUG,也可以使用DefineCustomBoolVariable(来自utils/guc.h)在某处注册。

每个GUC属于一个C变量,通常是全局变量。

在代码中使用该变量!