Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dunstan2023-03-15 21:16:57 +0000
committerAndrew Dunstan2023-03-15 21:20:42 +0000
commitb85e91023bf3fd5b4dbd35dc3eddbf0dc291c8ad (patch)
tree9346f968ba334a4dc7bfa176d42f86c944d1abf1 /src/backend/commands/copyfromparse.c
parent483bdb2afec9e33ff05fd48a00e2656e30e714b7 (diff)
Don't try to read default for a non-existent attribute
Oversight in commit 9f8377f7a2 for COPY .. DEFAULT per report from Alexander Lakhin
Diffstat (limited to 'src/backend/commands/copyfromparse.c')
-rw-r--r--src/backend/commands/copyfromparse.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/backend/commands/copyfromparse.c b/src/backend/commands/copyfromparse.c
index c346486cd31..3853902a16e 100644
--- a/src/backend/commands/copyfromparse.c
+++ b/src/backend/commands/copyfromparse.c
@@ -1683,7 +1683,8 @@ CopyReadAttributesText(CopyFromState cstate)
strncmp(start_ptr, cstate->opts.null_print, input_len) == 0)
cstate->raw_fields[fieldno] = NULL;
/* Check whether raw input matched default marker */
- else if (cstate->opts.default_print &&
+ else if (fieldno < list_length(cstate->attnumlist) &&
+ cstate->opts.default_print &&
input_len == cstate->opts.default_print_len &&
strncmp(start_ptr, cstate->opts.default_print, input_len) == 0)
{
@@ -1897,7 +1898,8 @@ endfield:
strncmp(start_ptr, cstate->opts.null_print, input_len) == 0)
cstate->raw_fields[fieldno] = NULL;
/* Check whether raw input matched default marker */
- else if (cstate->opts.default_print &&
+ else if (fieldno < list_length(cstate->attnumlist) &&
+ cstate->opts.default_print &&
input_len == cstate->opts.default_print_len &&
strncmp(start_ptr, cstate->opts.default_print, input_len) == 0)
{