Skip to content

Merge branch 'duckdb:main' into CastToUUID #72

Merge branch 'duckdb:main' into CastToUUID

Merge branch 'duckdb:main' into CastToUUID #72

Workflow file for this run

name: Main
on:
workflow_dispatch:
repository_dispatch:
push:
branches-ignore:
- 'main'
- 'feature'
- 'v*.*-*'
paths-ignore:
- '**.md'
- 'tools/**'
- '!tools/shell/**'
- '.github/patches/duckdb-wasm/**'
- '.github/workflows/**'
- '!.github/workflows/Main.yml'
- '.github/config/out_of_tree_extensions.cmake'
merge_group:
pull_request:
types: [opened, reopened, ready_for_review, converted_to_draft]
paths-ignore:
- '**.md'
- 'tools/**'
- '!tools/shell/**'
- '.github/patches/duckdb-wasm/**'
- '.github/workflows/**'
- '!.github/workflows/Main.yml'
- '.github/config/out_of_tree_extensions.cmake'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.head_ref || '' }}-${{ github.base_ref || '' }}-${{ github.ref != 'refs/heads/main' || github.sha }}
cancel-in-progress: true
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
jobs:
check-draft:
# We run all other jobs on PRs only if they are not draft PR
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false
runs-on: ubuntu-24.04
steps:
- name: Preliminary checks on CI
run: echo "Event name is ${{ github.event_name }}"
linux-debug:
name: Linux Debug
# This tests release build while enabling slow verifiers (masked by #ifdef DEBUG) and sanitizers
needs: check-draft
runs-on: ubuntu-22.04
env:
CC: gcc-10
CXX: g++-10
TREAT_WARNINGS_AS_ERRORS: 1
GEN: ninja
CRASH_ON_ASSERT: 1
CMAKE_CXX_FLAGS: '-DDEBUG'
FORCE_ASSERT: 1
steps:
- uses: actions/checkout@v4
- id: describe_step
run: echo "git_describe=$(git describe --tags --long)" >> "$GITHUB_OUTPUT"
- name: Install
shell: bash
run: sudo apt-get update -y -qq && sudo apt-get install -y -qq ninja-build
- name: Setup Ccache
uses: hendrikmuhs/ccache-action@main
with:
key: ${{ github.job }}
save: ${{ vars.BRANCHES_TO_BE_CACHED == '' || contains(vars.BRANCHES_TO_BE_CACHED, github.ref) }}
- name: Build
shell: bash
run: make release
- name: Output version info
shell: bash
run: ./build/release/duckdb -c "PRAGMA version;"
- name: Set DUCKDB_INSTALL_LIB for ADBC tests
shell: bash
run: echo "DUCKDB_INSTALL_LIB=$(find `pwd` -name "libduck*.so" | head -n 1)" >> $GITHUB_ENV
- name: Test DUCKDB_INSTALL_LIB variable
run: echo $DUCKDB_INSTALL_LIB
- name: Test
shell: bash
run: |
python3 scripts/run_tests_one_by_one.py build/release/test/unittest --tests-per-invocation 100
linux-release:
name: Linux Release (full suite)
needs: check-draft
runs-on: ubuntu-24.04
env:
GEN: ninja
BUILD_JEMALLOC: 1
CORE_EXTENSIONS: "icu;tpch;tpcds;fts;json;inet"
DISABLE_SANITIZER: 1
steps:
- uses: actions/checkout@v3
- name: Install
shell: bash
run: sudo apt-get update -y -qq && sudo apt-get install -y -qq ninja-build
- name: Setup Ccache
uses: hendrikmuhs/ccache-action@main
with:
key: ${{ github.job }}
save: ${{ vars.BRANCHES_TO_BE_CACHED == '' || contains(vars.BRANCHES_TO_BE_CACHED, github.ref) }}
- name: Build
shell: bash
run: make release
- name: Test
shell: bash
run: make allunit
no-string-inline:
name: No String Inline / Destroy Unpinned Blocks
runs-on: ubuntu-24.04
needs: linux-configs
env:
GEN: ninja
CORE_EXTENSIONS: "icu;parquet;tpch;tpcds;fts;json;inet"
DISABLE_STRING_INLINE: 1
DESTROY_UNPINNED_BLOCKS: 1
ALTERNATIVE_VERIFY: 1
DISABLE_POINTER_SALT: 1
LSAN_OPTIONS: suppressions=${{ github.workspace }}/.sanitizer-leak-suppressions.txt
DUCKDB_TEST_DESCRIPTION: 'Compiled with ALTERNATIVE_VERIFY=1 DISABLE_STRING_INLINE=1 DESTROY_UNPINNED_BLOCKS=1 DISABLE_POINTER_SALT=1. Use require no_alternative_verify to skip.'
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install
shell: bash
run: sudo apt-get update -y -qq && sudo apt-get install -y -qq ninja-build
- name: Setup Ccache
uses: hendrikmuhs/ccache-action@main
with:
key: ${{ github.job }}
save: ${{ vars.BRANCHES_TO_BE_CACHED == '' || contains(vars.BRANCHES_TO_BE_CACHED, github.ref) }}
- name: Build
shell: bash
run: make relassert
- name: Test
shell: bash
run: build/relassert/test/unittest
vector-sizes:
name: Vector Sizes
runs-on: ubuntu-22.04
needs: linux-configs
env:
CC: gcc-10
CXX: g++-10
GEN: ninja
DUCKDB_TEST_DESCRIPTION: 'Compiled with STANDARD_VECTOR_SIZE=2. Use require vector_size 2048 to skip tests.'
steps:
- name: Clean up the disc space
shell: bash
run: |
echo "Disk usage before clean up:"
df -h
rm -rf /opt/hostedtoolcache/CodeQL Java* Pypy Ruby go node
echo "Disk usage after clean up:"
df -h
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install
shell: bash
run: sudo apt-get update -y -qq && sudo apt-get install -y -qq ninja-build
- name: Setup Ccache
uses: hendrikmuhs/ccache-action@main
with:
key: ${{ github.job }}
save: ${{ vars.BRANCHES_TO_BE_CACHED == '' || contains(vars.BRANCHES_TO_BE_CACHED, github.ref) }}
- name: Build
shell: bash
run: STANDARD_VECTOR_SIZE=2 make reldebug
- name: Test
shell: bash
run: |
python3 scripts/run_tests_one_by_one.py build/reldebug/test/unittest --no-exit --time_execution
valgrind:
name: Valgrind
if: ${{ !startsWith(github.ref, 'refs/tags/v') }}
runs-on: ubuntu-24.04
needs: linux-configs
env:
CC: clang
CXX: clang++
DISABLE_SANITIZER: 1
BUILD_JEMALLOC: 1
CORE_EXTENSIONS: 'icu;json;parquet;tpch'
GEN: ninja
steps:
- uses: actions/checkout@v4
- name: Install
shell: bash
run: sudo apt-get update -y -qq && sudo apt-get install -y -qq ninja-build valgrind clang
- name: Setup Ccache
uses: hendrikmuhs/ccache-action@main
with:
key: ${{ github.job }}
save: ${{ vars.BRANCHES_TO_BE_CACHED == '' || contains(vars.BRANCHES_TO_BE_CACHED, github.ref) }}
- name: Build
shell: bash
run: make relassert
- name: Output version info
shell: bash
run: ./build/relassert/duckdb -c "PRAGMA version;"
- name: Test
shell: bash
run: valgrind ./build/relassert/test/unittest test/sql/tpch/tpch_sf001.test_slow
threadsan:
name: Thread Sanitizer
needs: linux-configs
runs-on: ubuntu-24.04
env:
CC: clang
CXX: clang++
GEN: ninja
BUILD_JEMALLOC: 1
CORE_EXTENSIONS: "icu;tpch;tpcds;fts;json;inet"
TSAN_OPTIONS: suppressions=${{ github.workspace }}/.sanitizer-thread-suppressions.txt
DUCKDB_TEST_DESCRIPTION: 'Tests run with thread sanitizer.'
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install
shell: bash
run: sudo apt-get update -y -qq && sudo apt-get install -y -qq ninja-build clang
- name: Setup Ccache
uses: hendrikmuhs/ccache-action@main
with:
key: ${{ github.job }}
save: ${{ vars.BRANCHES_TO_BE_CACHED == '' || contains(vars.BRANCHES_TO_BE_CACHED, github.ref) }}
- name: Build
shell: bash
run: THREADSAN=1 make reldebug
- name: Test
shell: bash
run: |
python3 scripts/run_tests_one_by_one.py build/reldebug/test/unittest --no-exit --timeout 600
python3 scripts/run_tests_one_by_one.py build/reldebug/test/unittest "[intraquery]" --no-exit --timeout 600
python3 scripts/run_tests_one_by_one.py build/reldebug/test/unittest "[interquery]" --no-exit --timeout 1800
python3 scripts/run_tests_one_by_one.py build/reldebug/test/unittest "[interquery]" --no-exit --timeout 1800 --force-storage
python3 scripts/run_tests_one_by_one.py build/reldebug/test/unittest "[interquery]" --no-exit --timeout 1800 --force-storage --force-reload
python3 scripts/run_tests_one_by_one.py build/reldebug/test/unittest "[detailed_profiler]" --no-exit --timeout 600
python3 scripts/run_tests_one_by_one.py build/reldebug/test/unittest test/sql/tpch/tpch_sf01.test_slow --no-exit --timeout 600
amalgamation-tests:
name: Amalgamation Tests
runs-on: ubuntu-22.04
needs: check-draft
env:
CC: clang
CXX: clang++
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.ref }}
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install LLVM and Clang
uses: KyleMayes/install-llvm-action@v1
with:
version: "14.0"
- name: Generate Amalgamation
shell: bash
run: |
python scripts/amalgamation.py --extended
clang++ -std=c++17 -Isrc/amalgamation src/amalgamation/duckdb.cpp -emit-llvm -S -O0
# TODO: Bring back BLOCK_VERIFICATION: 1, and consider bringing back fts
# TODO: DEBUG_STACKTRACE: 1 + reldebug ?
linux-configs:
name: Tests a release build with different configurations
runs-on: ubuntu-24.04
needs: check-draft
env:
BASE_BRANCH: ${{ github.base_ref || 'main' }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install Ninja
shell: bash
run: sudo apt-get update -y -qq && sudo apt-get install -y -qq ninja-build
- name: Setup Ccache
uses: hendrikmuhs/ccache-action@main
with:
key: ${{ github.job }}
save: ${{ vars.BRANCHES_TO_BE_CACHED == '' || contains(vars.BRANCHES_TO_BE_CACHED, github.ref) }}
- name: Build
id: build
shell: bash
env:
CORE_EXTENSIONS: "json;parquet;icu;tpch;tpcds"
GEN: ninja
run: make
- name: test/configs/encryption.json
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --test-config test/configs/encryption.json
- name: test/configs/force_storage.json
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --test-config test/configs/force_storage.json
- name: test/configs/force_storage_restart.json
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --test-config test/configs/force_storage_restart.json
- name: test/configs/latest_storage.json
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --test-config test/configs/latest_storage.json
- name: test/configs/verify_fetch_row.json
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --test-config test/configs/verify_fetch_row.json
- name: test/configs/wal_verification.json
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --test-config test/configs/wal_verification.json
- name: test/configs/prefetch_all_parquet_files.json
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --test-config test/configs/prefetch_all_parquet_files.json
- name: test/configs/no_local_filesystem.json
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --test-config test/configs/no_local_filesystem.json
- name: test/configs/block_size_16kB.json
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --test-config test/configs/block_size_16kB.json
- name: test/configs/latest_storage_block_size_16kB.json
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --test-config test/configs/latest_storage_block_size_16kB.json
- name: test/configs/enable_verification.json
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --test-config test/configs/enable_verification.json
- name: Test dictionary_expression
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --verify-vector dictionary_expression --skip-compiled
- name: Test dictionary_operator
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --verify-vector dictionary_operator --skip-compiled
- name: Test constant_operator
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --verify-vector constant_operator --skip-compiled
- name: Test sequence_operator
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --verify-vector sequence_operator --skip-compiled
- name: Test nested_shuffle
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --verify-vector nested_shuffle --skip-compiled
- name: Test variant_vector
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --test-config test/configs/variant_vector.json
- name: Test variant_vector
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --test-config test/configs/compressed_in_memory.json
- name: Test block prefetching
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --test-config test/configs/prefetch_all_storage.json
- name: Test peg_parser
if: (success() || failure()) && steps.build.conclusion == 'success'
shell: bash
run: |
./build/release/test/unittest --test-config test/configs/peg_parser.json