Postgresql
Postgres C 擴展中的環境變數
我無法在我的 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 伺服器程序的環境中獲取變數,而不是您目前的客戶端程序。