aboutsummaryrefslogtreecommitdiff
path: root/src/pl/plperl/spi_internal.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pl/plperl/spi_internal.c')
-rw-r--r--src/pl/plperl/spi_internal.c91
1 files changed, 16 insertions, 75 deletions
diff --git a/src/pl/plperl/spi_internal.c b/src/pl/plperl/spi_internal.c
index 57d95a10f1c..8d17af5b542 100644
--- a/src/pl/plperl/spi_internal.c
+++ b/src/pl/plperl/spi_internal.c
@@ -9,10 +9,9 @@
#include "spi_internal.h"
-static char* plperl_spi_status_string(int);
-
static HV* plperl_spi_execute_fetch_result(SPITupleTable*, int, int );
+
int
spi_DEBUG(void)
{
@@ -93,93 +92,35 @@ plperl_hash_from_tuple(HeapTuple tuple, TupleDesc tupdesc)
static HV*
plperl_spi_execute_fetch_result(SPITupleTable *tuptable, int processed, int status)
{
-
HV *result;
- AV *rows;
- int i;
result = newHV();
- rows = newAV();
- if (status == SPI_OK_UTILITY)
- {
- hv_store(result, "status", strlen("status"), newSVpv("SPI_OK_UTILITY",0), 0);
- hv_store(result, "processed", strlen("processed"), newSViv(processed), 0);
- }
- else if (status != SPI_OK_SELECT)
- {
- hv_store(result, "status", strlen("status"), newSVpv((char*)plperl_spi_status_string(status),0), 0);
- hv_store(result, "processed", strlen("processed"), newSViv(processed), 0);
- }
- else
+ hv_store(result, "status", strlen("status"),
+ newSVpv((char*)SPI_result_code_string(status),0), 0);
+ hv_store(result, "processed", strlen("processed"),
+ newSViv(processed), 0);
+
+ if (status == SPI_OK_SELECT)
{
- hv_store(result, "status", strlen("status"), newSVpv((char*)plperl_spi_status_string(status),0), 0);
- hv_store(result, "processed", strlen("processed"), newSViv(processed), 0);
if (processed)
{
+ AV *rows;
HV *row;
+ int i;
+
+ rows = newAV();
for (i = 0; i < processed; i++)
{
row = plperl_hash_from_tuple(tuptable->vals[i], tuptable->tupdesc);
- av_store(rows, i, newRV_noinc((SV*)row));
+ av_store(rows, i, newRV_noinc((SV*)row));
}
- hv_store(result, "rows", strlen("rows"), newRV_noinc((SV*)rows), 0);
- SPI_freetuptable(tuptable);
+ hv_store(result, "rows", strlen("rows"),
+ newRV_noinc((SV*)rows), 0);
}
}
- return result;
-}
-static char*
-plperl_spi_status_string(int status)
-{
- switch(status){
- /*errors*/
- case SPI_ERROR_TYPUNKNOWN:
- return "SPI_ERROR_TYPUNKNOWN";
- case SPI_ERROR_NOOUTFUNC:
- return "SPI_ERROR_NOOUTFUNC";
- case SPI_ERROR_NOATTRIBUTE:
- return "SPI_ERROR_NOATTRIBUTE";
- case SPI_ERROR_TRANSACTION:
- return "SPI_ERROR_TRANSACTION";
- case SPI_ERROR_PARAM:
- return "SPI_ERROR_PARAM";
- case SPI_ERROR_ARGUMENT:
- return "SPI_ERROR_ARGUMENT";
- case SPI_ERROR_CURSOR:
- return "SPI_ERROR_CURSOR";
- case SPI_ERROR_UNCONNECTED:
- return "SPI_ERROR_UNCONNECTED";
- case SPI_ERROR_OPUNKNOWN:
- return "SPI_ERROR_OPUNKNOWN";
- case SPI_ERROR_COPY:
- return "SPI_ERROR_COPY";
- case SPI_ERROR_CONNECT:
- return "SPI_ERROR_CONNECT";
- /*ok*/
- case SPI_OK_CONNECT:
- return "SPI_OK_CONNECT";
- case SPI_OK_FINISH:
- return "SPI_OK_FINISH";
- case SPI_OK_FETCH:
- return "SPI_OK_FETCH";
- case SPI_OK_UTILITY:
- return "SPI_OK_UTILITY";
- case SPI_OK_SELECT:
- return "SPI_OK_SELECT";
- case SPI_OK_SELINTO:
- return "SPI_OK_SELINTO";
- case SPI_OK_INSERT:
- return "SPI_OK_INSERT";
- case SPI_OK_DELETE:
- return "SPI_OK_DELETE";
- case SPI_OK_UPDATE:
- return "SPI_OK_UPDATE";
- case SPI_OK_CURSOR:
- return "SPI_OK_CURSOR";
- }
+ SPI_freetuptable(tuptable);
- return "Unknown or Invalid code";
+ return result;
}
-