diff options
Diffstat (limited to 'src/backend/commands/copy.c')
-rw-r--r-- | src/backend/commands/copy.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index c245c019262..adabc929b2e 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -151,6 +151,7 @@ typedef struct CopyStateData int *defmap; /* array of default att numbers */ ExprState **defexprs; /* array of default att expressions */ bool volatile_defexprs; /* is any of defexprs volatile? */ + List *range_table; /* * These variables are used to reduce overhead in textual COPY FROM. @@ -747,6 +748,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()) @@ -760,7 +762,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; @@ -807,6 +808,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); } @@ -814,6 +816,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); } @@ -1957,6 +1960,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); |