On Friday, March 28, 2025, Masahiko Sawada <sawada.m...@gmail.com> wrote:
>
>
> One problem in the following chunk I can see is:
>
> +           qualified_format = stringToQualifiedNameList(format, NULL);
> +           DeconstructQualifiedName(qualified_format, &schema, &fmt);
> +           if (!schema || strcmp(schema, "pg_catalog") == 0)
> +           {
> +               if (strcmp(fmt, "csv") == 0)
> +                   opts_out->csv_mode = true;
> +               else if (strcmp(fmt, "binary") == 0)
> +                   opts_out->binary = true;
> +           }
>
> Non-qualified names depend on the search_path value so it's not
> necessarily a built-in format. If the user specifies 'csv' with
> seach_patch = 'myschema, pg_catalog', the COPY command unnecessarily
> sets csv_mode true. I think we can instead check if the retrieved
> handler function's OID matches the built-in formats' ones. Also, it's
> weired to me that cstate has csv_mode and binary fields even though
> the format should have already been known by the callback functions.
>

I considered it a feature that a schema-less reference to text, csv, or
binary always resolves to the core built-in handlers.  As does an
unspecified format default of text.

To use an extension that chooses to override that format name would require
schema qualification.

David J.

Reply via email to