Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Don't try to read default for a non-existent attribute
authorAndrew Dunstan <andrew@dunslane.net>
Wed, 15 Mar 2023 21:16:57 +0000 (17:16 -0400)
committerAndrew Dunstan <andrew@dunslane.net>
Wed, 15 Mar 2023 21:20:42 +0000 (17:20 -0400)
Oversight in commit 9f8377f7a2 for COPY .. DEFAULT

per report from Alexander Lakhin

src/backend/commands/copyfromparse.c

index c346486cd31e18ddf8eda8e7660bf035ad8c8ce2..3853902a16ebc3c6aecfb6311bf38239142c040c 100644 (file)
@@ -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)
        {