在postgres c++函数中有没有解析argv的函数?

sqougxex  于 2022-09-21  发布在  PostgreSQL
关注(0)|答案(1)|浏览(127)

我的postgres的C++函数为静态单例配置类使用了一个参数(到配置的路径),现在它是通过定义从Cmake设置的。我希望将路径指定为Main函数中的argv参数。然而,我的函数只是一个共享的(.so)库。有什么方法可以实现这样的功能吗?

现在我使用这个变量:

add_compile_definitions(CONFIG_PATH="/some/path/to/config.ini)

我还有一个用于创建postgres函数的SQL脚本:

CREATE OR REPLACE FUNCTION some() RETURNS text
     AS 'postgres_Clibrary.so', 'someFunction'
     LANGUAGE C;

和LOAD的功能如下:

psql -f create_functions.sql

我想将其更改为如下内容:

psql -f create_functions.sql -DPATH_TO_CONFIG="/some/path/to/config.ini"

有没有什么变种可以获得我想要的类似功能?如何在不重新编译的情况下完成它?

6uxekuva

6uxekuva1#

我认为这里的参数可以使用缺省值。

定义您的函数,使其具有额外的参数config_path。该参数必须是最后一个参数。然后您可以将该函数定义为

CREATE FUNCTION some(
   first_param text,
   config_path text DEFAULT '/some/path/to/config.ini'
) RETURNS text
AS 'postgres_Clibrary.so', 'someFunction'
LANGUAGE C;

现在您只需使用以下命令调用该函数

SELECT some('first_arg');

并且将用缺省值替换第二个参数。

相关问题