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 8cebe06dc1 [core] Refactor name of GlobalIndexReader classes
8cebe06dc1 is described below
commit 8cebe06dc16c249d1c243ce34411a309220f5f61
Author: JingsongLi <[email protected]>
AuthorDate: Tue Dec 16 18:17:44 2025 +0800
[core] Refactor name of GlobalIndexReader classes
---
.../globalindex/AbstractGlobalIndexReader.java | 104 ---------------------
...setReader.java => OffsetGlobalIndexReader.java} | 4 +-
...nionReader.java => UnionGlobalIndexReader.java} | 4 +-
.../globalindex/RowRangeGlobalIndexScanner.java | 4 +-
.../index/LuceneVectorGlobalIndexReader.java | 83 +++++++++++++++-
5 files changed, 84 insertions(+), 115 deletions(-)
diff --git
a/paimon-common/src/main/java/org/apache/paimon/globalindex/AbstractGlobalIndexReader.java
b/paimon-common/src/main/java/org/apache/paimon/globalindex/AbstractGlobalIndexReader.java
deleted file mode 100644
index 1fd7918758..0000000000
---
a/paimon-common/src/main/java/org/apache/paimon/globalindex/AbstractGlobalIndexReader.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.paimon.globalindex;
-
-import org.apache.paimon.predicate.FieldRef;
-import org.apache.paimon.utils.Range;
-
-import java.util.List;
-
-/** Abstract global index reader to wrap most method. */
-public abstract class AbstractGlobalIndexReader implements GlobalIndexReader {
-
- private final long rangeEnd;
-
- protected AbstractGlobalIndexReader(long rangeEnd) {
- this.rangeEnd = rangeEnd;
- }
-
- @Override
- public GlobalIndexResult visitIsNotNull(FieldRef fieldRef) {
- return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
- }
-
- @Override
- public GlobalIndexResult visitIsNull(FieldRef fieldRef) {
- return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
- }
-
- @Override
- public GlobalIndexResult visitStartsWith(FieldRef fieldRef, Object
literal) {
- return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
- }
-
- @Override
- public GlobalIndexResult visitEndsWith(FieldRef fieldRef, Object literal) {
- return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
- }
-
- @Override
- public GlobalIndexResult visitContains(FieldRef fieldRef, Object literal) {
- return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
- }
-
- @Override
- public GlobalIndexResult visitLike(FieldRef fieldRef, Object literal) {
- return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
- }
-
- @Override
- public GlobalIndexResult visitLessThan(FieldRef fieldRef, Object literal) {
- return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
- }
-
- @Override
- public GlobalIndexResult visitGreaterOrEqual(FieldRef fieldRef, Object
literal) {
- return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
- }
-
- @Override
- public GlobalIndexResult visitNotEqual(FieldRef fieldRef, Object literal) {
- return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
- }
-
- @Override
- public GlobalIndexResult visitLessOrEqual(FieldRef fieldRef, Object
literal) {
- return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
- }
-
- @Override
- public GlobalIndexResult visitEqual(FieldRef fieldRef, Object literal) {
- return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
- }
-
- @Override
- public GlobalIndexResult visitGreaterThan(FieldRef fieldRef, Object
literal) {
- return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
- }
-
- @Override
- public GlobalIndexResult visitIn(FieldRef fieldRef, List<Object> literals)
{
- return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
- }
-
- @Override
- public GlobalIndexResult visitNotIn(FieldRef fieldRef, List<Object>
literals) {
- return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
- }
-}
diff --git
a/paimon-common/src/main/java/org/apache/paimon/globalindex/OffsetReader.java
b/paimon-common/src/main/java/org/apache/paimon/globalindex/OffsetGlobalIndexReader.java
similarity index 96%
rename from
paimon-common/src/main/java/org/apache/paimon/globalindex/OffsetReader.java
rename to
paimon-common/src/main/java/org/apache/paimon/globalindex/OffsetGlobalIndexReader.java
index e9217ba019..753d66a533 100644
---
a/paimon-common/src/main/java/org/apache/paimon/globalindex/OffsetReader.java
+++
b/paimon-common/src/main/java/org/apache/paimon/globalindex/OffsetGlobalIndexReader.java
@@ -27,12 +27,12 @@ import java.util.List;
* A {@link GlobalIndexReader} that wraps another reader and applies an offset
to all row IDs in the
* results.
*/
-public class OffsetReader implements GlobalIndexReader {
+public class OffsetGlobalIndexReader implements GlobalIndexReader {
private final GlobalIndexReader wrapped;
private final long offset;
- public OffsetReader(GlobalIndexReader wrapped, long offset) {
+ public OffsetGlobalIndexReader(GlobalIndexReader wrapped, long offset) {
this.wrapped = wrapped;
this.offset = offset;
}
diff --git
a/paimon-common/src/main/java/org/apache/paimon/globalindex/GlobalIndexUnionReader.java
b/paimon-common/src/main/java/org/apache/paimon/globalindex/UnionGlobalIndexReader.java
similarity index 97%
rename from
paimon-common/src/main/java/org/apache/paimon/globalindex/GlobalIndexUnionReader.java
rename to
paimon-common/src/main/java/org/apache/paimon/globalindex/UnionGlobalIndexReader.java
index d2b3ebd251..5d96e2c4a0 100644
---
a/paimon-common/src/main/java/org/apache/paimon/globalindex/GlobalIndexUnionReader.java
+++
b/paimon-common/src/main/java/org/apache/paimon/globalindex/UnionGlobalIndexReader.java
@@ -28,11 +28,11 @@ import java.util.function.Function;
* A {@link GlobalIndexReader} that combines results from multiple readers by
performing a union
* (OR) operation on their results.
*/
-public class GlobalIndexUnionReader implements GlobalIndexReader {
+public class UnionGlobalIndexReader implements GlobalIndexReader {
private final List<GlobalIndexReader> readers;
- public GlobalIndexUnionReader(List<GlobalIndexReader> readers) {
+ public UnionGlobalIndexReader(List<GlobalIndexReader> readers) {
this.readers = readers;
}
diff --git
a/paimon-core/src/main/java/org/apache/paimon/globalindex/RowRangeGlobalIndexScanner.java
b/paimon-core/src/main/java/org/apache/paimon/globalindex/RowRangeGlobalIndexScanner.java
index 1000e21291..95eb4be512 100644
---
a/paimon-core/src/main/java/org/apache/paimon/globalindex/RowRangeGlobalIndexScanner.java
+++
b/paimon-core/src/main/java/org/apache/paimon/globalindex/RowRangeGlobalIndexScanner.java
@@ -131,13 +131,13 @@ public class RowRangeGlobalIndexScanner implements
Closeable {
.map(this::toGlobalMeta)
.collect(Collectors.toList());
GlobalIndexReader innerReader =
- new OffsetReader(
+ new OffsetGlobalIndexReader(
globalIndexer.createReader(indexFileReadWrite, globalMetas),
range.from);
unionReader.add(innerReader);
}
- readers.add(new GlobalIndexUnionReader(unionReader));
+ readers.add(new UnionGlobalIndexReader(unionReader));
}
} catch (IOException e) {
throw new RuntimeException("Failed to create global index reader",
e);
diff --git
a/paimon-lucene/src/main/java/org/apache/paimon/lucene/index/LuceneVectorGlobalIndexReader.java
b/paimon-lucene/src/main/java/org/apache/paimon/lucene/index/LuceneVectorGlobalIndexReader.java
index 141ba5e4d2..902327990f 100644
---
a/paimon-lucene/src/main/java/org/apache/paimon/lucene/index/LuceneVectorGlobalIndexReader.java
+++
b/paimon-lucene/src/main/java/org/apache/paimon/lucene/index/LuceneVectorGlobalIndexReader.java
@@ -19,10 +19,12 @@
package org.apache.paimon.lucene.index;
import org.apache.paimon.fs.SeekableInputStream;
-import org.apache.paimon.globalindex.AbstractGlobalIndexReader;
import org.apache.paimon.globalindex.GlobalIndexIOMeta;
+import org.apache.paimon.globalindex.GlobalIndexReader;
import org.apache.paimon.globalindex.GlobalIndexResult;
import org.apache.paimon.globalindex.io.GlobalIndexFileReader;
+import org.apache.paimon.predicate.FieldRef;
+import org.apache.paimon.utils.Range;
import org.apache.paimon.utils.RoaringNavigableMap64;
import org.apache.lucene.document.Document;
@@ -48,16 +50,15 @@ import java.util.Set;
* <p>This implementation uses Lucene's native KnnFloatVectorQuery with HNSW
graph for efficient
* approximate nearest neighbor search.
*/
-public class LuceneVectorGlobalIndexReader extends AbstractGlobalIndexReader {
+public class LuceneVectorGlobalIndexReader implements GlobalIndexReader {
+ private final long rangeEnd;
private final List<IndexSearcher> searchers;
private final List<LuceneIndexMMapDirectory> directories;
- private final List<GlobalIndexIOMeta> ioMetas;
public LuceneVectorGlobalIndexReader(
GlobalIndexFileReader fileReader, List<GlobalIndexIOMeta> ioMetas)
throws IOException {
- super(ioMetas.get(0).rangeEnd());
- this.ioMetas = ioMetas;
+ this.rangeEnd = ioMetas.get(0).rangeEnd();
this.searchers = new ArrayList<>();
this.directories = new ArrayList<>();
loadIndices(fileReader, ioMetas);
@@ -203,4 +204,76 @@ public class LuceneVectorGlobalIndexReader extends
AbstractGlobalIndexReader {
}
}
}
+
+ // =================== unsupported =====================
+
+ @Override
+ public GlobalIndexResult visitIsNotNull(FieldRef fieldRef) {
+ return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
+ }
+
+ @Override
+ public GlobalIndexResult visitIsNull(FieldRef fieldRef) {
+ return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
+ }
+
+ @Override
+ public GlobalIndexResult visitStartsWith(FieldRef fieldRef, Object
literal) {
+ return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
+ }
+
+ @Override
+ public GlobalIndexResult visitEndsWith(FieldRef fieldRef, Object literal) {
+ return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
+ }
+
+ @Override
+ public GlobalIndexResult visitContains(FieldRef fieldRef, Object literal) {
+ return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
+ }
+
+ @Override
+ public GlobalIndexResult visitLike(FieldRef fieldRef, Object literal) {
+ return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
+ }
+
+ @Override
+ public GlobalIndexResult visitLessThan(FieldRef fieldRef, Object literal) {
+ return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
+ }
+
+ @Override
+ public GlobalIndexResult visitGreaterOrEqual(FieldRef fieldRef, Object
literal) {
+ return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
+ }
+
+ @Override
+ public GlobalIndexResult visitNotEqual(FieldRef fieldRef, Object literal) {
+ return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
+ }
+
+ @Override
+ public GlobalIndexResult visitLessOrEqual(FieldRef fieldRef, Object
literal) {
+ return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
+ }
+
+ @Override
+ public GlobalIndexResult visitEqual(FieldRef fieldRef, Object literal) {
+ return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
+ }
+
+ @Override
+ public GlobalIndexResult visitGreaterThan(FieldRef fieldRef, Object
literal) {
+ return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
+ }
+
+ @Override
+ public GlobalIndexResult visitIn(FieldRef fieldRef, List<Object> literals)
{
+ return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
+ }
+
+ @Override
+ public GlobalIndexResult visitNotIn(FieldRef fieldRef, List<Object>
literals) {
+ return GlobalIndexResult.fromRange(new Range(0, rangeEnd));
+ }
}