Skip to content

Commit 72631ca

Browse files
authored
Merge branch 'main' into feature-load_table_schema
2 parents 5d70a17 + e9d4abc commit 72631ca

File tree

378 files changed

+4165
-1758
lines changed

Some content is hidden

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

378 files changed

+4165
-1758
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: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
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+
- 'include/**'
25+
26+
concurrency:
27+
group: ${{ github.workflow }}-${{ github.ref }}
28+
cancel-in-progress: false
29+
30+
permissions:
31+
contents: write
32+
33+
jobs:
34+
docs:
35+
runs-on: ubuntu-24.04
36+
37+
steps:
38+
- uses: actions/[email protected]
39+
with:
40+
fetch-depth: 1
41+
42+
- uses: actions/setup-python@v6
43+
with:
44+
python-version: '3.x'
45+
46+
- name: Install dependencies
47+
run: |
48+
sudo apt-get update
49+
sudo apt-get install -y doxygen
50+
pip install -r docs/requirements.txt
51+
52+
- name: Build API
53+
run: |
54+
cd ./apidoc
55+
doxygen
56+
cd -
57+
58+
- name: Build Docs
59+
run: |
60+
cd docs
61+
make html
62+
mkdir -p /tmp/site
63+
cp -r ./_build/html/* /tmp/site/
64+
cd -
65+
touch .nojekyll
66+
67+
- name: Deploy to gh-pages
68+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
69+
run: |
70+
git config --global user.name 'GitHub Actions'
71+
git config --global user.email '[email protected]'
72+
73+
git checkout --orphan gh-pages-tmp
74+
git rm --quiet -rf .
75+
cp -r /tmp/site/* .
76+
git add --all
77+
git commit -m "Publish docs from commit ${{ github.sha }}"
78+
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: 19 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,21 @@ 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+
)$

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)