mirror of
https://github.com/postgres/postgres.git
synced 2025-06-29 10:41:53 +03:00
Add support for multi-row VALUES clauses as part of INSERT statements
(e.g. "INSERT ... VALUES (...), (...), ...") and elsewhere as allowed by the spec. (e.g. similar to a FROM clause subselect). initdb required. Joe Conway and Tom Lane.
This commit is contained in:
@ -9,7 +9,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/optimizer/plan/setrefs.c,v 1.122 2006/07/14 14:52:21 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/optimizer/plan/setrefs.c,v 1.123 2006/08/02 01:59:46 joe Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -186,6 +186,18 @@ set_plan_references(Plan *plan, List *rtable)
|
||||
fix_expr_references(plan, rte->funcexpr);
|
||||
}
|
||||
break;
|
||||
case T_ValuesScan:
|
||||
{
|
||||
RangeTblEntry *rte;
|
||||
|
||||
fix_expr_references(plan, (Node *) plan->targetlist);
|
||||
fix_expr_references(plan, (Node *) plan->qual);
|
||||
rte = rt_fetch(((ValuesScan *) plan)->scan.scanrelid,
|
||||
rtable);
|
||||
Assert(rte->rtekind == RTE_VALUES);
|
||||
fix_expr_references(plan, (Node *) rte->values_lists);
|
||||
}
|
||||
break;
|
||||
case T_NestLoop:
|
||||
set_join_references((Join *) plan, rtable);
|
||||
fix_expr_references(plan, (Node *) plan->targetlist);
|
||||
@ -522,6 +534,12 @@ adjust_plan_varnos(Plan *plan, int rtoffset)
|
||||
adjust_expr_varnos((Node *) plan->qual, rtoffset);
|
||||
/* rte was already fixed by set_subqueryscan_references */
|
||||
break;
|
||||
case T_ValuesScan:
|
||||
((ValuesScan *) plan)->scan.scanrelid += rtoffset;
|
||||
adjust_expr_varnos((Node *) plan->targetlist, rtoffset);
|
||||
adjust_expr_varnos((Node *) plan->qual, rtoffset);
|
||||
/* rte was already fixed by set_subqueryscan_references */
|
||||
break;
|
||||
case T_NestLoop:
|
||||
adjust_expr_varnos((Node *) plan->targetlist, rtoffset);
|
||||
adjust_expr_varnos((Node *) plan->qual, rtoffset);
|
||||
|
Reference in New Issue
Block a user