Fix ruleutils to print "INSERT INTO foo DEFAULT VALUES" correctly.
Per bug #7615 from Marko Tiikkaja. Apparently nobody ever tried this case before ...
This commit is contained in:
parent
8658c09ff6
commit
16eb7c706f
|
@ -2297,8 +2297,8 @@ get_insert_query_def(Query *query, deparse_context *context)
|
|||
List *strippedexprs;
|
||||
|
||||
/*
|
||||
* If it's an INSERT ... SELECT or VALUES (...), (...), ... there will be
|
||||
* a single RTE for the SELECT or VALUES.
|
||||
* If it's an INSERT ... SELECT or multi-row VALUES, there will be a
|
||||
* single RTE for the SELECT or VALUES. Plain VALUES has neither.
|
||||
*/
|
||||
foreach(l, query->rtable)
|
||||
{
|
||||
|
@ -2332,7 +2332,7 @@ get_insert_query_def(Query *query, deparse_context *context)
|
|||
context->indentLevel += PRETTYINDENT_STD;
|
||||
appendStringInfoChar(buf, ' ');
|
||||
}
|
||||
appendStringInfo(buf, "INSERT INTO %s (",
|
||||
appendStringInfo(buf, "INSERT INTO %s ",
|
||||
generate_relation_name(rte->relid));
|
||||
|
||||
/*
|
||||
|
@ -2349,6 +2349,8 @@ get_insert_query_def(Query *query, deparse_context *context)
|
|||
values_cell = NULL;
|
||||
strippedexprs = NIL;
|
||||
sep = "";
|
||||
if (query->targetList)
|
||||
appendStringInfoChar(buf, '(');
|
||||
foreach(l, query->targetList)
|
||||
{
|
||||
TargetEntry *tle = (TargetEntry *) lfirst(l);
|
||||
|
@ -2385,7 +2387,8 @@ get_insert_query_def(Query *query, deparse_context *context)
|
|||
context, true));
|
||||
}
|
||||
}
|
||||
appendStringInfo(buf, ") ");
|
||||
if (query->targetList)
|
||||
appendStringInfo(buf, ") ");
|
||||
|
||||
if (select_rte)
|
||||
{
|
||||
|
@ -2398,7 +2401,7 @@ get_insert_query_def(Query *query, deparse_context *context)
|
|||
/* Add the multi-VALUES expression lists */
|
||||
get_values_def(values_rte->values_lists, context);
|
||||
}
|
||||
else
|
||||
else if (strippedexprs)
|
||||
{
|
||||
/* Add the single-VALUES expression list */
|
||||
appendContextKeyword(context, "VALUES (",
|
||||
|
@ -2406,6 +2409,11 @@ get_insert_query_def(Query *query, deparse_context *context)
|
|||
get_rule_expr((Node *) strippedexprs, context, false);
|
||||
appendStringInfoChar(buf, ')');
|
||||
}
|
||||
else
|
||||
{
|
||||
/* No expressions, so it must be DEFAULT VALUES */
|
||||
appendStringInfo(buf, "DEFAULT VALUES");
|
||||
}
|
||||
|
||||
/* Add RETURNING if present */
|
||||
if (query->returningList)
|
||||
|
|
Loading…
Reference in New Issue