From: | Heikki Linnakangas <heikki(dot)linnakangas(at)iki(dot)fi> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Split copy.c into four files. |
Date: | 2020-11-23 09:17:03 |
Message-ID: | E1kh7y3-0001R6-Dj@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Split copy.c into four files.
Copy.c has grown really large. Split it into more manageable parts:
- copy.c now contains only a few functions that are common to COPY FROM
and COPY TO.
- copyto.c contains code for COPY TO.
- copyfrom.c contains code for initializing COPY FROM, and inserting the
tuples to the correct table.
- copyfromparse.c contains code for reading from the client/file/program,
and parsing the input text/CSV/binary format into tuples.
All of these parts are fairly complicated, and fairly independent of each
other. There is a patch being discussed to implement parallel COPY FROM,
which will add a lot of new code to the COPY FROM path, and another patch
which would allow INSERTs to use the same multi-insert machinery as COPY
FROM, both of which will require refactoring that code. With those two
patches, there's going to be a lot of code churn in copy.c anyway, so now
seems like a good time to do this refactoring.
The CopyStateData struct is also split. All the formatting options, like
FORMAT, QUOTE, ESCAPE, are put in a new CopyFormatOption struct, which
is used by both COPY FROM and TO. Other state data are kept in separate
CopyFromStateData and CopyToStateData structs.
Reviewed-by: Soumyadeep Chakraborty, Erik Rijkers, Vignesh C, Andres Freund
Discussion: https://www.postgresql.org/message-id/8e15b560-f387-7acc-ac90-763986617bfb%40iki.fi
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/c532d15dddff14b01fe9ef1d465013cb8ef186df
Modified Files
--------------
contrib/file_fdw/file_fdw.c | 10 +-
src/backend/commands/Makefile | 3 +
src/backend/commands/copy.c | 4603 +--------------------------
src/backend/commands/copyfrom.c | 1562 +++++++++
src/backend/commands/copyfromparse.c | 1616 ++++++++++
src/backend/commands/copyto.c | 1347 ++++++++
src/backend/replication/logical/tablesync.c | 4 +-
src/include/commands/copy.h | 61 +-
src/include/commands/copyfrom_internal.h | 164 +
9 files changed, 4841 insertions(+), 4529 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Heikki Linnakangas | 2020-11-23 09:36:43 | pgsql: Fix a few comments that referred to copy.c. |
Previous Message | Tom Lane | 2020-11-22 20:48:47 | pgsql: Allow a multi-row INSERT to specify DEFAULTs for a generated col |