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