diff options
Diffstat (limited to 'src/backend/commands')
-rw-r--r-- | src/backend/commands/copy.c | 6 | ||||
-rw-r--r-- | src/backend/commands/trigger.c | 6 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index e91cc7e02c5..c7537687640 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -148,6 +148,7 @@ typedef struct CopyStateData Oid *typioparams; /* array of element types for in_functions */ int *defmap; /* array of default att numbers */ ExprState **defexprs; /* array of default att expressions */ + List *range_table; /* * These variables are used to reduce overhead in textual COPY FROM. @@ -737,6 +738,7 @@ DoCopy(const CopyStmt *stmt, const char *queryString) bool pipe = (stmt->filename == NULL); Relation rel; uint64 processed; + RangeTblEntry *rte; /* Disallow file COPY except to superusers. */ if (!pipe && !superuser()) @@ -750,7 +752,6 @@ DoCopy(const CopyStmt *stmt, const char *queryString) { TupleDesc tupDesc; AclMode required_access = (is_from ? ACL_INSERT : ACL_SELECT); - RangeTblEntry *rte; List *attnums; ListCell *cur; @@ -795,6 +796,7 @@ DoCopy(const CopyStmt *stmt, const char *queryString) cstate = BeginCopyFrom(rel, stmt->filename, stmt->attlist, stmt->options); + cstate->range_table = list_make1(rte); processed = CopyFrom(cstate); /* copy from file to database */ EndCopyFrom(cstate); } @@ -802,6 +804,7 @@ DoCopy(const CopyStmt *stmt, const char *queryString) { cstate = BeginCopyTo(rel, stmt->query, queryString, stmt->filename, stmt->attlist, stmt->options); + cstate->range_table = list_make1(rte); processed = DoCopyTo(cstate); /* copy from database to file */ EndCopyTo(cstate); } @@ -1933,6 +1936,7 @@ CopyFrom(CopyState cstate) estate->es_result_relations = resultRelInfo; estate->es_num_result_relations = 1; estate->es_result_relation_info = resultRelInfo; + estate->es_range_table = cstate->range_table; /* Set up a tuple slot too */ myslot = ExecInitExtraTupleSlot(estate); diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index bd5dee4286a..bbb83911a9a 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -60,6 +60,12 @@ int SessionReplicationRole = SESSION_REPLICATION_ROLE_ORIGIN; +/* + * Note that this macro also exists in executor/execMain.c. There does not + * appear to be any good header to put it into, given the structures that + * it uses, so we let them be duplicated. Be sure to update both if one needs + * to be changed, however. + */ #define GetModifiedColumns(relinfo, estate) \ (rt_fetch((relinfo)->ri_RangeTableIndex, (estate)->es_range_table)->modifiedCols) |