我正在为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
}

最佳答案

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

ERROR:  unrecognized configuration parameter "some_boolean"


如果是GUC,则它可能是核心PostgreSQL GUG,或者已在DefineCustomBoolVariable(来自utils/guc.h)中注册。

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

在代码中使用该变量!

关于c - PostgreSQL:如何在C扩展功能中获取参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48386268/

10-11 22:06