Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
53e1db0
fix(cpp): audit third-party dependency metadata
ColinLeeo Aug 12, 2026
b5f39bd
feat(cpp): add dependency source selection framework
ColinLeeo Aug 12, 2026
32a92c2
feat(cpp): support system and bundled LZ4
ColinLeeo Aug 13, 2026
6337e67
feat(cpp): migrate zlib dependency sourcing
ColinLeeo Aug 13, 2026
4dcb7e8
feat(cpp): migrate lzokay dependency sourcing
ColinLeeo Aug 13, 2026
79adbae
feat(cpp): migrate Snappy dependency sourcing
ColinLeeo Aug 13, 2026
f569c76
feat(cpp): migrate SIMDe dependency sourcing
ColinLeeo Aug 13, 2026
95e18ea
feat(cpp): migrate ANTLR4 dependency sourcing
ColinLeeo Aug 13, 2026
353961c
feat(cpp): migrate Zstandard dependency sourcing
ColinLeeo Aug 13, 2026
465841c
feat(cpp): migrate liblzma dependency sourcing
ColinLeeo Aug 13, 2026
e7aa95d
feat(cpp): add Zstandard and LZMA2 compression
ColinLeeo Aug 14, 2026
fbdbdb4
feat(cpp): add CHIMP RLBE and CAMEL encoding
ColinLeeo Aug 14, 2026
b366095
test: add Java and C++ codec compatibility coverage
ColinLeeo Aug 14, 2026
b00ab60
build(cpp): upgrade bundled Snappy to 1.2.2
ColinLeeo Aug 14, 2026
f2608b3
ci(cpp): validate dependency source modes
ColinLeeo Aug 14, 2026
d96a411
ci(cpp): make dependency builds deterministic
ColinLeeo Aug 14, 2026
14f6574
fix(cpp): normalize ANTLR patch hashes on Windows
ColinLeeo Aug 14, 2026
b154223
fix(ci): address remote C++ workflow failures
ColinLeeo Aug 14, 2026
91586cd
fix(cpp): resolve system ANTLR utf8cpp target
ColinLeeo Aug 14, 2026
e1b64ab
fix(cpp): inherit generator in dependency tests
ColinLeeo Aug 17, 2026
25e079e
fix(cpp): preserve legacy CMake compatibility
ColinLeeo Aug 18, 2026
53b4ec4
fix(ci): tolerate wrapped CMake errors
ColinLeeo Aug 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 3 additions & 1 deletion .github/workflows/code-coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ jobs:
- name: Generate code coverage reports
run: |
sudo apt-get install lcov
./mvnw -B -P with-java,with-cpp,with-code-coverage clean verify -Dspotless.skip=true
./mvnw -B -P with-java,with-cpp,with-code-coverage clean verify \
-Denable.lzma2=ON \
-Dspotless.skip=true
lcov --capture --directory cpp/target/build/test --output-file cpp/target/build/test/coverage.info
lcov --remove cpp/target/build/test/coverage.info '*/tsfile/cpp/test/*' --output-file cpp/target/build/test/coverage_filtered.info
genhtml cpp/target/build/test/coverage_filtered.info --output-directory cpp/target/build/test/coverage_report
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ jobs:
- name: Manual build
if: matrix.build-mode == 'manual'
run: |
.\mvnw.cmd clean package -P with-cpp
.\mvnw.cmd clean package -P with-cpp -Denable.lzma2=ON

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4.37.3
Expand Down
222 changes: 222 additions & 0 deletions .github/workflows/compatibility-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,222 @@
# 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
#
# https://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.

name: Compatibility-Test

on:
push:
branches:
- develop
- iotdb
- rc/*
paths:
- '.github/workflows/compatibility-test.yml'
- '.mvn/**'
- 'cpp/**'
- 'java/**'
- 'mvnw'
- 'pom.xml'
pull_request:
branches:
- develop
- dev/*
- iotdb
- rc/*
paths:
- '.github/workflows/compatibility-test.yml'
- '.mvn/**'
- 'cpp/**'
- 'java/**'
- 'mvnw'
- 'pom.xml'
workflow_dispatch:
inputs:
forceUpdates:
description: "Forces a snapshot update"
required: false
default: 'false'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

env:
MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}

jobs:
generate-fixtures:
name: Generate ${{ matrix.language }} fixtures
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
language: [ java, cpp ]
steps:
- name: Checkout repository
uses: actions/checkout@v7

- name: Set up JDK 17
uses: actions/setup-java@v5.6.0
with:
distribution: corretto
java-version: 17

- name: Cache Maven packages
uses: actions/cache@v6
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2-

- name: Cache verified C++ dependency archives
if: matrix.language == 'cpp'
uses: actions/cache@v6
with:
path: cpp/target/dependency-cache
key: ${{ runner.os }}-tsfile-cpp-deps-${{ hashFiles('cpp/CMakeLists.txt', 'cpp/cmake/*Source.cmake', 'cpp/third_party/CMakeLists.txt') }}

- name: Generate Java table fixtures
if: matrix.language == 'java'
shell: bash
run: |
mkdir -p compat-fixtures/java
./mvnw -P with-java \
-Dtest=TableModelEncodingCompressionCompatibilityTest#generateFixtures \
-Dsurefire.failIfNoSpecifiedTests=false \
-Dtsfile.compat.generate.dir="$PWD/compat-fixtures/java" \
test

- name: Build C++ tests
if: matrix.language == 'cpp'
shell: bash
run: |
./mvnw -P with-cpp \
-Dbuild.type=Release \
-DskipTests \
-Dspotless.skip=true \
-Dtsfile.dependency.source=BUNDLED \
-Denable.antlr4=OFF \
-Denable.snappy=OFF \
-Denable.lz4=ON \
-Denable.lzokay=OFF \
-Denable.zlib=OFF \
-Denable.zstd=ON \
-Denable.lzma2=ON \
-Denable.simd=OFF \
package

- name: Generate C++ table fixtures
if: matrix.language == 'cpp'
shell: bash
run: |
mkdir -p compat-fixtures/cpp
TSFILE_COMPAT_GENERATE_DIR="$PWD/compat-fixtures/cpp" \
./cpp/target/build/test/lib/TsFile_Test \
--gtest_filter=TableModelEncodingCompressionCompatibilityTest.GenerateFixtures

- name: Upload ${{ matrix.language }} fixtures
uses: actions/upload-artifact@v7
with:
name: tsfile-${{ matrix.language }}-compat-fixtures
path: compat-fixtures/${{ matrix.language }}/
if-no-files-found: error
retention-days: 1

validate-fixtures:
name: Validate ${{ matrix.writer }} fixtures with ${{ matrix.reader }}
needs: generate-fixtures
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
include:
- writer: java
reader: cpp
- writer: cpp
reader: java
steps:
- name: Checkout repository
uses: actions/checkout@v7

- name: Set up JDK 17
uses: actions/setup-java@v5.6.0
with:
distribution: corretto
java-version: 17

- name: Cache Maven packages
uses: actions/cache@v6
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2-

- name: Cache verified C++ dependency archives
if: matrix.reader == 'cpp'
uses: actions/cache@v6
with:
path: cpp/target/dependency-cache
key: ${{ runner.os }}-tsfile-cpp-deps-${{ hashFiles('cpp/CMakeLists.txt', 'cpp/cmake/*Source.cmake', 'cpp/third_party/CMakeLists.txt') }}

- name: Download ${{ matrix.writer }} fixtures
uses: actions/download-artifact@v8
with:
name: tsfile-${{ matrix.writer }}-compat-fixtures
path: compat-fixtures/${{ matrix.writer }}

- name: Validate ${{ matrix.writer }} fixtures with Java
if: matrix.reader == 'java'
shell: bash
run: |
./mvnw -P with-java \
-Dtest=TableModelEncodingCompressionCompatibilityTest#validateFixtures \
-Dsurefire.failIfNoSpecifiedTests=false \
-Dtsfile.compat.validate.dir="$PWD/compat-fixtures/${{ matrix.writer }}" \
test

- name: Build C++ tests
if: matrix.reader == 'cpp'
shell: bash
run: |
./mvnw -P with-cpp \
-Dbuild.type=Release \
-DskipTests \
-Dspotless.skip=true \
-Dtsfile.dependency.source=BUNDLED \
-Denable.antlr4=OFF \
-Denable.snappy=OFF \
-Denable.lz4=ON \
-Denable.lzokay=OFF \
-Denable.zlib=OFF \
-Denable.zstd=ON \
-Denable.lzma2=ON \
-Denable.simd=OFF \
package

- name: Validate ${{ matrix.writer }} fixtures with C++
if: matrix.reader == 'cpp'
shell: bash
run: |
TSFILE_COMPAT_VALIDATE_DIR="$PWD/compat-fixtures/${{ matrix.writer }}" \
./cpp/target/build/test/lib/TsFile_Test \
--gtest_filter=TableModelEncodingCompressionCompatibilityTest.ValidateFixtures
Loading
Loading