Re: Make COPY format extendable: Extract COPY TO format implementations
Vladlen Popolitov <v.popolitov@postgrespro.ru>
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.
Commits
-
Refactor Copy{From|To}GetRoutine() to use pass-by-reference argument.
- bacbc4863b3b 18.0 landed
-
Refactor COPY FROM to use format callback functions.
- 7717f6300693 18.0 landed
-
Refactor COPY TO to use format callback functions.
- 2e4127b6d2d8 18.0 landed
-
Another try to fix BF failure introduced in commit ddd5f4f54a.
- 9bc1eee988c3 17.0 cited
-
Revert "Refactor CopyReadAttributes{CSV,Text}() to use a callback in COPY FROM"
- 06bd311bce24 17.0 landed
-
Improve COPY TO performance when server and client encodings match
- b619852086ed 17.0 cited
-
Simplify signature of CopyAttributeOutCSV() in copyto.c
- b9d6038d7048 17.0 landed
-
Revert "Refactor CopyAttributeOut{CSV,Text}() to use a callback in COPY TO"
- 1aa8324b81fa 17.0 landed
-
Refactor CopyAttributeOut{CSV,Text}() to use a callback in COPY TO
- 2889fd23be56 17.0 landed
-
Refactor CopyReadAttributes{CSV,Text}() to use a callback in COPY FROM
- 95fb5b49024a 17.0 landed
-
Add progress reporting of skipped tuples during COPY FROM.
- 729439607ad2 17.0 cited
-
pgbench: Add \syncpipeline
- 94edfe250c6a 17.0 cited
-
meson: Make gzip and tar optional
- 9ca6e7b9411e 17.0 cited
-
Export the external file reader used in COPY FROM as APIs.
- 8ddc05fb01ee 9.1.0 cited