mirror of
https://github.com/postgres/postgres.git
synced 2025-06-30 21:42:05 +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:
@ -12,7 +12,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/executor/execProcnode.c,v 1.57 2006/07/14 14:52:18 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/executor/execProcnode.c,v 1.58 2006/08/02 01:59:45 joe Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -102,6 +102,7 @@
|
||||
#include "executor/nodeSubqueryscan.h"
|
||||
#include "executor/nodeTidscan.h"
|
||||
#include "executor/nodeUnique.h"
|
||||
#include "executor/nodeValuesscan.h"
|
||||
#include "miscadmin.h"
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
@ -194,6 +195,11 @@ ExecInitNode(Plan *node, EState *estate, int eflags)
|
||||
estate, eflags);
|
||||
break;
|
||||
|
||||
case T_ValuesScan:
|
||||
result = (PlanState *) ExecInitValuesScan((ValuesScan *) node,
|
||||
estate, eflags);
|
||||
break;
|
||||
|
||||
/*
|
||||
* join nodes
|
||||
*/
|
||||
@ -365,6 +371,10 @@ ExecProcNode(PlanState *node)
|
||||
result = ExecFunctionScan((FunctionScanState *) node);
|
||||
break;
|
||||
|
||||
case T_ValuesScanState:
|
||||
result = ExecValuesScan((ValuesScanState *) node);
|
||||
break;
|
||||
|
||||
/*
|
||||
* join nodes
|
||||
*/
|
||||
@ -536,6 +546,9 @@ ExecCountSlotsNode(Plan *node)
|
||||
case T_FunctionScan:
|
||||
return ExecCountSlotsFunctionScan((FunctionScan *) node);
|
||||
|
||||
case T_ValuesScan:
|
||||
return ExecCountSlotsValuesScan((ValuesScan *) node);
|
||||
|
||||
/*
|
||||
* join nodes
|
||||
*/
|
||||
@ -669,6 +682,10 @@ ExecEndNode(PlanState *node)
|
||||
ExecEndFunctionScan((FunctionScanState *) node);
|
||||
break;
|
||||
|
||||
case T_ValuesScanState:
|
||||
ExecEndValuesScan((ValuesScanState *) node);
|
||||
break;
|
||||
|
||||
/*
|
||||
* join nodes
|
||||
*/
|
||||
|
Reference in New Issue
Block a user