On Sun, Dec 7, 2025 at 6:32 AM Sugamoto Shinya <[email protected]> wrote:
>
>
>
> On Thu, Dec 4, 2025 at 4:35 PM Kirill Reshke <[email protected]> wrote:
>>
>> On Thu, 4 Dec 2025 at 03:56, Masahiko Sawada <[email protected]> wrote:
>>
>> > The proposed patch requires us to create one function per option. I'm
>> > concerned that it could cause bloating functions and be overkill just
>> > to save changing a separate list. I would suggest starting with
>> > putting a validation check for options at the top of foreach() loop.
>> > When adding a new COPY option in the future, it wouldn't work if we
>> > miss either changing the valid-options list or handling the option,
>> > which seems a good prevention.
>> >
>>
>> Yep, Im +1 on that.  "bloating functions" - that's precise wording, I
>> did not know how to explain the same concern.
>>
>>
>> --
>> Best regards,
>> Kirill Reshke
>
>
>
>
>
> Thanks everyone for reviewing my proposal.
>
>
> > The proposed patch requires us to create one function per option. I'm
> > concerned that it could cause bloating functions and be overkill just
> > to save changing a separate list. I would suggest starting with
> > putting a validation check for options at the top of foreach() loop.
> > When adding a new COPY option in the future, it wouldn't work if we
> > miss either changing the valid-options list or handling the option,
> > which seems a good prevention.
>
>
> I completely agree with your feedback. I will proceed with a smaller and
> simpler revision of the changes. The v3 patch was beneficial in that it
> removed duplicated option names for COPY options in the code, but it
> introduced too much refactoring for such a small improvement.
>
> Attached is the new patch. One possible discussion point is that I choose 
> FATAL
> over ERROR at src/backend/commands/copy.c#L816, since reaching that point 
> would
> indicate an implementation problem. Please let me know if there is a better 
> option.

We typically use elog(ERROR) for should-not-happen errors instead of
ereport(ERROR), but I don't think we need the last 'else if' branch
since we have validate_copy_option.

The patch mostly looks good to me. Here are some minor comments:

+#include "utils/elog.h"

I think we don't need to #include elog.h.

---
src/backend/commands/copy.c:819: trailing whitespace.
+

There is unnecessary whitespace.

---
+static const CopyOptionDef valid_copy_options[] = {
+   {"default", true},
+   {"delimiter", true},
+   {"encoding", true},
+   {"escape", true},
+   {"force_not_null", true},
+   {"force_null", true},
+   {"force_quote", true},
+   {"format", true},
+   {"freeze", true},
+   {"header", true},
+   {"log_verbosity", true},
+   {"null", true},
+   {"on_error", true},
+   {"quote", true},
+   {"reject_limit", true},
+   {"convert_selectively", false}, /* internal, undocumented */
+   {NULL, false}
+};

I think we can maintain this list in option name order (not sorted by
suggest_in_hints).

Regards,

--
Masahiko Sawada
Amazon Web Services: https://aws.amazon.com


Reply via email to