mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-01 14:01:23 +02:00
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
da85727565
commit
0d6895051a
@ -3690,8 +3690,8 @@ get_insert_query_def(Query *query, deparse_context *context)
|
|||||||
get_with_clause(query, context);
|
get_with_clause(query, context);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If it's an INSERT ... SELECT or VALUES (...), (...), ... there will be
|
* If it's an INSERT ... SELECT or multi-row VALUES, there will be a
|
||||||
* a single RTE for the SELECT or VALUES.
|
* single RTE for the SELECT or VALUES. Plain VALUES has neither.
|
||||||
*/
|
*/
|
||||||
foreach(l, query->rtable)
|
foreach(l, query->rtable)
|
||||||
{
|
{
|
||||||
@ -3725,7 +3725,7 @@ get_insert_query_def(Query *query, deparse_context *context)
|
|||||||
context->indentLevel += PRETTYINDENT_STD;
|
context->indentLevel += PRETTYINDENT_STD;
|
||||||
appendStringInfoChar(buf, ' ');
|
appendStringInfoChar(buf, ' ');
|
||||||
}
|
}
|
||||||
appendStringInfo(buf, "INSERT INTO %s (",
|
appendStringInfo(buf, "INSERT INTO %s ",
|
||||||
generate_relation_name(rte->relid, NIL));
|
generate_relation_name(rte->relid, NIL));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3742,6 +3742,8 @@ get_insert_query_def(Query *query, deparse_context *context)
|
|||||||
values_cell = NULL;
|
values_cell = NULL;
|
||||||
strippedexprs = NIL;
|
strippedexprs = NIL;
|
||||||
sep = "";
|
sep = "";
|
||||||
|
if (query->targetList)
|
||||||
|
appendStringInfoChar(buf, '(');
|
||||||
foreach(l, query->targetList)
|
foreach(l, query->targetList)
|
||||||
{
|
{
|
||||||
TargetEntry *tle = (TargetEntry *) lfirst(l);
|
TargetEntry *tle = (TargetEntry *) lfirst(l);
|
||||||
@ -3778,7 +3780,8 @@ get_insert_query_def(Query *query, deparse_context *context)
|
|||||||
context, true));
|
context, true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
appendStringInfo(buf, ") ");
|
if (query->targetList)
|
||||||
|
appendStringInfo(buf, ") ");
|
||||||
|
|
||||||
if (select_rte)
|
if (select_rte)
|
||||||
{
|
{
|
||||||
@ -3791,7 +3794,7 @@ get_insert_query_def(Query *query, deparse_context *context)
|
|||||||
/* Add the multi-VALUES expression lists */
|
/* Add the multi-VALUES expression lists */
|
||||||
get_values_def(values_rte->values_lists, context);
|
get_values_def(values_rte->values_lists, context);
|
||||||
}
|
}
|
||||||
else
|
else if (strippedexprs)
|
||||||
{
|
{
|
||||||
/* Add the single-VALUES expression list */
|
/* Add the single-VALUES expression list */
|
||||||
appendContextKeyword(context, "VALUES (",
|
appendContextKeyword(context, "VALUES (",
|
||||||
@ -3799,6 +3802,11 @@ get_insert_query_def(Query *query, deparse_context *context)
|
|||||||
get_rule_expr((Node *) strippedexprs, context, false);
|
get_rule_expr((Node *) strippedexprs, context, false);
|
||||||
appendStringInfoChar(buf, ')');
|
appendStringInfoChar(buf, ')');
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* No expressions, so it must be DEFAULT VALUES */
|
||||||
|
appendStringInfo(buf, "DEFAULT VALUES");
|
||||||
|
}
|
||||||
|
|
||||||
/* Add RETURNING if present */
|
/* Add RETURNING if present */
|
||||||
if (query->returningList)
|
if (query->returningList)
|
||||||
|
Loading…
Reference in New Issue
Block a user