The following bug has been logged online: Bug reference: 2574 Logged by: Michael Enke Email address: [EMAIL PROTECTED] PostgreSQL version: 8.1.4 Operating system: Open Suse 10.1 and CentOS 4.3 Description: C function: arg TEXT data corrupt Details:
I created a C function: extern Datum test_arg(PG_FUNCTION_ARGS); PG_FUNCTION_INFO_V1(test_arg); Datum test_arg(PG_FUNCTION_ARGS) { elog(INFO, "arg: %s", VARDATA(PG_GETARG_TEXT_P(0))); PG_RETURN_INT16(0); } and used the CREATE FUNCTION test_arg(TEXT) RETURNS INT4 AS 'path_to_lib.so' LANGUAGE 'C'; If I call this function "the first time" after connecting with psql, the info output shows corrupted data, the second and further call is ok: [EMAIL PROTECTED]:~/uwx9/SVN/tpl/trunk/db/postgresql/src> psql -U tplinux Welcome to psql 8.1.3, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit tplinux=> select test_arg('1'); INFO: arg: [EMAIL PROTECTED] test_arg ---------- 0 (1 row) tplinux=> select test_arg('1'); INFO: arg: 1 test_arg ---------- 0 (1 row) The same problem is with input length of 2, 3, 4, 8 char (and may be more). With input of 4 char I never get correct value. No problem for first call with 5, 6 , 7 char, but with 5 char problem if before called with 6 char. ---------------------------(end of broadcast)--------------------------- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq