On 07/12/2023 11:16, PG Bug reporting form wrote:
> The following bug has been logged on the website:
>
> Bug reference: 18231
> Logged by: anvesh work
> Email address: work.anvesh@gmail.com
> PostgreSQL version: 15.0
> Operating system: Windows 10
> Description:
>
> I have a function which was working fine in Postgres 10 but not in Postgres
> 15.
>
> When I traced the program, I am facing issue with the VARDATA(arg2).
> The arg2 is 2nd argument used in the calling function from PGAdmin4.
> After conversion it is returning text with special characters.
> In Postgres 10, note that 4 characters are concatenated with special
> characters, but other characters are working fine.
> Following are the lines of code:
> pgsql:
> select functionname('arg1', 'arg2', 'arg3');
>
> My Method in C program has
> text *arg2 = PG_GETARG_TEXT_P(1);
> int output = PbValue (VARDATA(arg2));
>
> Postgres.h file:
> #define VARDATA(PTR) VARDATA_4B(PTR)
> #define VARDATA_4B(PTR) (((varattrib_4b *) (PTR))->va_4byte.va_data)
>
>
> To resolve this, we have used memcpy for converting characters.
> memcpy(str, VARDATA(arg2), arg_size);
I bet the problem is in your C function, but there's not enough details
here to say where exactly. I don't understand what you mean string
conversion or special characters, for starters.
If provide a short self-contained 10-20 lines example that demonstrates
the problem, and send it as a reply to this list, someone might be able
to point out what the problem is.
--
Heikki Linnakangas
Neon (https://neon.tech)