From 9caafda579f699b43fa4c89bf13a2331ef00611e Mon Sep 17 00:00:00 2001 From: Joe Conway Date: Wed, 2 Aug 2006 01:59:48 +0000 Subject: 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. --- src/backend/nodes/copyfuncs.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'src/backend/nodes/copyfuncs.c') diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index f2b2afd81af..8903d6b42dd 100644 --- a/src/backend/nodes/copyfuncs.c +++ b/src/backend/nodes/copyfuncs.c @@ -15,7 +15,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/copyfuncs.c,v 1.344 2006/07/27 19:52:05 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/copyfuncs.c,v 1.345 2006/08/02 01:59:45 joe Exp $ * *------------------------------------------------------------------------- */ @@ -366,6 +366,22 @@ _copyFunctionScan(FunctionScan *from) return newnode; } +/* + * _copyValuesScan + */ +static ValuesScan * +_copyValuesScan(ValuesScan *from) +{ + ValuesScan *newnode = makeNode(ValuesScan); + + /* + * copy node superclass fields + */ + CopyScanFields((Scan *) from, (Scan *) newnode); + + return newnode; +} + /* * CopyJoinFields * @@ -1356,6 +1372,7 @@ _copyRangeTblEntry(RangeTblEntry *from) COPY_NODE_FIELD(funcexpr); COPY_NODE_FIELD(funccoltypes); COPY_NODE_FIELD(funccoltypmods); + COPY_NODE_FIELD(values_lists); COPY_SCALAR_FIELD(jointype); COPY_NODE_FIELD(joinaliasvars); COPY_NODE_FIELD(alias); @@ -1707,7 +1724,6 @@ _copyInsertStmt(InsertStmt *from) COPY_NODE_FIELD(relation); COPY_NODE_FIELD(cols); - COPY_NODE_FIELD(targetList); COPY_NODE_FIELD(selectStmt); return newnode; @@ -1754,6 +1770,7 @@ _copySelectStmt(SelectStmt *from) COPY_NODE_FIELD(whereClause); COPY_NODE_FIELD(groupClause); COPY_NODE_FIELD(havingClause); + COPY_NODE_FIELD(valuesLists); COPY_NODE_FIELD(sortClause); COPY_NODE_FIELD(limitOffset); COPY_NODE_FIELD(limitCount); @@ -2812,6 +2829,9 @@ copyObject(void *from) case T_FunctionScan: retval = _copyFunctionScan(from); break; + case T_ValuesScan: + retval = _copyValuesScan(from); + break; case T_Join: retval = _copyJoin(from); break; -- cgit v1.2.3