Re: Make COPY format extendable: Extract COPY TO format implementations
David G. Johnston <david.g.johnston@gmail.com>
On Wed, Mar 26, 2025 at 8:28 PM Sutou Kouhei <kou@clear-code.com> wrote: > > The attached v39 patch set uses the followings: > > 0001: Create copyto_internal.h and change COPY_XXX to > COPY_SOURCE_XXX and COPY_DEST_XXX accordingly. > (Same as 1. in your suggestion) > 0002: Support custom format for both COPY TO and COPY FROM. > (Same as 2. in your suggestion) > 0003: Expose necessary helper functions such as CopySendEndOfRow() > and add CopyFromSkipErrorRow(). > (3. + 4. in your suggestion) > 0004: Define handler functions for built-in formats. > (Not included in your suggestion) > 0005: Documentation. (WIP) > (Same as 5. in your suggestion) > > I don't think this module should be responsible for testing the validity of "qualified names in a string literal" behavior. Having some of the tests use a schema qualification, and I'd suggest explicit double-quoting/case-folding, wouldn't hurt just to demonstrate it's possible, and how extensions should be referenced, but definitely don't need tests to prove the broken cases are indeed broken. This relies on an existing API that has its own tests. It is definitely pointlessly redundant to have 6 tests that only differ from 6 other tests in their use of a schema qualification. I prefer keeping 0002 and 0004 separate. In particular, keeping the design choice of "unqualified internal format names ignore search_path" should stand out as its own commit. David J.
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