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]

Reply via email to