+ // Allocate array for the argument pointers
+ nitems = nargs - 1; // don't take the debug parameter as a row name;
+ items = (char **) malloc(sizeof(char*) * nitems);
+ if (items == NULL)
+ {
+ SPI_finish();
+ return PointerGetDatum(NULL);
+ }
+
+ // Collect arguments
+ for (i = 1; (i < nargs); i++)
+ {
+ items[i-1] = SPI_getvalue(rettuple, tupdesc, SPI_fnumber(tupdesc, args[i]));
+ if (debug_on)
+ {
+ elog(DEBUG, "dupecheck: Argument %d: row %s -> %s\n", i, args[i], items[i-1]);
+ }
+ }
+
+
+ // Find out length of row string to be constructed
+ for (i=0; (i < nitems); i++)