私は Postgresql 9.2 インストールを使用しており、拡張機能 (プログラム済み) を実行しようとしています。
このコードはコンパイルされ、Postgresql にロードできます。しかし、実行しようとするたびINSERT
に、DB への接続が停止します。その理由は、私のin
関数が何らかの形で壊れているためだと思います。
まずtypedefに:
typedef struct tphys {
char length[4];
char data[1];
} tphys;
ご覧のとおり、サイズが無制限であることを意図したデータ型があります。そして今、in
コードに:
PG_FUNCTION_INFO_V1(tphys_data_in);
Datum
tphys_data_in(PG_FUNCTION_ARGS)
{
char *in = PG_GETARG_CSTRING(0);
tphys *dest = (tphys *) palloc(VARHDRSZ + VARSIZE(in));
SET VARSIZE(dest, VARHDRSZ + VARSIZE(in));
memcpy(VARDATA(dest), in, VARSIZE(in));
PG_RETURN_POINTER(dest);
}
私はかなり長い間このコードを試してきましたが、エラーがどこにあるのか本当にわかりません。もしかして見えますか?