我想创建一个 postgresql c 语言函数,其参数和返回值是 varchar,并且在处理过程中使用 Char []。
但是,它并没有按预期工作。
我做了一个这样的c程序。
#include <postgres.h>
#include <port.h>
#include <fmgr.h>
#include <stdlib.h>
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
// Required for windows.
extern PGDLLEXPORT Datum VARCHAR_CHAR_ARRAY_VARCHAR(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(VARCHAR_CHAR_ARRAY_VARCHAR);
Datum VARCHAR_CHAR_ARRAY_VARCHAR(PG_FUNCTION_ARGS) {
// Get arg.
VarChar *arg1 = (VarChar *)PG_GETARG_VARCHAR_P(0);
// VarChar to Char[].
char *c = (char *)VARDATA(arg1);
elog(NOTICE, "VarChar to Char[].");
elog(NOTICE, c);//Log1
// Do something.(e.g. replace)
// Since it uses another system, it must be Char [].
//Char[] to VarChar.
VarChar *rtn = (VarChar *)VARDATA(c);
elog(NOTICE, …Run Code Online (Sandbox Code Playgroud)