@@ -191,24 +191,27 @@ std::unique_ptr<BoundStatement> Binder::bindCopyNodeFrom(
191191 auto nodeOffset =
192192 createVariable (std::string (Property::OFFSET_NAME), LogicalType{LogicalTypeID::INT64});
193193 auto boundCopyFromInfo = std::make_unique<BoundCopyFromInfo>(std::move (copyDescription),
194- tableSchema, std::move (columns), std::move (nodeOffset), nullptr , nullptr , containsSerial);
194+ tableSchema, std::move (columns), std::move (nodeOffset), nullptr /* boundOffsetExpression */ ,
195+ nullptr /* nbrOffsetExpression */ , nullptr /* predicateOffsetExpression */ , containsSerial);
195196 return std::make_unique<BoundCopyFrom>(std::move (boundCopyFromInfo));
196197}
197198
198199std::unique_ptr<BoundStatement> Binder::bindCopyRelFrom (
199200 std::unique_ptr<CopyDescription> copyDescription, TableSchema* tableSchema) {
200201 // For table with SERIAL columns, we need to read in serial from files.
201202 auto containsSerial = bindContainsSerial (tableSchema);
202- auto columns = bindCopyRelColumns (tableSchema);
203+ auto columns = bindCopyRelColumns (tableSchema, copyDescription-> fileType );
203204 auto nodeOffset =
204205 createVariable (std::string (Property::OFFSET_NAME), LogicalType{LogicalTypeID::INT64});
205206 auto boundOffset = createVariable (
206207 std::string (Property::REL_BOUND_OFFSET_NAME), LogicalType{LogicalTypeID::ARROW_COLUMN});
207208 auto nbrOffset = createVariable (
208209 std::string (Property::REL_NBR_OFFSET_NAME), LogicalType{LogicalTypeID::ARROW_COLUMN});
209- auto boundCopyFromInfo =
210- std::make_unique<BoundCopyFromInfo>(std::move (copyDescription), tableSchema,
211- std::move (columns), std::move (nodeOffset), boundOffset, nbrOffset, containsSerial);
210+ auto predicateOffset = createVariable (
211+ std::string (Property::REL_PREDICATE_OFFSET_NAME), LogicalType{LogicalTypeID::ARROW_COLUMN});
212+ auto boundCopyFromInfo = std::make_unique<BoundCopyFromInfo>(std::move (copyDescription),
213+ tableSchema, std::move (columns), std::move (nodeOffset), std::move (boundOffset),
214+ std::move (nbrOffset), std::move (predicateOffset), containsSerial);
212215 return std::make_unique<BoundCopyFrom>(std::move (boundCopyFromInfo));
213216}
214217
@@ -253,18 +256,34 @@ expression_vector Binder::bindCopyNodeColumns(
253256 return columnExpressions;
254257}
255258
256- expression_vector Binder::bindCopyRelColumns (TableSchema* tableSchema) {
259+ expression_vector Binder::bindCopyRelColumns (
260+ TableSchema* tableSchema, CopyDescription::FileType fileType) {
257261 expression_vector columnExpressions;
258- columnExpressions.push_back (createVariable (
259- std::string (Property::REL_FROM_PROPERTY_NAME), LogicalType{LogicalTypeID::ARROW_COLUMN}));
260- columnExpressions.push_back (createVariable (
261- std::string (Property::REL_TO_PROPERTY_NAME), LogicalType{LogicalTypeID::ARROW_COLUMN}));
262- for (auto & property : tableSchema->properties ) {
263- if (skipPropertyInFile (*property)) {
264- continue ;
265- }
262+ switch (fileType) {
263+ case common::CopyDescription::FileType::TURTLE: {
264+ columnExpressions.push_back (createVariable (" SUBJECT" , LogicalType{LogicalTypeID::STRING}));
266265 columnExpressions.push_back (
267- createVariable (property->getName (), LogicalType{LogicalTypeID::ARROW_COLUMN}));
266+ createVariable (" PREDICATE" , LogicalType{LogicalTypeID::STRING}));
267+ columnExpressions.push_back (createVariable (" OBJECT" , LogicalType{LogicalTypeID::STRING}));
268+ } break ;
269+ case common::CopyDescription::FileType::CSV:
270+ case common::CopyDescription::FileType::PARQUET:
271+ case common::CopyDescription::FileType::NPY: {
272+ columnExpressions.push_back (createVariable (std::string (Property::REL_FROM_PROPERTY_NAME),
273+ LogicalType{LogicalTypeID::ARROW_COLUMN}));
274+ columnExpressions.push_back (createVariable (
275+ std::string (Property::REL_TO_PROPERTY_NAME), LogicalType{LogicalTypeID::ARROW_COLUMN}));
276+ for (auto & property : tableSchema->properties ) {
277+ if (skipPropertyInFile (*property)) {
278+ continue ;
279+ }
280+ columnExpressions.push_back (
281+ createVariable (property->getName (), LogicalType{LogicalTypeID::ARROW_COLUMN}));
282+ }
283+ } break ;
284+ default : {
285+ throw NotImplementedException{" Binder::bindCopyRelColumns" };
286+ }
268287 }
269288 return columnExpressions;
270289}
0 commit comments