我正在为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
}
答案 0 :(得分:1)
some_boolean
必须是现有的GUC(配置参数),否则函数定义将生成
ERROR: unrecognized configuration parameter "some_boolean"
如果它是GUC,它可以是核心PostgreSQL GUG,也可以使用DefineCustomBoolVariable
(来自utils/guc.h
)在某处注册。
每个GUC属于一个C变量,通常是全局变量。
在代码中使用该变量!