This is an automated email from the ASF dual-hosted git repository.

JingsongLi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git


The following commit(s) were added to refs/heads/master by this push:
     new f63c1d8b39 [core] Custom tag callback support to be initialized with 
table (#8189)
f63c1d8b39 is described below

commit f63c1d8b39eaa8b13e5b3b17b0b0b1f77e466de0
Author: yuzelin <[email protected]>
AuthorDate: Wed Jun 10 15:11:01 2026 +0800

    [core] Custom tag callback support to be initialized with table (#8189)
---
 .../src/main/java/org/apache/paimon/AbstractFileStore.java        | 3 ++-
 .../java/org/apache/paimon/iceberg/IcebergCommitCallback.java     | 5 +++++
 .../src/main/java/org/apache/paimon/table/sink/CallbackUtils.java | 8 ++++++--
 .../src/main/java/org/apache/paimon/table/sink/TagCallback.java   | 4 ++++
 4 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/paimon-core/src/main/java/org/apache/paimon/AbstractFileStore.java 
b/paimon-core/src/main/java/org/apache/paimon/AbstractFileStore.java
index 3aa399186e..cc298823ff 100644
--- a/paimon-core/src/main/java/org/apache/paimon/AbstractFileStore.java
+++ b/paimon-core/src/main/java/org/apache/paimon/AbstractFileStore.java
@@ -566,7 +566,8 @@ abstract class AbstractFileStore<T> implements FileStore<T> 
{
 
     @Override
     public List<TagCallback> createTagCallbacks(FileStoreTable table) {
-        List<TagCallback> callbacks = new 
ArrayList<>(CallbackUtils.loadTagCallbacks(options));
+        List<TagCallback> callbacks =
+                new ArrayList<>(CallbackUtils.loadTagCallbacks(options, 
table));
         String partitionField = options.tagToPartitionField();
 
         if (partitionField != null) {
diff --git 
a/paimon-core/src/main/java/org/apache/paimon/iceberg/IcebergCommitCallback.java
 
b/paimon-core/src/main/java/org/apache/paimon/iceberg/IcebergCommitCallback.java
index 0489a2d0bf..79c2ecb7ad 100644
--- 
a/paimon-core/src/main/java/org/apache/paimon/iceberg/IcebergCommitCallback.java
+++ 
b/paimon-core/src/main/java/org/apache/paimon/iceberg/IcebergCommitCallback.java
@@ -271,6 +271,11 @@ public class IcebergCommitCallback implements 
CommitCallback, TagCallback {
                 indexFileHandler.scan(snapshot, DELETION_VECTORS_INDEX));
     }
 
+    @Override
+    public void setTable(FileStoreTable table) {
+        // nothing to do
+    }
+
     private void createMetadata(
             Snapshot snapshot,
             FileChangesCollector fileChangesCollector,
diff --git 
a/paimon-core/src/main/java/org/apache/paimon/table/sink/CallbackUtils.java 
b/paimon-core/src/main/java/org/apache/paimon/table/sink/CallbackUtils.java
index bec038718c..de27922e86 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/sink/CallbackUtils.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/sink/CallbackUtils.java
@@ -29,8 +29,12 @@ import java.util.Map;
 /** Utils to load callbacks. */
 public class CallbackUtils {
 
-    public static List<TagCallback> loadTagCallbacks(CoreOptions coreOptions) {
-        return loadCallbacks(coreOptions.tagCallbacks(), TagCallback.class);
+    public static List<TagCallback> loadTagCallbacks(
+            CoreOptions coreOptions, FileStoreTable table) {
+        List<TagCallback> tagCallbacks =
+                loadCallbacks(coreOptions.tagCallbacks(), TagCallback.class);
+        tagCallbacks.forEach(callback -> callback.setTable(table));
+        return tagCallbacks;
     }
 
     public static List<CommitCallback> loadCommitCallbacks(
diff --git 
a/paimon-core/src/main/java/org/apache/paimon/table/sink/TagCallback.java 
b/paimon-core/src/main/java/org/apache/paimon/table/sink/TagCallback.java
index d99451633e..a0f2643f0e 100644
--- a/paimon-core/src/main/java/org/apache/paimon/table/sink/TagCallback.java
+++ b/paimon-core/src/main/java/org/apache/paimon/table/sink/TagCallback.java
@@ -18,6 +18,8 @@
 
 package org.apache.paimon.table.sink;
 
+import org.apache.paimon.table.FileStoreTable;
+
 /**
  * This callback will be called after tag operations.
  *
@@ -25,6 +27,8 @@ package org.apache.paimon.table.sink;
  */
 public interface TagCallback extends AutoCloseable {
 
+    default void setTable(FileStoreTable table) {}
+
     void notifyCreation(String tagName);
 
     // Iceberg tag callbacks require snapshotId

Reply via email to