leaves12138 commented on code in PR #1082:
URL: https://github.com/apache/paimon-rust/pull/1082#discussion_r4226418076
##########
crates/paimon/src/table/table_update.rs:
##########
@@ -58,9 +59,20 @@ impl TableUpdate {
table: table.clone(),
commit_user,
update_cols: None,
+ blob_uri_reader_factory: None,
}
}
+ /// Configure readers for Blob input references. The same factory supplies
+ /// matched updates and appended rows in upsert and MERGE operations.
+ pub fn with_blob_uri_reader_factory(
+ &mut self,
+ factory: Option<std::sync::Arc<dyn crate::io::UriReaderFactory>>,
+ ) -> &mut Self {
+ self.blob_uri_reader_factory = factory;
Review Comment:
[P2] Forward this factory into predicate updates too
The new TableUpdate configuration is honored by row-ID, upsert and MERGE
paths, but update_by_predicate still calls table_update_predicate::update
without the factory. That helper creates TableUpdateByRowId::with_index with
the default reader configuration. Consequently, configuring a valid reader and
assigning a BlobDescriptor for custom://source through
update_by_predicate(None, {"payload": descriptor}) never invokes the reader and
instead fails on the native FileIO path. I reproduced this with both
batch/stream builders and scalar/Arrow-array assignments; the same factory and
descriptor succeed through update_by_arrow_with_row_id. Thread the stored
factory into the predicate helper and install it on that updater, and cover
predicate operations in
test_update_factory_errors_keep_identity_and_existing_data.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]