From: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> |
---|---|
To: | Thomas Hallgren <thhal(at)mailblocks(dot)com> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Request for additional SPI functions. |
Date: | 2004-02-11 22:00:05 |
Message-ID: | 200402112200.i1BM05c19936@candle.pha.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
This seems like a reasonable request. Care to submit a patch?
---------------------------------------------------------------------------
Thomas Hallgren wrote:
> 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
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
>
--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
From | Date | Subject | |
---|---|---|---|
Next Message | scott.marlowe | 2004-02-11 22:16:24 | Re: How can I have 2 completely seperated databases in |
Previous Message | Bruce Momjian | 2004-02-11 21:58:50 | Re: libpq thread safety |