From: | "Thomas Hallgren" <thhal(at)mailblocks(dot)com> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Request for additional SPI functions. |
Date: | 2004-01-12 14:59:39 |
Message-ID: | btucog$bjl$1@news.hub.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Short story:
I need two new functions in the Server Programming Interface (SPI) when
mapping an ExecutionPlan to a Java prepared statement (pljava project).
Long story:
My problem is that once a plan is prepared and I want to execute it, I send
an array of java objects for the arguments. The SPI_cursor_open/SPI_execp of
course expects the arguments to be Datum's and the mapper must convert java
objects. Knowing the Oid of each type, this is not a problem. Those are
hidden in the opaque execution plan (a void*). I'm all in favor of data
hiding and reluctant to use spi_priv.h so I propose that you add the
following two functions:
/*
* Returns the number of arguments for the prepared plan.
*/
int SPI_getargcount(void* plan)
{
if (plan == NULL)
{
SPI_result = SPI_ERROR_ARGUMENT;
return -1;
}
return ((_SPI_plan*)plan)->nargs;
}
/*
* Returns the Oid representing the type id for argument at argIndex. First
* parameter is at index zero.
*/
Oid SPI_getargtypeid(void* plan, int argIndex)
{
if (plan == NULL || argIndex < 0 || argIndex >=
((_SPI_plan*)plan)->nargs)
{
SPI_result = SPI_ERROR_ARGUMENT;
return InvalidOid;
}
return ((_SPI_plan*)plan)->argtypes[argIndex];
}
Regards,
Thomas Hallgren
From | Date | Subject | |
---|---|---|---|
Next Message | Sai Hertz And Control Systems | 2004-01-12 16:36:14 | Re: [HACKERS] IEEE 754 |
Previous Message | Tom Lane | 2004-01-12 14:42:15 | Re: LWLock/ShmemIndex startup question |