Hi,

In <CACJufxG=njY32g=yaf4t6rvxysn56vfbyt4ffjltrbyqtkp...@mail.gmail.com>
  "Re: Make COPY format extendable: Extract COPY TO format implementations" on 
Sun, 6 Apr 2025 19:29:46 +0800,
  jian he <jian.universal...@gmail.com> wrote:

> I did a brief review of v39-0001 and v39-0002.
> 
> text:
> COPY_FILE
> COPY_FRONTEND
> still appear on comments in copyfrom_internal.h and copyto.c,
> Should it be removed?

Good catch!
I found them in copy{from,to}_internal.h but couldn't find
them in copyto.c. It's a typo, right?

We should update them instead of removing them. I'll update
them in the next patch set.


> +#include "commands/copyto_internal.h"
> #include "commands/progress.h"
> #include "executor/execdesc.h"
> #include "executor/executor.h"
> #include "executor/tuptable.h"
> 
> "copyto_internal.h" already include:
> 
> #include "executor/execdesc.h"
> #include "executor/tuptable.h"
> so you should removed
> "
> #include "executor/execdesc.h"
> #include "executor/tuptable.h"
> "
> in copyto.c.

You're right. I'll update this too in the next patch set.

> CREATE FUNCTION test_copy_format(internal)
>     RETURNS copy_handler
>     AS 'MODULE_PATHNAME', 'test_copy_format'
>     LANGUAGE C;
> src/backend/commands/copy.c: ProcessCopyOptions
>             if (strcmp(fmt, "text") == 0)
>                  /* default format */ ;
>             else if (strcmp(fmt, "csv") == 0)
>                 opts_out->csv_mode = true;
>             else if (strcmp(fmt, "binary") == 0)
>                 opts_out->binary = true;
>             else
>             {
>                 List       *qualified_format;
>                 ....
>             }
> what if our customized format name is one of "csv", "binary", "text",
> then that ELSE branch will never be reached.
> then our customized format is being shadowed?

Right. We should not use customized format handlers to keep
backward compatibility.

> https://www.postgresql.org/docs/current/error-message-reporting.html
> "The extra parentheses were required before PostgreSQL version 12, but
> are now optional."
> 
> means that
>     ereport(NOTICE, (errmsg("CopyFromInFunc: attribute: %s",
> format_type_be(atttypid))));
> can change to
>     ereport(NOTICE, errmsg("CopyFromInFunc: attribute: %s",
> format_type_be(atttypid)));
> 
> all
> ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), ....
> 
> can also be simplified to
> 
> ereport(ERROR, errcode(ERRCODE_INVALID_PARAMETER_VALUE), ....

Oh, I didn't notice it. Can we do it as a separated patch
because we have many codes that use this style in
copy*.c. The separated patch should update this style at
once.


Thanks,
-- 
kou


Reply via email to