Skip to content

Commit e71ec78

Browse files
author
wangyong.alen
committed
chore: merge latest main into PK index maintenance
2 parents c36c253 + 64434c2 commit e71ec78

390 files changed

Lines changed: 21776 additions & 2842 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build_and_test.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ jobs:
7575
- name: asan-ubsan-x86_64
7676
build_args: --enable_asan --enable_ubsan
7777
- name: tsan-x86_64
78-
skip_rust: true
7978
build_args: --enable_tsan
8079
- name: gcc-debug-aarch64
8180
runner: ubuntu-24.04-arm
@@ -96,7 +95,6 @@ jobs:
9695
build_args: --build_type Release
9796
- name: tsan-aarch64
9897
runner: ubuntu-24.04-arm
99-
skip_rust: true
10098
build_args: --enable_tsan
10199
steps:
102100
- name: Checkout paimon-cpp
@@ -108,8 +106,7 @@ jobs:
108106
uses: ./.github/actions/setup-ccache
109107
with:
110108
cache-key-prefix: ccache-${{ matrix.name }}
111-
- name: Install Rust toolchain (tantivy-fts)
112-
if: ${{ !matrix.skip_rust }}
109+
- name: Install Rust toolchain (Mosaic and tantivy-fts)
113110
shell: bash
114111
run: ci/scripts/setup_rust.sh
115112
- name: Install HTTP and TLS development dependencies

.github/workflows/gcc8_test.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ jobs:
6060
ls -la
6161
- name: Checkout paimon-cpp
6262
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
63+
- name: Install Rust toolchain (Mosaic)
64+
shell: bash
65+
run: ci/scripts/setup_rust.sh
6366
- name: Setup ccache
6467
uses: ./.github/actions/setup-ccache
6568
with:

.github/workflows/release_candidate.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ jobs:
131131
name: source-archive
132132
path: release/ci
133133

134-
- name: Install Rust toolchain (tantivy-fts)
134+
- name: Install Rust toolchain (Mosaic and tantivy-fts)
135135
shell: bash
136136
run: ci/scripts/setup_rust.sh
137137

CMakeLists.txt

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ option(PAIMON_USE_UBSAN "Use Undefined Behavior Sanitizer" OFF)
6060
option(PAIMON_USE_CXX11_ABI "Use C++11 ABI" ON)
6161
option(PAIMON_ENABLE_AVRO "Whether to enable avro file format" ON)
6262
option(PAIMON_ENABLE_ORC "Whether to enable orc file format" ON)
63+
option(PAIMON_ENABLE_MOSAIC "Whether to enable mosaic file format (Rust FFI)" OFF)
6364
option(PAIMON_ENABLE_JINDO "Whether to enable jindo file system" OFF)
65+
option(PAIMON_ENABLE_OSS "Whether to enable OSS SDK v2 file system" OFF)
6466
option(PAIMON_ENABLE_S3 "Whether to enable S3 file system" OFF)
6567
option(PAIMON_ENABLE_NETWORK_TESTS
6668
"Whether to enable tests that access real remote services over the network" OFF)
@@ -76,8 +78,10 @@ endif()
7678
if(PAIMON_ENABLE_REST)
7779
add_definitions(-DPAIMON_ENABLE_REST)
7880
endif()
79-
# libcurl backs the HTTP client shared by the S3 file system and the rest catalog.
80-
if(PAIMON_ENABLE_S3 OR PAIMON_ENABLE_REST)
81+
# libcurl supports the REST and S3 HTTP clients, the OSS SDK transport, and object store timestamps.
82+
if(PAIMON_ENABLE_OSS
83+
OR PAIMON_ENABLE_S3
84+
OR PAIMON_ENABLE_REST)
8185
find_package(CURL REQUIRED)
8286
endif()
8387
if(PAIMON_ENABLE_REST)
@@ -86,9 +90,15 @@ endif()
8690
if(PAIMON_ENABLE_AVRO)
8791
add_definitions(-DPAIMON_ENABLE_AVRO)
8892
endif()
93+
if(PAIMON_ENABLE_MOSAIC)
94+
add_definitions(-DPAIMON_ENABLE_MOSAIC)
95+
endif()
8996
if(PAIMON_ENABLE_JINDO)
9097
add_definitions(-DPAIMON_ENABLE_JINDO)
9198
endif()
99+
if(PAIMON_ENABLE_OSS)
100+
add_definitions(-DPAIMON_ENABLE_OSS)
101+
endif()
92102
if(PAIMON_ENABLE_S3)
93103
add_definitions(-DPAIMON_ENABLE_S3)
94104
endif()
@@ -388,6 +398,11 @@ if(PAIMON_BUILD_TESTS OR PAIMON_BUILD_BENCHMARKS)
388398
paimon_link_libraries_whole_archive(PAIMON_PARQUET_FILE_FORMAT_STATIC_LINK_LIBS
389399
paimon_parquet_file_format_static)
390400
401+
if(PAIMON_ENABLE_MOSAIC)
402+
paimon_link_libraries_whole_archive(PAIMON_MOSAIC_FILE_FORMAT_STATIC_LINK_LIBS
403+
paimon_mosaic_file_format_static)
404+
endif()
405+
391406
if(PAIMON_ENABLE_ORC)
392407
paimon_link_libraries_whole_archive(PAIMON_ORC_FILE_FORMAT_STATIC_LINK_LIBS
393408
paimon_orc_file_format_static)
@@ -439,6 +454,14 @@ if(PAIMON_BUILD_TESTS)
439454
paimon_link_libraries_whole_archive(PAIMON_PARQUET_FILE_FORMAT_STATIC_LINK_LIBS
440455
paimon_parquet_file_format_static)
441456
457+
if(PAIMON_ENABLE_MOSAIC)
458+
paimon_link_libraries_no_as_needed(TEST_PLUGIN_LINK_LIBS
459+
paimon_mosaic_file_format_shared)
460+
list(APPEND TEST_STATIC_LINK_LIBS ${TEST_PLUGIN_LINK_LIBS})
461+
paimon_link_libraries_whole_archive(PAIMON_MOSAIC_FILE_FORMAT_STATIC_LINK_LIBS
462+
paimon_mosaic_file_format_static)
463+
endif()
464+
442465
if(PAIMON_ENABLE_ORC)
443466
paimon_link_libraries_no_as_needed(TEST_PLUGIN_LINK_LIBS
444467
paimon_orc_file_format_shared)
@@ -456,6 +479,13 @@ if(PAIMON_BUILD_TESTS)
456479
paimon_jindo_file_system_shared)
457480
list(APPEND TEST_STATIC_LINK_LIBS ${TEST_PLUGIN_LINK_LIBS})
458481
endif()
482+
if(PAIMON_ENABLE_OSS)
483+
paimon_link_libraries_whole_archive(PAIMON_OSS_FILE_SYSTEM_STATIC_LINK_LIBS
484+
paimon_oss_file_system_static)
485+
paimon_link_libraries_no_as_needed(TEST_PLUGIN_LINK_LIBS
486+
paimon_oss_file_system_shared)
487+
list(APPEND TEST_STATIC_LINK_LIBS ${TEST_PLUGIN_LINK_LIBS})
488+
endif()
459489
if(PAIMON_ENABLE_S3)
460490
paimon_link_libraries_whole_archive(PAIMON_S3_FILE_SYSTEM_STATIC_LINK_LIBS
461491
paimon_s3_file_system_static)
@@ -515,11 +545,15 @@ add_subdirectory(src/paimon/fs/local)
515545
if(PAIMON_ENABLE_JINDO)
516546
add_subdirectory(src/paimon/fs/jindo)
517547
endif()
548+
add_subdirectory(src/paimon/fs/oss)
518549
add_subdirectory(src/paimon/fs/s3)
519550
add_subdirectory(src/paimon/format/blob)
520551
add_subdirectory(src/paimon/format/orc)
521552
add_subdirectory(src/paimon/format/parquet)
522553
add_subdirectory(src/paimon/format/avro)
554+
if(PAIMON_ENABLE_MOSAIC)
555+
add_subdirectory(src/paimon/format/mosaic)
556+
endif()
523557
if(PAIMON_ENABLE_LUMINA)
524558
add_subdirectory(src/paimon/global_index/lumina)
525559
endif()

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Paimon C++ currently provides:
3535
- **Scan**: batch and stream scan for append tables and primary key tables without changelog.
3636
- **Read**: append table read, primary key table read with deletion vector, and primary key table merge-on-read.
3737
- **Arrow integration**: batch read and write interfaces based on the [Arrow Columnar In-Memory Format](https://arrow.apache.org).
38-
- **File systems**: file system abstraction with built-in local and Jindo file system support.
38+
- **File systems**: file system abstraction with built-in local, Jindo, OSS, and S3 file system support.
3939
- **File formats**: file format abstraction with built-in ORC, Parquet, and Avro support.
4040
- **Runtime utilities**: memory pool and thread pool abstractions with default implementations.
4141
- **AI-Oriented Features**: supports RowTracking and DataEvolution mode and provides Global Index

benchmark/CMakeLists.txt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,20 @@ if(PAIMON_BUILD_BENCHMARKS)
6363
${PAIMON_BENCHMARK_LINK_TOOLCHAIN}
6464
EXTRA_INCLUDES
6565
${CMAKE_SOURCE_DIR})
66+
67+
add_paimon_benchmark(parquet_format_benchmark
68+
SOURCES
69+
parquet_format_benchmark.cpp
70+
STATIC_LINK_LIBS
71+
arrow
72+
parquet
73+
${PAIMON_BENCHMARK_STATIC_LINK_LIBS}
74+
test_utils_static
75+
Threads::Threads
76+
${PAIMON_BENCHMARK_PLATFORM_LINK_LIBS}
77+
${PAIMON_BENCHMARK_LINK_TOOLCHAIN}
78+
EXTRA_INCLUDES
79+
${CMAKE_SOURCE_DIR})
6680
endif()
6781

6882
if(PAIMON_BUILD_TESTS)
@@ -74,4 +88,21 @@ if(PAIMON_BUILD_TESTS)
7488
STATIC_LINK_LIBS
7589
paimon_shared
7690
${GTEST_LINK_TOOLCHAIN})
91+
92+
# Guards the format-layer assumptions parquet_format_benchmark.cpp is built on. The benchmark
93+
# itself is only compiled under PAIMON_BUILD_BENCHMARKS, which CI does not set, so this test is
94+
# what keeps those assumptions covered.
95+
add_paimon_test(parquet_format_benchmark_test
96+
SOURCES
97+
parquet_format_benchmark_test.cpp
98+
EXTRA_INCLUDES
99+
${CMAKE_SOURCE_DIR}
100+
STATIC_LINK_LIBS
101+
arrow
102+
parquet
103+
paimon_shared
104+
${PAIMON_LOCAL_FILE_SYSTEM_SHARED_LINK_LIBS}
105+
${PAIMON_PARQUET_FILE_FORMAT_STATIC_LINK_LIBS}
106+
test_utils_static
107+
${GTEST_LINK_TOOLCHAIN})
77108
endif()

0 commit comments

Comments
 (0)