diff options
Diffstat (limited to 'src/pl/plperl/spi_internal.c')
-rw-r--r-- | src/pl/plperl/spi_internal.c | 91 |
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; } - |