From 8f9cc41daf08be802933dc788517743719ee0949 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 11 Mar 2013 14:26:05 -0400 Subject: [PATCH] Avoid generating bad remote SQL for INSERT ... DEFAULT VALUES. "INSERT INTO foo() VALUES ()" is invalid syntax, so don't do that. --- contrib/postgres_fdw/deparse.c | 52 +++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/contrib/postgres_fdw/deparse.c b/contrib/postgres_fdw/deparse.c index d667c99760..f5d723cc38 100644 --- a/contrib/postgres_fdw/deparse.c +++ b/contrib/postgres_fdw/deparse.c @@ -505,38 +505,44 @@ deparseInsertSql(StringInfo buf, PlannerInfo *root, Index rtindex, appendStringInfoString(buf, "INSERT INTO "); deparseRelation(buf, rte->relid); - appendStringInfoString(buf, "("); - first = true; - foreach(lc, targetAttrs) + if (targetAttrs) { - int attnum = lfirst_int(lc); - Form_pg_attribute attr = tupdesc->attrs[attnum - 1]; + appendStringInfoString(buf, "("); - Assert(!attr->attisdropped); + first = true; + foreach(lc, targetAttrs) + { + int attnum = lfirst_int(lc); + Form_pg_attribute attr = tupdesc->attrs[attnum - 1]; - if (!first) - appendStringInfoString(buf, ", "); - first = false; + Assert(!attr->attisdropped); - deparseColumnRef(buf, rtindex, attnum, root); - } + if (!first) + appendStringInfoString(buf, ", "); + first = false; - appendStringInfoString(buf, ") VALUES ("); + deparseColumnRef(buf, rtindex, attnum, root); + } - pindex = 1; - first = true; - foreach(lc, targetAttrs) - { - if (!first) - appendStringInfoString(buf, ", "); - first = false; + appendStringInfoString(buf, ") VALUES ("); - appendStringInfo(buf, "$%d", pindex); - pindex++; - } + pindex = 1; + first = true; + foreach(lc, targetAttrs) + { + if (!first) + appendStringInfoString(buf, ", "); + first = false; + + appendStringInfo(buf, "$%d", pindex); + pindex++; + } - appendStringInfoString(buf, ")"); + appendStringInfoString(buf, ")"); + } + else + appendStringInfoString(buf, " DEFAULT VALUES"); if (returningList) deparseReturningList(buf, root, rtindex, rel, returningList); -- 2.40.0