aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2004-11-21 22:13:37 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2004-11-21 22:13:37 +0000
commit32c97fd58ffdd5c7b62e9bc80d6311b608823218 (patch)
treec959cb0ead77a80a4e6a005767b059aa2cca2038
parent35f49941337827c6361af1939b582368022733e2 (diff)
downloadpostgresql-32c97fd58ffdd5c7b62e9bc80d6311b608823218.tar.gz
postgresql-32c97fd58ffdd5c7b62e9bc80d6311b608823218.zip
Suppress remaining compile warnings, and add a comment about why
it's not really broken. Andrew Dunstan
-rw-r--r--src/pl/plperl/SPI.xs4
-rw-r--r--src/pl/plperl/plperl.c22
2 files changed, 23 insertions, 3 deletions
diff --git a/src/pl/plperl/SPI.xs b/src/pl/plperl/SPI.xs
index 1a23c0ca25b..7e71e77adef 100644
--- a/src/pl/plperl/SPI.xs
+++ b/src/pl/plperl/SPI.xs
@@ -94,3 +94,7 @@ spi_spi_exec_query(query, ...)
RETVAL = newRV_noinc((SV*) ret_hash);
OUTPUT:
RETVAL
+
+
+BOOT:
+ items = 0; /* avoid 'unused variable' warning */
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index 36665cff271..b2f4bf74a46 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -33,7 +33,7 @@
* ENHANCEMENTS, OR MODIFICATIONS.
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.60 2004/11/21 21:17:03 tgl Exp $
+ * $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.61 2004/11/21 22:13:37 tgl Exp $
*
**********************************************************************/
@@ -963,9 +963,25 @@ plperl_func_handler(PG_FUNCTION_ARGS)
if (prodesc->fn_retistuple && fcinfo->resultinfo) /* set of tuples */
{
+ /*
+ * This branch will be taken when the function call
+ * appears in a context that can return a set of tuples,
+ * even if it only actually returns a single tuple
+ * (e.g. select a from foo() where foo returns a singleton
+ * of some composite type with member a). In this case, the
+ * return value will be a hashref. If a rowset is returned
+ * it will be an arrayref whose members will be hashrefs.
+ *
+ * Care is taken in the code only to refer to the appropriate
+ * one of ret_hv and ret_av, only one of which is therefore
+ * valid for any given call.
+ *
+ * XXX This code is in dire need of cleanup.
+ */
+
/* SRF support */
- HV *ret_hv;
- AV *ret_av;
+ HV *ret_hv = NULL;
+ AV *ret_av = NULL;
FuncCallContext *funcctx;
int call_cntr;
int max_calls;