Postgresql

Postgres C 擴展中的環境變數

  • January 18, 2022

我無法在我的 PostgreSQL C 擴展程式碼中獲取環境變數。

例如,此函式始終返回111

#include "postgres.h"
#include "fmgr.h"
#include <stdlib.h>

PG_MODULE_MAGIC;

PG_FUNCTION_INFO_V1(myinc);
Datum
myinc(PG_FUNCTION_ARGS)
{
 int32 arg = PG_GETARG_INT32(0);
 char* envar = getenv("MYINC");
 if (envar) {
   PG_RETURN_INT32(arg + atoi(envar));
 } else {
   PG_RETURN_INT32(111);
 }
}

雖然此 C 程序按預期工作,但它會列印以下內容MYINC

#include <stdio.h>
#include <stdlib.h>

int main()
{
 printf("MYINC: %s", getenv("MYINC"));
 return 0;
}

那應該工作得很好。但是請注意,它將從 PostgreSQL 伺服器程序的環境中獲取變數,而不是您目前的客戶端程序。

引用自:https://dba.stackexchange.com/questions/306226