aboutsummaryrefslogtreecommitdiff
path: root/contrib/spi/autoinc.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/spi/autoinc.c')
-rw-r--r--contrib/spi/autoinc.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/contrib/spi/autoinc.c b/contrib/spi/autoinc.c
index 33cce457236..804e1d63838 100644
--- a/contrib/spi/autoinc.c
+++ b/contrib/spi/autoinc.c
@@ -1,9 +1,9 @@
#include "executor/spi.h" /* this is what you need to work with SPI */
#include "commands/trigger.h" /* -"- and triggers */
+#include "commands/sequence.h" /* for nextval() */
extern Datum autoinc(PG_FUNCTION_ARGS);
-extern int4 nextval(struct varlena * seqin);
Datum
autoinc(PG_FUNCTION_ARGS)
@@ -53,7 +53,7 @@ autoinc(PG_FUNCTION_ARGS)
for (i = 0; i < nargs;)
{
- struct varlena *seqname;
+ text *seqname;
int attnum = SPI_fnumber(tupdesc, args[i]);
int32 val;
@@ -74,9 +74,11 @@ autoinc(PG_FUNCTION_ARGS)
i++;
chattrs[chnattrs] = attnum;
seqname = textin(args[i]);
- newvals[chnattrs] = Int32GetDatum(nextval(seqname));
+ newvals[chnattrs] = DirectFunctionCall1(nextval,
+ PointerGetDatum(seqname));
if (DatumGetInt32(newvals[chnattrs]) == 0)
- newvals[chnattrs] = Int32GetDatum(nextval(seqname));
+ newvals[chnattrs] = DirectFunctionCall1(nextval,
+ PointerGetDatum(seqname));
pfree(seqname);
chnattrs++;
i++;