Re: Make COPY format extendable: Extract COPY TO format implementations

From: Vladlen Popolitov <v(dot)popolitov(at)postgrespro(dot)ru>
To: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>
Cc: Sutou Kouhei <kou(at)clear-code(dot)com>, zhjwpku(at)gmail(dot)com, michael(at)paquier(dot)xyz, pgsql-hackers(at)postgresql(dot)org
Subject: Re: Make COPY format extendable: Extract COPY TO format implementations
Date: 2025-02-05 02:19:27
Message-ID: 8173c7617b4feb8d41754ca4ecb85959@postgrespro.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Masahiko Sawada писал(а) 2025-02-05 08:32:
> On Tue, Feb 4, 2025 at 2:46 AM Vladlen Popolitov

>> >> Standard PostgreSQL realisation for new methods to use USING
>> >> keyword. Every
>> >> new method could have own options (FORMAT is option of internal 'copy
>> >> from/to'
>> >> methods),
>> >
>> > Ah, I didn't think about USING.
>> >
>> > You suggest "COPY ... USING json" not "COPY ... FORMAT json"
>> > like "CREATE INDEX ... USING custom_index", right? It will
>> > work. If we use this interface, we should reject "COPY
>> > ... FORMAT ... USING" (both of FORMAT/USING are specified).
>> >
>> >
>> I cannot recommend about rejecting, I do not know details
>> of realisation of this part of code. Just idea - FORMAT value
>> could be additional option to copy handler or NULL
>> if it is omitted.
>> If you add extensibility, than every handler will be the
>> extension, that can handle one or more formats.
>
> Hmm, if we use the USING clause to specify the format type, we end up
> having two ways to specify the format type (e.g., 'COPY ... USING
> text' and 'COPY .. WITH (format = text)'), which seems to confuse
> users.
WITH clause has list of options defined by copy method define in USING.
The clause WITH (format=text) has options defined for default copy
method,
but other methods will define own options. Probably they do not need
the word 'format' in options. The same as in index access methods.
For example, copy method parquete:
COPY ... USING parquete WITH (row_group_size=1000000)
copy method parquete need and will define the word 'row_group_size'
in options, the word 'format' will be wrong for it.
--
Best regards,

Vladlen Popolitov.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Hayato Kuroda (Fujitsu) 2025-02-05 02:19:39 RE: Adding a '--clean-publisher-objects' option to 'pg_createsubscriber' utility.
Previous Message Michael Paquier 2025-02-05 02:16:15 Re: per backend WAL statistics