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

lzljs3620320 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 fe7f16eedb [hotfix] Minor refactor FormatReadBuilder
fe7f16eedb is described below

commit fe7f16eedb26deccf058ed22edd613e9cc356da2
Author: JingsongLi <jingsongl...@gmail.com>
AuthorDate: Wed Sep 3 11:55:49 2025 +0800

    [hotfix] Minor refactor FormatReadBuilder
---
 .../paimon/table/format/FormatReadBuilder.java     | 49 ++++++++++------------
 .../paimon/table/format/FormatTableRead.java       |  9 ++--
 2 files changed, 27 insertions(+), 31 deletions(-)

diff --git 
a/paimon-core/src/main/java/org/apache/paimon/table/format/FormatReadBuilder.java
 
b/paimon-core/src/main/java/org/apache/paimon/table/format/FormatReadBuilder.java
index f664acaf85..60eb8e1312 100644
--- 
a/paimon-core/src/main/java/org/apache/paimon/table/format/FormatReadBuilder.java
+++ 
b/paimon-core/src/main/java/org/apache/paimon/table/format/FormatReadBuilder.java
@@ -20,6 +20,7 @@ package org.apache.paimon.table.format;
 
 import org.apache.paimon.CoreOptions;
 import org.apache.paimon.data.InternalRow;
+import org.apache.paimon.format.FileFormat;
 import org.apache.paimon.format.FileFormatDiscover;
 import org.apache.paimon.format.FormatReaderContext;
 import org.apache.paimon.format.FormatReaderFactory;
@@ -30,7 +31,6 @@ import org.apache.paimon.partition.PartitionUtils;
 import org.apache.paimon.predicate.Predicate;
 import org.apache.paimon.predicate.PredicateBuilder;
 import org.apache.paimon.predicate.TopN;
-import org.apache.paimon.reader.FileRecordReader;
 import org.apache.paimon.reader.RecordReader;
 import org.apache.paimon.table.FormatTable;
 import org.apache.paimon.table.source.ReadBuilder;
@@ -55,12 +55,10 @@ public class FormatReadBuilder implements ReadBuilder {
 
     private static final long serialVersionUID = 1L;
 
-    private CoreOptions options;
-    private FormatTable table;
-    private RowType readType;
-
-    private final FileFormatDiscover formatDiscover;
+    private final FormatTable table;
+    private final FileFormat fileFormat;
 
+    private RowType readType;
     @Nullable private Predicate filter;
     @Nullable private PartitionPredicate partitionFilter;
     @Nullable private Integer limit;
@@ -68,8 +66,8 @@ public class FormatReadBuilder implements ReadBuilder {
     public FormatReadBuilder(FormatTable table) {
         this.table = table;
         this.readType = this.table.rowType();
-        this.options = new CoreOptions(table.options());
-        this.formatDiscover = FileFormatDiscover.of(this.options);
+        CoreOptions options = new CoreOptions(table.options());
+        this.fileFormat = 
FileFormatDiscover.of(options).discover(options.formatType());
     }
 
     @Override
@@ -148,39 +146,36 @@ public class FormatReadBuilder implements ReadBuilder {
                 new FormatReaderContext(table.fileIO(), filePath, 
dataSplit.length(), null);
 
         FormatReaderFactory readerFactory =
-                formatDiscover
-                        .discover(options.formatType())
-                        .createReaderFactory(
-                                table.rowType(), readType(), 
PredicateBuilder.splitAnd(filter));
+                fileFormat.createReaderFactory(
+                        table.rowType(), readType(), 
PredicateBuilder.splitAnd(filter));
 
         Pair<int[], RowType> partitionMapping =
                 PartitionUtils.getPartitionMapping(
                         table.partitionKeys(), readType().getFields(), 
table.partitionType());
 
-        FileRecordReader<InternalRow> fileRecordReader =
-                new DataFileRecordReader(
-                        readType(),
-                        readerFactory,
-                        formatReaderContext,
-                        null,
-                        null,
-                        PartitionUtils.create(partitionMapping, 
dataSplit.partition()),
-                        false,
-                        null,
-                        0,
-                        Collections.emptyMap());
-        return fileRecordReader;
+        return new DataFileRecordReader(
+                readType(),
+                readerFactory,
+                formatReaderContext,
+                null,
+                null,
+                PartitionUtils.create(partitionMapping, dataSplit.partition()),
+                false,
+                null,
+                0,
+                Collections.emptyMap());
     }
 
     // ===================== Unsupported ===============================
+
     @Override
     public ReadBuilder withTopN(TopN topN) {
-        throw new UnsupportedOperationException("TopN is not supported for 
FormatTable.");
+        return this;
     }
 
     @Override
     public ReadBuilder dropStats() {
-        throw new UnsupportedOperationException("Format Table does not support 
dropStats.");
+        return this;
     }
 
     @Override
diff --git 
a/paimon-core/src/main/java/org/apache/paimon/table/format/FormatTableRead.java 
b/paimon-core/src/main/java/org/apache/paimon/table/format/FormatTableRead.java
index 2fbe3f5629..c0610231aa 100644
--- 
a/paimon-core/src/main/java/org/apache/paimon/table/format/FormatTableRead.java
+++ 
b/paimon-core/src/main/java/org/apache/paimon/table/format/FormatTableRead.java
@@ -36,11 +36,12 @@ import java.util.concurrent.atomic.AtomicLong;
 /** A {@link TableRead} implementation for {@link FormatTable}. */
 public class FormatTableRead implements TableRead {
 
-    private RowType readType;
+    private final RowType readType;
+    private final Predicate predicate;
+    private final FormatReadBuilder read;
+    private final Integer limit;
+
     private boolean executeFilter = false;
-    private Predicate predicate;
-    private FormatReadBuilder read;
-    private Integer limit;
 
     public FormatTableRead(
             RowType readType, FormatReadBuilder read, Predicate predicate, 
Integer limit) {

Reply via email to