Skip to content

Commit 013ee55

Browse files
authored
Merge branch 'main' into feature-load_table_schema
2 parents 5bf24f3 + 967ae4f commit 013ee55

File tree

167 files changed

+3171
-1259
lines changed

Some content is hidden

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

167 files changed

+3171
-1259
lines changed

.github/.rat-excludes

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
build/*
2+
build-debug/*
3+
build-release/*
4+
test_data/*
5+
third_party/*
6+
build_support/*
7+
scripts/*
8+
cmake_modules/*
9+
.codespell_ignore
10+
.gitignore
11+
rat-report.txt
12+
requirements.txt
13+
.gitattributes
14+
.*\.svg$

.github/workflows/build_docs.yaml

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# Copyright 2025-present Alibaba Inc.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
name: "Publish Docs"
16+
17+
on:
18+
push:
19+
branches:
20+
- main
21+
paths:
22+
- 'apidoc/**'
23+
- 'docs/**'
24+
- 'src/**'
25+
- 'include/**'
26+
27+
concurrency:
28+
group: ${{ github.workflow }}-${{ github.ref }}
29+
cancel-in-progress: false
30+
31+
permissions:
32+
contents: write
33+
34+
jobs:
35+
docs:
36+
runs-on: ubuntu-24.04
37+
38+
steps:
39+
- uses: actions/[email protected]
40+
with:
41+
fetch-depth: 1
42+
43+
- uses: actions/setup-python@v6
44+
with:
45+
python-version: '3.x'
46+
47+
- name: Install dependencies
48+
run: |
49+
sudo apt-get update
50+
sudo apt-get install -y doxygen
51+
pip install -r docs/requirements.txt
52+
53+
- name: Build API
54+
run: |
55+
cd ./apidoc
56+
doxygen
57+
cd -
58+
59+
- name: Build Docs
60+
run: |
61+
cd docs
62+
make html
63+
mkdir -p /tmp/site
64+
cp -r ./_build/html/* /tmp/site/
65+
cd -
66+
touch .nojekyll
67+
68+
- name: Deploy to gh-pages
69+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
70+
run: |
71+
git config --global user.name 'GitHub Actions'
72+
git config --global user.email '[email protected]'
73+
74+
git checkout --orphan gh-pages-tmp
75+
git rm --quiet -rf .
76+
cp -r /tmp/site/* .
77+
git add --all
78+
git commit -m "Publish docs from commit ${{ github.sha }}"
79+
git push -f origin gh-pages-tmp:gh-pages

.github/workflows/clang_test.yaml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Copyright 2025-present Alibaba Inc.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
name: Clang Test
16+
17+
on:
18+
push:
19+
branches:
20+
- '**'
21+
tags:
22+
- '**'
23+
pull_request:
24+
25+
concurrency:
26+
group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }}
27+
cancel-in-progress: true
28+
29+
permissions:
30+
contents: read
31+
32+
jobs:
33+
ubuntu:
34+
name: AMD64 Ubuntu 24.04
35+
runs-on: ubuntu-24.04
36+
timeout-minutes: 120
37+
strategy:
38+
fail-fast: false
39+
steps:
40+
- name: Checkout paimon-cpp
41+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
42+
with:
43+
lfs: true
44+
- name: Build Paimon
45+
shell: bash
46+
env:
47+
CC: clang
48+
CXX: clang++
49+
run: ci/scripts/build_paimon.sh $(pwd)

.github/workflows/gcc_test.yaml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Copyright 2024-present Alibaba Inc.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
name: Gcc Test
16+
17+
on:
18+
push:
19+
branches:
20+
- '**'
21+
tags:
22+
- '**'
23+
pull_request:
24+
25+
concurrency:
26+
group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }}
27+
cancel-in-progress: true
28+
29+
permissions:
30+
contents: read
31+
32+
jobs:
33+
ubuntu:
34+
name: AMD64 Ubuntu 24.04
35+
runs-on: ubuntu-24.04
36+
timeout-minutes: 120
37+
strategy:
38+
fail-fast: false
39+
steps:
40+
- name: Checkout paimon-cpp
41+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
42+
with:
43+
lfs: true
44+
- name: Build Paimon
45+
shell: bash
46+
env:
47+
CC: gcc-14
48+
CXX: g++-14
49+
run: ci/scripts/build_paimon.sh $(pwd)
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Copyright 2025-present Alibaba Inc.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
name: License Check
16+
17+
on:
18+
pull_request:
19+
push:
20+
branches:
21+
- main
22+
23+
jobs:
24+
rat-check:
25+
runs-on: ubuntu-latest
26+
27+
steps:
28+
- name: Checkout code
29+
uses: actions/checkout@v4
30+
31+
- name: Set up Java
32+
uses: actions/setup-java@v4
33+
with:
34+
distribution: 'temurin'
35+
java-version: '17'
36+
37+
- name: Download Apache Rat jar
38+
run: |
39+
wget https://repo1.maven.org/maven2/org/apache/rat/apache-rat/0.16.1/apache-rat-0.16.1.jar -O rat.jar
40+
41+
- name: Run Apache Rat
42+
run: |
43+
java -jar rat.jar -E .github/.rat-excludes -d . > rat-report.txt
44+
- name: Check for Unapproved Licenses
45+
run: |
46+
if grep "Files with unapproved licenses" rat-report.txt; then
47+
echo "❌ Found files with unapproved licenses!"
48+
cat rat-report.txt
49+
exit 1
50+
else
51+
echo "✅ All files have approved licenses."
52+
cat rat-report.txt
53+
fi

.github/workflows/pre-commit.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2024-present Alibaba Inc.
1+
# Copyright 2025-present Alibaba Inc.
22
#
33
# Licensed under the Apache License, Version 2.0 (the "License");
44
# you may not use this file except in compliance with the License.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Copyright 2025-present Alibaba Inc.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
name: Test with sanitizer
16+
17+
on:
18+
push:
19+
branches:
20+
- '**'
21+
tags:
22+
- '**'
23+
pull_request:
24+
25+
concurrency:
26+
group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }}
27+
cancel-in-progress: true
28+
29+
permissions:
30+
contents: read
31+
32+
jobs:
33+
ubuntu:
34+
name: AMD64 Ubuntu 24.04
35+
runs-on: ubuntu-24.04
36+
timeout-minutes: 120
37+
strategy:
38+
fail-fast: false
39+
steps:
40+
- name: Checkout paimon-cpp
41+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
42+
with:
43+
lfs: true
44+
- name: Build Paimon
45+
shell: bash
46+
env:
47+
CC: clang
48+
CXX: clang++
49+
run: ci/scripts/build_paimon.sh $(pwd) true

.pre-commit-config.yaml

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ repos:
4343
exclude: (^test/test_data/.*|^third_party/.*)
4444

4545
- repo: https://github.com/cheshirekow/cmake-format-precommit
46-
rev: v0.6.10
46+
rev: v0.6.13
4747
hooks:
4848
- id: cmake-format
4949
exclude: (^test/test_data/.*|^third_party/.*)
@@ -67,3 +67,23 @@ repos:
6767
'--disable',
6868
'dangling-hyphen,line-too-long',
6969
]
70+
71+
- repo: https://github.com/cpplint/cpplint
72+
rev: 1.6.1
73+
hooks:
74+
- id: cpplint
75+
alias: cpp
76+
name: C++ Lint
77+
args:
78+
- "--quiet"
79+
- "--verbose=2"
80+
- "--filter=-whitespace/line_length,-whitespace/parens,-build/c++11,-readability/nolint,-runtime/references"
81+
82+
types_or:
83+
- c++
84+
exclude: |
85+
(?x)^(
86+
(third_party)/.*|
87+
(test)/.*|
88+
(src)/.*
89+
)$

CMakeLists.txt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ option(PAIMON_BUILD_STATIC "Build static library" ON)
4646
option(PAIMON_BUILD_SHARED "Build shared library" ON)
4747
option(PAIMON_BUILD_TESTS "Build tests" OFF)
4848
option(PAIMON_USE_ASAN "Use Address Sanitizer" OFF)
49-
option(PAIMON_USE_TSAN "Use Thread Sanitizer" OFF)
5049
option(PAIMON_USE_UBSAN "Use Undefined Behavior Sanitizer" OFF)
5150
option(PAIMON_ENABLE_AVRO "Whether to enable avro file format" ON)
5251
option(PAIMON_ENABLE_ORC "Whether to enable orc file format" ON)
@@ -331,23 +330,35 @@ if(PAIMON_BUILD_TESTS)
331330
paimon_global_index_static
332331
paimon_local_file_system_static
333332
paimon_mock_file_format_static
333+
-Wl,--no-as-needed
334334
paimon_parquet_file_format_shared
335-
paimon_blob_file_format_shared)
335+
paimon_blob_file_format_shared
336+
-Wl,--as-needed)
336337

337338
if(PAIMON_ENABLE_LANCE)
339+
list(APPEND TEST_STATIC_LINK_LIBS -Wl,--no-as-needed)
338340
list(APPEND TEST_STATIC_LINK_LIBS paimon_lance_file_format_shared)
341+
list(APPEND TEST_STATIC_LINK_LIBS -Wl,--as-needed)
339342
endif()
340343
if(PAIMON_ENABLE_ORC)
344+
list(APPEND TEST_STATIC_LINK_LIBS -Wl,--no-as-needed)
341345
list(APPEND TEST_STATIC_LINK_LIBS paimon_orc_file_format_shared)
346+
list(APPEND TEST_STATIC_LINK_LIBS -Wl,--as-needed)
342347
endif()
343348
if(PAIMON_ENABLE_AVRO)
349+
list(APPEND TEST_STATIC_LINK_LIBS -Wl,--no-as-needed)
344350
list(APPEND TEST_STATIC_LINK_LIBS paimon_avro_file_format_shared)
351+
list(APPEND TEST_STATIC_LINK_LIBS -Wl,--as-needed)
345352
endif()
346353
if(PAIMON_ENABLE_JINDO)
354+
list(APPEND TEST_STATIC_LINK_LIBS -Wl,--no-as-needed)
347355
list(APPEND TEST_STATIC_LINK_LIBS paimon_jindo_file_system_shared)
356+
list(APPEND TEST_STATIC_LINK_LIBS -Wl,--as-needed)
348357
endif()
349358
if(PAIMON_ENABLE_LUMINA)
359+
list(APPEND TEST_STATIC_LINK_LIBS -Wl,--no-as-needed)
350360
list(APPEND TEST_STATIC_LINK_LIBS paimon_lumina_index_shared)
361+
list(APPEND TEST_STATIC_LINK_LIBS -Wl,--as-needed)
351362
endif()
352363

353364
endif()

0 commit comments

Comments
 (0)