Search Postgresql Archives

Help with Array Function in C language...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello, I'm doing a very simple C language function in PostgreSQL but I can't
figure out why this is not working, the documentation about the PostgreSQL
internals is not so good about arrays and I couldn't find a suitable example
of the use of some kind of array functions inside the pgsql source tree.

I'm trying to get the N item from any array passed as argument, this could
be the SQL declaration of my function:

CREATE OR REPLACE FUNCTION test_array(integer, anyarray) RETURNS anyelement
AS 'test.so' LANGUAGE 'C';

And the function could look like this:

PG_FUNCTION_INFO_V1(test_array);
Datum
test_array(PG_FUNCTION_ARGS)
{
	ArrayType *v = PG_GETARG_ARRAYTYPE_P(1);
	Datum      element;
	Oid        array_type = get_array_type(v);
	int        typlen;
	bool       typbyval;
	char       typalign;
	
	get_typlenbyvalalign(array_type, &typlen, &typbyval, &typalign);
	element = array_ref(v, 1, PG_GETARG_INT32(0), ARR_SIZE(v), typlen,
typbyval, typalign, false);
	
	PG_RETURN_DATUM(element);
}

The function compiles without error, but when I try something like that:
SELECT test_array(3, array[1,2,3,4,5,6]);

It returns to me an error like this:
ERROR:  cache lookup failed for type 0

What is wrong here?


---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

               http://archives.postgresql.org

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux