Weird problems with C extension and bytea as input type - Mailing list pgsql-general

From Adrian Schreyer
Subject Weird problems with C extension and bytea as input type
Date
Msg-id AANLkTimvAfX9G5jzhm=eMdDOBBYDJcPdM_SVnbuWbS_7@mail.gmail.com
Whole thread Raw
Responses Re: Weird problems with C extension and bytea as input type  (Merlin Moncure <mmoncure@gmail.com>)
List pgsql-general
Hi,

I have a weird problem with my custom functions (written in C,C++)
that use bytea as input type (cstring works fine). The functions will
work as expected if they are the only function that uses the bytea
column in a query; as soon as there is a second function using the
same column, the C function will return one of the following: an empty
cstring, a substring of the bytea or the correct cstring. Based on
these symptoms I assume there is something fundamental that I do wrong
(or that is missing) with handling the bytea pointer.

In one specific example, the bytea contains a binary file format that
the function converts into a string format. I convert the bytea to a
C++ string with string(VARDATA(b), VARSIZE(b)-VARHDRSZ).

bytea *b = PG_GETARG_BYTEA_P(0);
char *ism;

ism = function(b);

PG_RETURN_CSTRING(ism);

pgsql-general by date:

Previous
From: "Venkatesh"
Date:
Subject: Postgres 9.0 Replication - Problem in Starting up Standby Server
Next
From: Tom Lane
Date:
Subject: Re: share directory on windows