[copy_from] Support specifying a column map in COPY ... FROM <url>
#31580
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds support for specifying a column mapping and filling in default values for
COPY ... FROM <url>
(akaOneshotSource
).Let's say we ran
CREATE TABLE t1 (c1 text, c2 text, c3 text DEFAULT 'apple')
, so our table has 3 columns, but the file we're copying into Materialize only has 2 columns. After this PR you could runCOPY INTO t1 (c2, c1) FROM <url>
and it would map the first column of the data tot1.c2
, the second column tot1.c1
, and it would fill in the default value of'apple'
for all values int1.c3
.We do this by planning a
MapFilterProject
, converting it into aSafeMfpPlan
, and then inclusterd
when decoding data evaluating theSafeMfpPlan
for every row.Motivation
Fixes https://github.com/MaterializeInc/database-issues/issues/8858
Tips for reviewer
There are no tests in this PR, they are included as part of #31581
Checklist
$T ⇔ Proto$T
mapping (possibly in a backwards-incompatible way), then it is tagged with aT-proto
label.