diff options
Diffstat (limited to 'contrib/spi/autoinc.c')
-rw-r--r-- | contrib/spi/autoinc.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/contrib/spi/autoinc.c b/contrib/spi/autoinc.c index 804e1d63838..f8b86217e73 100644 --- a/contrib/spi/autoinc.c +++ b/contrib/spi/autoinc.c @@ -53,12 +53,13 @@ autoinc(PG_FUNCTION_ARGS) for (i = 0; i < nargs;) { - text *seqname; int attnum = SPI_fnumber(tupdesc, args[i]); int32 val; + Datum seqname; if (attnum < 0) - elog(ERROR, "autoinc (%s): there is no attribute %s", relname, args[i]); + elog(ERROR, "autoinc (%s): there is no attribute %s", + relname, args[i]); if (SPI_gettypeid(tupdesc, attnum) != INT4OID) elog(ERROR, "autoinc (%s): attribute %s must be of INT4 type", relname, args[i]); @@ -73,13 +74,12 @@ autoinc(PG_FUNCTION_ARGS) i++; chattrs[chnattrs] = attnum; - seqname = textin(args[i]); - newvals[chnattrs] = DirectFunctionCall1(nextval, - PointerGetDatum(seqname)); + seqname = DirectFunctionCall1(textin, + CStringGetDatum(args[i])); + newvals[chnattrs] = DirectFunctionCall1(nextval, seqname); if (DatumGetInt32(newvals[chnattrs]) == 0) - newvals[chnattrs] = DirectFunctionCall1(nextval, - PointerGetDatum(seqname)); - pfree(seqname); + newvals[chnattrs] = DirectFunctionCall1(nextval, seqname); + pfree(DatumGetTextP(seqname)); chnattrs++; i++; } |