This is an automated email from the ASF dual-hosted git repository.
hope pushed a change to branch release-1.4
in repository https://gitbox.apache.org/repos/asf/paimon.git
from 1713285c9e [python] Deduplicate input to keep last one in
TableUpsertByKey (#7526)
new 6bab1c62f7 [core] Do not create GlobalIndexScanner when no index files
(#7521)
new 868b080060 [core] Support config compaction file num limit and report
if reach the limit in batch job (#7520)
new 78b370d014 [python] Add comment method for file_store_table (#7527)
new 5826b2ea91 [fix] Fix IndexFileHandler to support deleting all index
types during snapshot expiration (#7523)
new 3c2a84146f [spark] Add OVERWRITE_BY_FILTER capabilities to
PartitionedFormatTable for Spark 4 compatibility (#7517)
new a85142ed84 [flink][spark] path_to_descriptor function supports http
url (#7529)
new 8904cc0409 [core] Add validation for 'pk-clustering-override' (#7528)
new fcf405e54d [doc] Update Documentations for Append table
new 350ed2c6eb [core] Chain table support group partition. (#7524)
new aa17b3ecda [core][vector] add log for lumina index writer (#7512)
new 60ca3b1e04 [core] Respect rowsPerShard as hard constraint in global
index build (#7530)
new 81faaf3c5e [doc] Introduce Scenario Guide in Learn Paimon
new 191fbb31cc [python] Include LICENSE and NOTICE in sdist for Apache
release compliance (#7533)
new ca2534fad1 [core] File paths in SimpleLsmKvDb should contain UUID
(#7536)
new 8796587522 [doc] Modify scenario-guide to changelog-producer
new f137b6ac57 [core] Remove stale dv files in ClusteringCompactManager
(#7538)
new 8670853c75 [spark] Support reading ObjectTable via Spark SQL (#7535)
new 9898d917fd [spark] Support merge schema through catalog for REST
catalog (#7539)
new 235e7e316e [core] Fix frequent compact triggers during streaming
writes for pk clustering override (#7540)
new 12c9c9a441 [spark] Fix nested struct field mapping for V2 write merge
schema (#7542)
new 5274a4021f [flink] Sopport refreshing partition asynchronously for
lookup join (#7402)
new 166a6f722e [python] Fix data evolution merge read with disordered
projection (#7544)
new 1e00fbbd5d [hotfix] Add vortex jni ignore to gitignore
new dfbac71c78 [core] Ensuring JDBC connection is not stale before using
it (#7470)
new e1b930c800 [vortex] Introduce vortex file format integration (#7543)
new 57fdb1719d [python] Introduce vortex file format integration (#7547)
new 68eb6b2e0b [core][spark] Introduce Full Text Search interfaces and
Spark function (#7548)
new fb2484ed0f [core] Support rename branch API and procedures (#7549)
new 773c438296 [tantivy] Introduce paimon-tantivy for full text search
index (#7551)
new edc7b3fad8 [python] Support PyJindo in pyarrow_file_io (#7410)
new 3799094b00 [python] Add FUSE support for REST Catalog (#7483)
new 306d0b714e [flink] support vector search procedure for flink (#7550)
new 699e453d67 [Python] Fix data evolution read IndexError when file has
no write_cols (#7556)
new db8d3d9a1f [doc] Bucket pruning also works for pk clustering override
(#7554)
new 8aa7c6c5ee [python] Introduce file pruning for dv pk table (#7557)
new 749aa28f83 Introduce scan.primary-branch which is symmetrical to
scan.fallback-branch (#7553)
new 5c50f908eb [python] Fix token cache pollution in Python
`RESTTokenFileIO` by aligning with the Java implementation. (#7562)
new 7d19566251 [python] Support rename branch api (#7561)
new 73825eb631 [python] Push down row ranges to vortex reader (#7558)
new 458acfc894 [python] Add doc and refine config for using pyjindosdk in
pypaimon (#7565)
new f83b39579c [spark] Fix view resolution for CTE and ORDER BY ordinal
(#7552)
The 41 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.github/workflows/paimon-python-checks.yml | 5 +-
.github/workflows/utitcase-flink-1.x-common.yml | 2 +-
.github/workflows/utitcase-rust-native.yml | 109 ++
.gitignore | 7 +
docs/content/append-table/bucketed.md | 89 +-
docs/content/append-table/data-evolution.md | 2 +-
docs/content/append-table/global-index.md | 81 +-
.../content/append-table/incremental-clustering.md | 2 +-
docs/content/append-table/overview.md | 157 ++-
docs/content/append-table/query-performance.md | 102 --
docs/content/append-table/streaming.md | 104 --
docs/content/append-table/update.md | 41 -
docs/content/flink/procedures.md | 52 +
docs/content/learn-paimon/scenario-guide.md | 600 ++++++++
docs/content/learn-paimon/understand-files.md | 2 +-
docs/content/primary-key-table/chain-table.md | 59 +
.../primary-key-table/pk-clustering-override.md | 45 +-
docs/content/pypaimon/fuse-support.md | 94 ++
docs/content/pypaimon/pyjindosdk-support.md | 56 +
docs/content/pypaimon/python-api.md | 13 +
docs/content/spark/procedures.md | 12 +
.../shortcodes/generated/core_configuration.html | 20 +-
.../generated/flink_connector_configuration.html | 6 +
docs/static/rest-catalog-open-api.yaml | 48 +
.../main/java/org/apache/paimon/CoreOptions.java | 46 +-
.../main/java/org/apache/paimon/rest/RESTApi.java | 22 +
.../java/org/apache/paimon/rest/ResourcePaths.java | 13 +
...SchemaRequest.java => RenameBranchRequest.java} | 20 +-
.../java/org/apache/paimon/arrow/ArrowUtils.java | 9 +-
.../java/org/apache/paimon/client/ClientPool.java | 9 +
.../paimon/globalindex/GlobalIndexReader.java | 5 +
.../globalindex/OffsetGlobalIndexReader.java | 6 +
.../paimon/lookup/sort/db/SimpleLsmKvDb.java | 5 +-
.../{VectorSearch.java => FullTextSearch.java} | 54 +-
.../TestFullTextGlobalIndexReader.java} | 133 +-
.../TestFullTextGlobalIndexWriter.java | 110 ++
.../testfulltext/TestFullTextGlobalIndexer.java | 29 +-
.../TestFullTextGlobalIndexerFactory.java | 13 +-
.../paimon/lookup/sort/db/SimpleLsmKvDbTest.java | 51 +
....apache.paimon.globalindex.GlobalIndexerFactory | 1 +
.../java/org/apache/paimon/AbstractFileStore.java | 3 +-
.../paimon/append/AppendCompactCoordinator.java | 25 +-
.../org/apache/paimon/catalog/AbstractCatalog.java | 6 +
.../java/org/apache/paimon/catalog/Catalog.java | 15 +
.../org/apache/paimon/catalog/DelegateCatalog.java | 6 +
.../paimon/crosspartition/GlobalIndexAssigner.java | 2 +-
.../java/org/apache/paimon/disk/IOManager.java | 2 +-
.../java/org/apache/paimon/disk/IOManagerImpl.java | 2 +-
.../paimon/globalindex/DataEvolutionBatchScan.java | 9 +-
.../globalindex/GlobalIndexBuilderUtils.java | 17 -
.../paimon/globalindex/GlobalIndexScanner.java | 21 +-
.../org/apache/paimon/index/IndexFileHandler.java | 22 +-
.../org/apache/paimon/jdbc/JdbcClientPool.java | 34 +
.../clustering/ClusteringCompactManager.java | 9 +-
.../ClusteringCompactManagerFactory.java | 28 +-
.../java/org/apache/paimon/rest/RESTCatalog.java | 14 +
.../org/apache/paimon/schema/SchemaManager.java | 19 +-
.../apache/paimon/schema/SchemaMergingUtils.java | 54 +
.../org/apache/paimon/schema/SchemaValidation.java | 85 +-
.../paimon/table/AbstractFileStoreTable.java | 22 +-
.../apache/paimon/table/CatalogEnvironment.java | 9 +
.../apache/paimon/table/ChainGroupReadTable.java | 345 +++--
.../paimon/table/DelegatedFileStoreTable.java | 5 +
.../paimon/table/FallbackReadFileStoreTable.java | 137 +-
.../apache/paimon/table/FileStoreTableFactory.java | 66 +-
.../java/org/apache/paimon/table/FormatTable.java | 12 +
...orSearchTable.java => FullTextSearchTable.java} | 26 +-
.../java/org/apache/paimon/table/InnerTable.java | 7 +
.../org/apache/paimon/table/ReadonlyTable.java | 8 +
...titionMarkDone.java => SchemaModification.java} | 18 +-
.../main/java/org/apache/paimon/table/Table.java | 8 +
.../source/{VectorRead.java => FullTextRead.java} | 8 +-
.../{VectorReadImpl.java => FullTextReadImpl.java} | 70 +-
.../source/{VectorScan.java => FullTextScan.java} | 8 +-
.../paimon/table/source/FullTextScanImpl.java | 88 ++
...{VectorRead.java => FullTextSearchBuilder.java} | 28 +-
.../table/source/FullTextSearchBuilderImpl.java | 74 +
.../paimon/table/source/FullTextSearchSplit.java | 82 ++
.../apache/paimon/table/source/VectorReadImpl.java | 8 +-
.../paimon/table/system/ReadOptimizedTable.java | 9 +-
.../org/apache/paimon/utils/BranchManager.java | 2 +
.../apache/paimon/utils/CatalogBranchManager.java | 5 +
.../paimon/utils/ChainPartitionProjector.java | 160 +++
.../org/apache/paimon/utils/ChainTableUtils.java | 135 +-
.../paimon/utils/FileSystemBranchManager.java | 19 +
.../append/AppendOnlyTableCompactionTest.java | 78 ++
.../globalindex/GlobalIndexBuilderUtilsTest.java | 81 --
.../apache/paimon/index/IndexFileHandlerTest.java | 105 ++
.../org/apache/paimon/jdbc/JdbcClientPoolTest.java | 152 ++
.../org/apache/paimon/rest/RESTCatalogServer.java | 46 +-
.../org/apache/paimon/rest/RESTCatalogTest.java | 21 +-
.../paimon/separated/ClusteringTableTest.java | 134 +-
.../paimon/table/BitmapGlobalIndexTableTest.java | 2 +-
.../paimon/table/BtreeGlobalIndexTableTest.java | 23 +-
.../table/FallbackReadFileStoreTableTest.java | 118 +-
.../apache/paimon/table/SimpleTableTestBase.java | 5 +-
.../table/source/FullTextSearchBuilderTest.java | 424 ++++++
.../paimon/utils/ChainPartitionProjectorTest.java | 432 ++++++
.../apache/paimon/utils/ChainTableUtilsTest.java | 532 +++++++
.../paimon/utils/FileSystemBranchManagerTest.java | 196 +++
.../apache/paimon/flink/FlinkConnectorOptions.java | 12 +
.../paimon/flink/function/PathToDescriptor.java | 2 +-
.../flink/globalindex/GenericIndexTopoBuilder.java | 7 -
.../flink/lookup/FileStoreLookupFunction.java | 56 +-
.../paimon/flink/lookup/FullCacheLookupTable.java | 11 +
.../paimon/flink/lookup/PartitionRefresher.java | 223 +++
...agProcedure.java => RenameBranchProcedure.java} | 26 +-
.../flink/procedure/VectorSearchProcedure.java | 216 +++
.../services/org.apache.paimon.factories.Factory | 4 +-
.../org/apache/paimon/flink/BlobTableITCase.java | 31 +
.../org/apache/paimon/flink/BranchSqlITCase.java | 56 +-
.../org/apache/paimon/flink/LookupJoinITCase.java | 313 +++++
.../flink/PrimaryKeyFileStoreTableITCase.java | 3 +-
.../procedure/VectorSearchProcedureITCase.java | 216 +++
.../index/LuminaVectorGlobalIndexWriter.java | 44 +-
paimon-python/MANIFEST.in | 2 +
paimon-python/NOTICE | 5 +
.../pypaimon/benchmark/clickbench_format.py | 374 +++++
paimon-python/pypaimon/branch/branch_manager.py | 13 +
.../pypaimon/branch/catalog_branch_manager.py | 16 +
.../pypaimon/branch/filesystem_branch_manager.py | 54 +
.../pypaimon/catalog/rest/fuse_support.py | 173 +++
.../pypaimon/catalog/rest/rest_catalog.py | 25 +-
.../pypaimon/catalog/rest/rest_token_file_io.py | 95 +-
paimon-python/pypaimon/common/file_io.py | 3 +
paimon-python/pypaimon/common/options/config.py | 37 +
.../pypaimon/common/options/core_options.py | 1 +
.../filesystem/jindo_file_system_handler.py | 283 ++++
paimon-python/pypaimon/filesystem/local_file_io.py | 45 +-
.../pypaimon/filesystem/pyarrow_file_io.py | 54 +-
.../pypaimon/globalindex/global_index_scanner.py | 6 +-
...t_pyarrow_reader.py => format_vortex_reader.py} | 117 +-
paimon-python/pypaimon/read/reader/vortex_utils.py | 70 +
.../pypaimon/read/scanner/file_scanner.py | 32 +-
paimon-python/pypaimon/read/split_read.py | 71 +-
paimon-python/pypaimon/table/file_store_table.py | 19 +
.../pypaimon/tests/data_evolution_test.py | 245 ++++
.../pypaimon/tests/e2e/java_py_read_write_test.py | 42 +
paimon-python/pypaimon/tests/file_io_test.py | 10 +-
.../pypaimon/tests/jindo_file_system_test.py | 524 +++++++
paimon-python/pypaimon/tests/oss_file_io_test.py | 362 +++++
.../pypaimon/tests/reader_append_only_test.py | 80 ++
.../pypaimon/tests/rest/rest_token_file_io_test.py | 164 ++-
.../pypaimon/tests/rest/test_fuse_local_path.py | 346 +++++
.../pypaimon/tests/table/file_store_table_test.py | 89 ++
paimon-python/pypaimon/write/writer/data_writer.py | 2 +
.../paimon/spark/PaimonBaseScanBuilder.scala | 2 +
.../scala/org/apache/paimon/spark/PaimonScan.scala | 3 +-
.../scala/org/apache/paimon/spark/PaimonScan.scala | 3 +-
.../java/org/apache/paimon/spark/SparkCatalog.java | 2 +-
.../paimon/spark/SparkInternalRowWrapper.java | 18 +-
.../org/apache/paimon/spark/SparkProcedures.java | 2 +
.../spark/function/PathToDescriptorFunction.java | 2 +-
.../globalindex/DefaultGlobalIndexTopoBuilder.java | 9 -
...chProcedure.java => RenameBranchProcedure.java} | 29 +-
.../org/apache/paimon/spark/PaimonBaseScan.scala | 28 +-
.../paimon/spark/PaimonBaseScanBuilder.scala | 2 +
.../scala/org/apache/paimon/spark/PaimonScan.scala | 3 +-
.../apache/paimon/spark/PaimonScanBuilder.scala | 11 +-
.../scala/org/apache/paimon/spark/SparkTable.scala | 19 +-
.../catalyst/analysis/PaimonViewResolver.scala | 8 +-
.../plans/logical/PaimonTableValuedFunctions.scala | 89 +-
.../org/apache/paimon/spark/read/BaseScan.scala | 6 +-
.../ObjectTableScan.scala} | 27 +-
.../spark/sql/execution/SparkFormatTable.scala | 36 +
.../apache/paimon/spark/SparkChainTableITCase.java | 1456 ++++++++++++++++++++
.../spark/procedure/BranchProcedureTest.scala | 50 +
.../paimon/spark/sql/FullTextSearchTest.scala | 223 +++
.../paimon/spark/sql/PaimonViewTestBase.scala | 38 +
.../paimon/spark/sql/V2WriteMergeSchemaTest.scala | 108 ++
.../sql/WriteMergeSchemaWithRestCatalogTest.scala | 74 +
.../paimon/spark/table/PaimonFormatTableTest.scala | 38 +
.../paimon/spark/table/PaimonObjectTableTest.scala | 72 +
paimon-tantivy/paimon-tantivy-index/README.md | 148 ++
.../paimon-tantivy-index}/pom.xml | 76 +-
.../index/TantivyFullTextGlobalIndexReader.java | 311 +++++
.../index/TantivyFullTextGlobalIndexWriter.java | 217 +++
.../index/TantivyFullTextGlobalIndexer.java | 20 +-
.../index/TantivyFullTextGlobalIndexerFactory.java | 10 +-
.../index/TantivyScoredGlobalIndexResult.java | 18 +-
....apache.paimon.globalindex.GlobalIndexerFactory | 2 +-
.../index/TantivyFullTextGlobalIndexTest.java | 300 ++++
paimon-tantivy/paimon-tantivy-jni/README.md | 60 +
.../paimon-tantivy-jni}/pom.xml | 54 +-
paimon-tantivy/paimon-tantivy-jni/rust/Cargo.toml | 13 +
.../paimon-tantivy-jni/rust/src/jni_directory.rs | 259 ++++
paimon-tantivy/paimon-tantivy-jni/rust/src/lib.rs | 358 +++++
.../org/apache/paimon/tantivy/NativeLoader.java | 83 ++
.../org/apache/paimon/tantivy/SearchResult.java | 35 +-
.../org/apache/paimon/tantivy/StreamFileInput.java | 17 +-
.../apache/paimon/tantivy/TantivyIndexWriter.java | 70 +
.../org/apache/paimon/tantivy/TantivySearcher.java | 91 ++
.../src/main/resources/META-INF/NOTICE | 17 +
.../org/apache/paimon/tantivy/TantivyJniTest.java | 77 ++
.../paimon/tantivy/TantivyStreamSearchTest.java | 174 +++
{paimon-service => paimon-tantivy}/pom.xml | 11 +-
.../paimon-vortex-format}/pom.xml | 70 +-
.../org/apache/arrow/memory/BoundsChecking.java | 0
.../paimon/format/vortex/VortexFileFormat.java | 42 +-
.../format/vortex/VortexFileFormatFactory.java | 12 +-
.../format/vortex/VortexPredicateConverter.java | 211 +++
.../paimon/format/vortex/VortexReaderFactory.java | 79 ++
.../paimon/format/vortex/VortexRecordsReader.java | 154 +++
.../paimon/format/vortex/VortexRecordsWriter.java | 73 +-
.../paimon/format/vortex/VortexTypeUtils.java | 198 +++
.../apache/paimon/format/vortex/VortexUtils.java | 112 ++
.../paimon/format/vortex/VortexWriterFactory.java | 37 +-
.../org.apache.paimon.format.FileFormatFactory | 2 +-
.../vortex/VortexFileFormatReadWriteTest.java | 97 +-
.../paimon/format/vortex/VortexFileFormatTest.java | 131 ++
.../vortex/VortexPredicateConverterTest.java | 244 ++++
.../format/vortex/VortexReaderWriterTest.java | 366 +++++
.../paimon/format/vortex/VortexTypeUtilsTest.java | 132 ++
paimon-vortex/paimon-vortex-jni/README.md | 89 ++
paimon-vortex/paimon-vortex-jni/pom.xml | 157 +++
.../src/main/java/dev/vortex/api/Array.java | 68 +
.../main/java/dev/vortex/api/ArrayIterator.java | 11 +-
.../src/main/java/dev/vortex/api/DType.java | 249 ++++
.../src/main/java/dev/vortex/api/Expression.java | 40 +-
.../src/main/java/dev/vortex/api/File.java | 15 +-
.../src/main/java/dev/vortex/api/Files.java | 39 +-
.../src/main/java/dev/vortex/api/ScanOptions.java | 28 +-
.../src/main/java/dev/vortex/api/VortexWriter.java | 34 +-
.../java/dev/vortex/api/expressions/Binary.java | 228 +++
.../java/dev/vortex/api/expressions/GetItem.java | 95 ++
.../java/dev/vortex/api/expressions/Literal.java | 733 ++++++++++
.../main/java/dev/vortex/api/expressions/Not.java | 91 ++
.../main/java/dev/vortex/api/expressions/Root.java | 44 +-
.../java/dev/vortex/api/expressions/Unknown.java | 38 +-
.../src/main/java/dev/vortex/api/proto/DTypes.java | 224 +++
.../java/dev/vortex/api/proto/EndianUtils.java | 74 +
.../java/dev/vortex/api/proto/Expressions.java | 81 ++
.../main/java/dev/vortex/api/proto/Scalars.java | 368 +++++
.../dev/vortex/api/proto/TemporalMetadatas.java | 93 ++
.../java/dev/vortex/arrow/ArrowAllocation.java | 22 +-
.../src/main/java/dev/vortex/jni/JNIArray.java | 168 +++
.../main/java/dev/vortex/jni/JNIArrayIterator.java | 76 +
.../src/main/java/dev/vortex/jni/JNIDType.java | 131 ++
.../src/main/java/dev/vortex/jni/JNIFile.java | 78 ++
.../src/main/java/dev/vortex/jni/JNIWriter.java | 63 +
.../dev/vortex/jni/NativeArrayIteratorMethods.java | 21 +-
.../java/dev/vortex/jni/NativeArrayMethods.java | 75 +
.../java/dev/vortex/jni/NativeDTypeMethods.java | 92 ++
.../java/dev/vortex/jni/NativeFileMethods.java | 45 +-
.../src/main/java/dev/vortex/jni/NativeLoader.java | 83 ++
.../main/java/dev/vortex/jni/NativeLogging.java | 24 +-
.../java/dev/vortex/jni/NativeWriterMethods.java | 25 +-
.../paimon-vortex-jni/src/main/proto/dtype.proto | 101 ++
.../paimon-vortex-jni/src/main/proto/expr.proto | 84 ++
.../paimon-vortex-jni/src/main/proto/scalar.proto | 37 +
.../src/main/resources/META-INF/NOTICE | 9 +
{paimon-service => paimon-vortex}/pom.xml | 11 +-
pom.xml | 4 +
253 files changed, 19777 insertions(+), 1804 deletions(-)
create mode 100644 .github/workflows/utitcase-rust-native.yml
delete mode 100644 docs/content/append-table/query-performance.md
delete mode 100644 docs/content/append-table/streaming.md
delete mode 100644 docs/content/append-table/update.md
create mode 100644 docs/content/learn-paimon/scenario-guide.md
create mode 100644 docs/content/pypaimon/fuse-support.md
create mode 100644 docs/content/pypaimon/pyjindosdk-support.md
copy
paimon-api/src/main/java/org/apache/paimon/rest/requests/{RollbackSchemaRequest.java
=> RenameBranchRequest.java} (75%)
copy
paimon-common/src/main/java/org/apache/paimon/predicate/{VectorSearch.java =>
FullTextSearch.java} (51%)
copy
paimon-common/src/test/java/org/apache/paimon/globalindex/{testvector/TestVectorGlobalIndexReader.java
=> testfulltext/TestFullTextGlobalIndexReader.java} (64%)
create mode 100644
paimon-common/src/test/java/org/apache/paimon/globalindex/testfulltext/TestFullTextGlobalIndexWriter.java
copy
paimon-lumina/src/main/java/org/apache/paimon/lumina/index/LuminaVectorGlobalIndexer.java
=>
paimon-common/src/test/java/org/apache/paimon/globalindex/testfulltext/TestFullTextGlobalIndexer.java
(62%)
copy
paimon-lumina/src/main/java/org/apache/paimon/lumina/index/LuminaVectorGlobalIndexerFactory.java
=>
paimon-common/src/test/java/org/apache/paimon/globalindex/testfulltext/TestFullTextGlobalIndexerFactory.java
(75%)
copy paimon-core/src/main/java/org/apache/paimon/table/{VectorSearchTable.java
=> FullTextSearchTable.java} (70%)
copy paimon-core/src/main/java/org/apache/paimon/table/{PartitionMarkDone.java
=> SchemaModification.java} (66%)
copy paimon-core/src/main/java/org/apache/paimon/table/source/{VectorRead.java
=> FullTextRead.java} (83%)
copy
paimon-core/src/main/java/org/apache/paimon/table/source/{VectorReadImpl.java
=> FullTextReadImpl.java} (65%)
copy paimon-core/src/main/java/org/apache/paimon/table/source/{VectorScan.java
=> FullTextScan.java} (85%)
create mode 100644
paimon-core/src/main/java/org/apache/paimon/table/source/FullTextScanImpl.java
copy paimon-core/src/main/java/org/apache/paimon/table/source/{VectorRead.java
=> FullTextSearchBuilder.java} (54%)
create mode 100644
paimon-core/src/main/java/org/apache/paimon/table/source/FullTextSearchBuilderImpl.java
create mode 100644
paimon-core/src/main/java/org/apache/paimon/table/source/FullTextSearchSplit.java
create mode 100644
paimon-core/src/main/java/org/apache/paimon/utils/ChainPartitionProjector.java
delete mode 100644
paimon-core/src/test/java/org/apache/paimon/globalindex/GlobalIndexBuilderUtilsTest.java
create mode 100644
paimon-core/src/test/java/org/apache/paimon/index/IndexFileHandlerTest.java
create mode 100644
paimon-core/src/test/java/org/apache/paimon/jdbc/JdbcClientPoolTest.java
create mode 100644
paimon-core/src/test/java/org/apache/paimon/table/source/FullTextSearchBuilderTest.java
create mode 100644
paimon-core/src/test/java/org/apache/paimon/utils/ChainPartitionProjectorTest.java
create mode 100644
paimon-core/src/test/java/org/apache/paimon/utils/FileSystemBranchManagerTest.java
create mode 100644
paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/lookup/PartitionRefresher.java
copy
paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/procedure/{DeleteTagProcedure.java
=> RenameBranchProcedure.java} (74%)
create mode 100644
paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/procedure/VectorSearchProcedure.java
create mode 100644
paimon-flink/paimon-flink-common/src/test/java/org/apache/paimon/flink/procedure/VectorSearchProcedureITCase.java
create mode 100644 paimon-python/NOTICE
create mode 100644 paimon-python/pypaimon/benchmark/clickbench_format.py
create mode 100644 paimon-python/pypaimon/catalog/rest/fuse_support.py
create mode 100644
paimon-python/pypaimon/filesystem/jindo_file_system_handler.py
copy paimon-python/pypaimon/read/reader/{format_pyarrow_reader.py =>
format_vortex_reader.py} (57%)
create mode 100644 paimon-python/pypaimon/read/reader/vortex_utils.py
create mode 100644 paimon-python/pypaimon/tests/jindo_file_system_test.py
create mode 100644 paimon-python/pypaimon/tests/oss_file_io_test.py
create mode 100644 paimon-python/pypaimon/tests/rest/test_fuse_local_path.py
copy
paimon-spark/paimon-spark-common/src/main/java/org/apache/paimon/spark/procedure/{DeleteBranchProcedure.java
=> RenameBranchProcedure.java} (74%)
copy
paimon-spark/paimon-spark-common/src/main/scala/org/apache/paimon/spark/{PaimonFormatTableScan.scala
=> read/ObjectTableScan.scala} (65%)
create mode 100644
paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/sql/FullTextSearchTest.scala
create mode 100644
paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/sql/WriteMergeSchemaWithRestCatalogTest.scala
create mode 100644
paimon-spark/paimon-spark-ut/src/test/scala/org/apache/paimon/spark/table/PaimonObjectTableTest.scala
create mode 100644 paimon-tantivy/paimon-tantivy-index/README.md
copy {paimon-vfs => paimon-tantivy/paimon-tantivy-index}/pom.xml (64%)
create mode 100644
paimon-tantivy/paimon-tantivy-index/src/main/java/org/apache/paimon/tantivy/index/TantivyFullTextGlobalIndexReader.java
create mode 100644
paimon-tantivy/paimon-tantivy-index/src/main/java/org/apache/paimon/tantivy/index/TantivyFullTextGlobalIndexWriter.java
copy
paimon-lumina/src/main/java/org/apache/paimon/lumina/index/LuminaVectorGlobalIndexer.java
=>
paimon-tantivy/paimon-tantivy-index/src/main/java/org/apache/paimon/tantivy/index/TantivyFullTextGlobalIndexer.java
(68%)
copy
paimon-lumina/src/main/java/org/apache/paimon/lumina/index/LuminaVectorGlobalIndexerFactory.java
=>
paimon-tantivy/paimon-tantivy-index/src/main/java/org/apache/paimon/tantivy/index/TantivyFullTextGlobalIndexerFactory.java
(79%)
copy
paimon-lumina/src/main/java/org/apache/paimon/lumina/index/LuminaScoredGlobalIndexResult.java
=>
paimon-tantivy/paimon-tantivy-index/src/main/java/org/apache/paimon/tantivy/index/TantivyScoredGlobalIndexResult.java
(79%)
copy {paimon-lumina =>
paimon-tantivy/paimon-tantivy-index}/src/main/resources/META-INF/services/org.apache.paimon.globalindex.GlobalIndexerFactory
(92%)
create mode 100644
paimon-tantivy/paimon-tantivy-index/src/test/java/org/apache/paimon/tantivy/index/TantivyFullTextGlobalIndexTest.java
create mode 100644 paimon-tantivy/paimon-tantivy-jni/README.md
copy {paimon-service/paimon-service-client =>
paimon-tantivy/paimon-tantivy-jni}/pom.xml (59%)
create mode 100644 paimon-tantivy/paimon-tantivy-jni/rust/Cargo.toml
create mode 100644 paimon-tantivy/paimon-tantivy-jni/rust/src/jni_directory.rs
create mode 100644 paimon-tantivy/paimon-tantivy-jni/rust/src/lib.rs
create mode 100644
paimon-tantivy/paimon-tantivy-jni/src/main/java/org/apache/paimon/tantivy/NativeLoader.java
copy
paimon-common/src/test/resources/codesplit/member/expected/TestNotRewriteMember.java
=>
paimon-tantivy/paimon-tantivy-jni/src/main/java/org/apache/paimon/tantivy/SearchResult.java
(63%)
copy paimon-core/src/main/java/org/apache/paimon/disk/BufferFileReader.java =>
paimon-tantivy/paimon-tantivy-jni/src/main/java/org/apache/paimon/tantivy/StreamFileInput.java
(71%)
create mode 100644
paimon-tantivy/paimon-tantivy-jni/src/main/java/org/apache/paimon/tantivy/TantivyIndexWriter.java
create mode 100644
paimon-tantivy/paimon-tantivy-jni/src/main/java/org/apache/paimon/tantivy/TantivySearcher.java
create mode 100644
paimon-tantivy/paimon-tantivy-jni/src/main/resources/META-INF/NOTICE
create mode 100644
paimon-tantivy/paimon-tantivy-jni/src/test/java/org/apache/paimon/tantivy/TantivyJniTest.java
create mode 100644
paimon-tantivy/paimon-tantivy-jni/src/test/java/org/apache/paimon/tantivy/TantivyStreamSearchTest.java
copy {paimon-service => paimon-tantivy}/pom.xml (85%)
copy {paimon-vfs => paimon-vortex/paimon-vortex-format}/pom.xml (65%)
copy {paimon-lance =>
paimon-vortex/paimon-vortex-format}/src/main/java/org/apache/arrow/memory/BoundsChecking.java
(100%)
copy
paimon-lance/src/main/java/org/apache/paimon/format/lance/LanceFileFormat.java
=>
paimon-vortex/paimon-vortex-format/src/main/java/org/apache/paimon/format/vortex/VortexFileFormat.java
(82%)
copy
paimon-format/src/main/java/org/apache/paimon/format/orc/OrcFileFormatFactory.java
=>
paimon-vortex/paimon-vortex-format/src/main/java/org/apache/paimon/format/vortex/VortexFileFormatFactory.java
(74%)
create mode 100644
paimon-vortex/paimon-vortex-format/src/main/java/org/apache/paimon/format/vortex/VortexPredicateConverter.java
create mode 100644
paimon-vortex/paimon-vortex-format/src/main/java/org/apache/paimon/format/vortex/VortexReaderFactory.java
create mode 100644
paimon-vortex/paimon-vortex-format/src/main/java/org/apache/paimon/format/vortex/VortexRecordsReader.java
copy
paimon-lance/src/main/java/org/apache/paimon/format/lance/LanceRecordsWriter.java
=>
paimon-vortex/paimon-vortex-format/src/main/java/org/apache/paimon/format/vortex/VortexRecordsWriter.java
(59%)
create mode 100644
paimon-vortex/paimon-vortex-format/src/main/java/org/apache/paimon/format/vortex/VortexTypeUtils.java
create mode 100644
paimon-vortex/paimon-vortex-format/src/main/java/org/apache/paimon/format/vortex/VortexUtils.java
copy
paimon-lance/src/main/java/org/apache/paimon/format/lance/LanceWriterFactory.java
=>
paimon-vortex/paimon-vortex-format/src/main/java/org/apache/paimon/format/vortex/VortexWriterFactory.java
(59%)
copy {paimon-lance =>
paimon-vortex/paimon-vortex-format}/src/main/resources/META-INF/services/org.apache.paimon.format.FileFormatFactory
(93%)
copy
paimon-lance/src/test/java/org/apache/paimon/format/lance/LanceFileFormatReadWriteTest.java
=>
paimon-vortex/paimon-vortex-format/src/test/java/org/apache/paimon/format/vortex/VortexFileFormatReadWriteTest.java
(61%)
create mode 100644
paimon-vortex/paimon-vortex-format/src/test/java/org/apache/paimon/format/vortex/VortexFileFormatTest.java
create mode 100644
paimon-vortex/paimon-vortex-format/src/test/java/org/apache/paimon/format/vortex/VortexPredicateConverterTest.java
create mode 100644
paimon-vortex/paimon-vortex-format/src/test/java/org/apache/paimon/format/vortex/VortexReaderWriterTest.java
create mode 100644
paimon-vortex/paimon-vortex-format/src/test/java/org/apache/paimon/format/vortex/VortexTypeUtilsTest.java
create mode 100644 paimon-vortex/paimon-vortex-jni/README.md
create mode 100644 paimon-vortex/paimon-vortex-jni/pom.xml
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/Array.java
copy paimon-common/src/test/java/org/apache/paimon/datagen/DataGenerator.java
=>
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/ArrayIterator.java
(77%)
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/DType.java
copy paimon-api/src/main/java/org/apache/paimon/function/Function.java =>
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/Expression.java
(52%)
copy
paimon-core/src/main/java/org/apache/paimon/operation/commit/SuccessCommitResult.java
=> paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/File.java (78%)
copy
paimon-api/src/main/java/org/apache/paimon/rest/auth/BearTokenAuthProvider.java
=> paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/Files.java (50%)
copy
paimon-core/src/main/java/org/apache/paimon/table/source/SnapshotNotExistPlan.java
=>
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/ScanOptions.java
(62%)
copy
paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/action/DeleteBranchAction.java
=>
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/VortexWriter.java
(54%)
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/expressions/Binary.java
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/expressions/GetItem.java
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/expressions/Literal.java
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/expressions/Not.java
copy paimon-common/src/main/java/org/apache/paimon/predicate/IsNull.java =>
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/expressions/Root.java
(51%)
copy
paimon-flink/paimon-flink-cdc/src/test/java/org/apache/paimon/flink/sink/cdc/TestCdcEventParser.java
=>
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/expressions/Unknown.java
(56%)
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/proto/DTypes.java
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/proto/EndianUtils.java
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/proto/Expressions.java
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/proto/Scalars.java
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/api/proto/TemporalMetadatas.java
copy
paimon-core/src/main/java/org/apache/paimon/io/FileWriterAbortExecutor.java =>
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/arrow/ArrowAllocation.java
(65%)
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/jni/JNIArray.java
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/jni/JNIArrayIterator.java
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/jni/JNIDType.java
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/jni/JNIFile.java
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/jni/JNIWriter.java
copy paimon-common/src/main/java/org/apache/paimon/sst/SortContext.java =>
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/jni/NativeArrayIteratorMethods.java
(68%)
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/jni/NativeArrayMethods.java
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/jni/NativeDTypeMethods.java
copy
paimon-flink/paimon-flink-common/src/main/java/org/apache/paimon/flink/sink/NoneCopyVersionedSerializerTypeSerializerProxy.java
=>
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/jni/NativeFileMethods.java
(52%)
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/jni/NativeLoader.java
copy
paimon-common/src/main/java/org/apache/paimon/casting/AbstractCastRule.java =>
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/jni/NativeLogging.java
(63%)
copy paimon-common/src/main/java/org/apache/paimon/utils/MapBuilder.java =>
paimon-vortex/paimon-vortex-jni/src/main/java/dev/vortex/jni/NativeWriterMethods.java
(66%)
create mode 100644 paimon-vortex/paimon-vortex-jni/src/main/proto/dtype.proto
create mode 100644 paimon-vortex/paimon-vortex-jni/src/main/proto/expr.proto
create mode 100644 paimon-vortex/paimon-vortex-jni/src/main/proto/scalar.proto
create mode 100644
paimon-vortex/paimon-vortex-jni/src/main/resources/META-INF/NOTICE
copy {paimon-service => paimon-vortex}/pom.xml (85%)