From 4f49d4192f8b6e656d62ae0d85628e7e036c67ab Mon Sep 17 00:00:00 2001 From: wudidapaopao Date: Thu, 16 Oct 2025 16:35:51 +0800 Subject: [PATCH 1/4] feat: support building for Python 3.14 --- .github/workflows/build_linux_arm64_wheels-gh.yml | 9 +++++---- .github/workflows/build_linux_x86_wheels.yml | 9 +++++---- .github/workflows/build_macos_arm64_wheels.yml | 9 +++++---- .github/workflows/build_macos_x86_wheels.yml | 9 +++++---- chdb/build_pybind11.sh | 2 +- 5 files changed, 21 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build_linux_arm64_wheels-gh.yml b/.github/workflows/build_linux_arm64_wheels-gh.yml index fe9e78277a5..047c0683721 100644 --- a/.github/workflows/build_linux_arm64_wheels-gh.yml +++ b/.github/workflows/build_linux_arm64_wheels-gh.yml @@ -74,7 +74,8 @@ jobs: pyenv install 3.11:latest pyenv install 3.12:latest pyenv install 3.13:latest - pyenv global 3.8 3.9 3.10 3.11 3.12 3.13 + pyenv install 3.14:latest + pyenv global 3.8 3.9 3.10 3.11 3.12 3.13 3.14 # Verify installations echo "Installed versions:" @@ -87,7 +88,7 @@ jobs: pyenv versions echo "" echo "Verifying all required Python versions are available:" - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do if ! pyenv versions --bare | grep -q "^$version"; then echo "ERROR: Python $version is not installed!" exit 1 @@ -99,7 +100,7 @@ jobs: run: | export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do echo "Installing dependencies for Python $version" pyenv shell $version python -m pip install --upgrade pip @@ -257,7 +258,7 @@ jobs: run: | export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do echo "Testing chdb on Python $version" pyenv shell $version python -m pip install dist/*.whl --force-reinstall diff --git a/.github/workflows/build_linux_x86_wheels.yml b/.github/workflows/build_linux_x86_wheels.yml index 5a35668ead9..cf9bdf41179 100644 --- a/.github/workflows/build_linux_x86_wheels.yml +++ b/.github/workflows/build_linux_x86_wheels.yml @@ -74,7 +74,8 @@ jobs: pyenv install 3.11:latest pyenv install 3.12:latest pyenv install 3.13:latest - pyenv global 3.8 3.9 3.10 3.11 3.12 3.13 + pyenv install 3.14:latest + pyenv global 3.8 3.9 3.10 3.11 3.12 3.13 3.14 # Verify installations echo "Installed versions:" @@ -87,7 +88,7 @@ jobs: pyenv versions echo "" echo "Verifying all required Python versions are available:" - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do if ! pyenv versions --bare | grep -q "^$version"; then echo "ERROR: Python $version is not installed!" exit 1 @@ -99,7 +100,7 @@ jobs: run: | export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do echo "Installing dependencies for Python $version" pyenv shell $version python -m pip install --upgrade pip @@ -256,7 +257,7 @@ jobs: run: | export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do echo "Testing chdb on Python $version" pyenv shell $version python -m pip install dist/*.whl --force-reinstall diff --git a/.github/workflows/build_macos_arm64_wheels.yml b/.github/workflows/build_macos_arm64_wheels.yml index 61c895f7601..c0c6b565201 100644 --- a/.github/workflows/build_macos_arm64_wheels.yml +++ b/.github/workflows/build_macos_arm64_wheels.yml @@ -36,7 +36,8 @@ jobs: pyenv install 3.11:latest pyenv install 3.12:latest pyenv install 3.13:latest - pyenv global 3.8 3.9 3.10 3.11 3.12 3.13 + pyenv install 3.14:latest + pyenv global 3.8 3.9 3.10 3.11 3.12 3.13 3.14 echo "Installed versions:" pyenv versions @@ -48,7 +49,7 @@ jobs: pyenv versions echo "" echo "Verifying all required Python versions are available:" - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do if ! pyenv versions --bare | grep -q "^$version"; then echo "ERROR: Python $version is not installed!" exit 1 @@ -60,7 +61,7 @@ jobs: run: | export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do echo "Installing dependencies for Python $version" pyenv shell $version python -m pip install --upgrade pip @@ -197,7 +198,7 @@ jobs: run: | export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do echo "Testing chdb on Python $version" pyenv shell $version python -m pip install dist/*.whl --force-reinstall diff --git a/.github/workflows/build_macos_x86_wheels.yml b/.github/workflows/build_macos_x86_wheels.yml index 8217b1ad033..64f7248df4e 100644 --- a/.github/workflows/build_macos_x86_wheels.yml +++ b/.github/workflows/build_macos_x86_wheels.yml @@ -36,7 +36,8 @@ jobs: pyenv install 3.11:latest pyenv install 3.12:latest pyenv install 3.13:latest - pyenv global 3.8 3.9 3.10 3.11 3.12 3.13 + pyenv install 3.14:latest + pyenv global 3.8 3.9 3.10 3.11 3.12 3.13 3.14 echo "Installed versions:" pyenv versions @@ -48,7 +49,7 @@ jobs: pyenv versions echo "" echo "Verifying all required Python versions are available:" - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do if ! pyenv versions --bare | grep -q "^$version"; then echo "ERROR: Python $version is not installed!" exit 1 @@ -60,7 +61,7 @@ jobs: run: | export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do echo "Installing dependencies for Python $version" pyenv shell $version python -m pip install --upgrade pip @@ -219,7 +220,7 @@ jobs: run: | export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do echo "Testing chdb on Python $version" pyenv shell $version python -m pip install dist/*.whl --force-reinstall diff --git a/chdb/build_pybind11.sh b/chdb/build_pybind11.sh index ccc6eaa7602..12dee177167 100755 --- a/chdb/build_pybind11.sh +++ b/chdb/build_pybind11.sh @@ -63,7 +63,7 @@ build_pybind11_nonlimitedapi() { } build_all_pybind11_nonlimitedapi() { - local python_versions=("3.8" "3.9" "3.10" "3.11" "3.12" "3.13") + local python_versions=("3.8" "3.9" "3.10" "3.11" "3.12" "3.13" "3.14") echo "Building pybind11 nonlimitedapi libraries for all Python versions..." From 47ca135ffff5a557d45e2e6b94830892a0fbf450 Mon Sep 17 00:00:00 2001 From: wudidapaopao Date: Thu, 16 Oct 2025 17:18:51 +0800 Subject: [PATCH 2/4] test: add libarrow --- .github/workflows/build_linux_x86_wheels.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_linux_x86_wheels.yml b/.github/workflows/build_linux_x86_wheels.yml index cf9bdf41179..23b86f34d98 100644 --- a/.github/workflows/build_linux_x86_wheels.yml +++ b/.github/workflows/build_linux_x86_wheels.yml @@ -32,6 +32,7 @@ jobs: libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \ libffi-dev liblzma-dev + sudo apt-get install -y libarrow-dev libarrow-dataset-dev libarrow-flight-dev libarrow-python-dev - name: Scan SQLite vulnerabilities with grype run: | # Install grype and required tools @@ -124,7 +125,7 @@ jobs: which clang++-19 clang++-19 --version sudo apt-get install -y make cmake ccache ninja-build yasm gawk wget - # Install WebAssembly linker (wasm-ld) + # Install WebAssembly linker (wasm-ld) sudo apt-get install -y lld-19 # Create symlink for wasm-ld if ! command -v wasm-ld &> /dev/null; then From e927539827485e4549148fb0714fd0fc830cfe13 Mon Sep 17 00:00:00 2001 From: wudidapaopao Date: Mon, 27 Oct 2025 00:06:41 +0800 Subject: [PATCH 3/4] test: fix build --- .github/workflows/build_linux_x86_wheels.yml | 1 - .github/workflows/build_musllinux_arm64_wheels.yml | 10 +++++----- .github/workflows/build_musllinux_x86_wheels.yml | 9 +++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_linux_x86_wheels.yml b/.github/workflows/build_linux_x86_wheels.yml index 3361620e9c3..9c74cf42dcf 100644 --- a/.github/workflows/build_linux_x86_wheels.yml +++ b/.github/workflows/build_linux_x86_wheels.yml @@ -32,7 +32,6 @@ jobs: libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \ libffi-dev liblzma-dev - sudo apt-get install -y libarrow-dev libarrow-dataset-dev libarrow-flight-dev libarrow-python-dev - name: Scan SQLite vulnerabilities with grype run: | # Install grype and required tools diff --git a/.github/workflows/build_musllinux_arm64_wheels.yml b/.github/workflows/build_musllinux_arm64_wheels.yml index c4561d3ada3..1acbe9ffc04 100644 --- a/.github/workflows/build_musllinux_arm64_wheels.yml +++ b/.github/workflows/build_musllinux_arm64_wheels.yml @@ -103,16 +103,16 @@ jobs: eval "$(pyenv init -)" # Install Python versions - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do echo "Installing Python $version" pyenv install $version:latest done - pyenv global 3.8 3.9 3.10 3.11 3.12 3.13 + pyenv global 3.8 3.9 3.10 3.11 3.12 3.13 3.14 # Verify installations echo "Installed versions:" pyenv versions - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do if ! pyenv versions --bare | grep -q "^$version"; then echo "ERROR: Python $version is not installed!" exit 1 @@ -128,7 +128,7 @@ jobs: rustup component add --toolchain nightly-2025-07-07 rust-src # Install Python dependencies - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do echo "Installing dependencies for Python $version" pyenv shell $version python -m pip install --upgrade pip @@ -235,7 +235,7 @@ jobs: CURRENT_TEST=0 TEST_FAILED=false - for version in 3.9 3.10 3.11 3.12 3.13; do + for version in 3.9 3.10 3.11 3.12 3.13 3.14; do CURRENT_TEST=$((CURRENT_TEST + 1)) echo "=== Test $CURRENT_TEST/$TOTAL_TESTS: Python $version ===" echo "Test start time: $(date)" diff --git a/.github/workflows/build_musllinux_x86_wheels.yml b/.github/workflows/build_musllinux_x86_wheels.yml index 3797060cefd..cc43e89a48c 100644 --- a/.github/workflows/build_musllinux_x86_wheels.yml +++ b/.github/workflows/build_musllinux_x86_wheels.yml @@ -90,7 +90,8 @@ jobs: pyenv install 3.11:latest pyenv install 3.12:latest pyenv install 3.13:latest - pyenv global 3.8 3.9 3.10 3.11 3.12 3.13 + pyenv install 3.14:latest + pyenv global 3.8 3.9 3.10 3.11 3.12 3.13 3.14 # Verify installations echo "Installed versions:" @@ -100,7 +101,7 @@ jobs: export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" echo "Verifying all required Python versions are available:" - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do if ! pyenv versions --bare | grep -q "^$version"; then echo "ERROR: Python $version is not installed!" exit 1 @@ -112,7 +113,7 @@ jobs: run: | export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" - for version in 3.8 3.9 3.10 3.11 3.12 3.13; do + for version in 3.8 3.9 3.10 3.11 3.12 3.13 3.14; do echo "Installing dependencies for Python $version" pyenv shell $version python -m pip install --upgrade pip @@ -237,7 +238,7 @@ jobs: run: | export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" - for version in 3.9 3.10 3.11 3.12 3.13; do + for version in 3.9 3.10 3.11 3.12 3.13 3.14; do echo "Testing chdb on Python $version" pyenv shell $version python -m pip install dist/*.whl --force-reinstall From 4e2c0d94c0788ded5d4efca564ef11f2de712137 Mon Sep 17 00:00:00 2001 From: wudidapaopao Date: Mon, 27 Oct 2025 01:55:04 +0800 Subject: [PATCH 4/4] test: fix build --- chdb/build_pybind11.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chdb/build_pybind11.sh b/chdb/build_pybind11.sh index 88bd3cb557b..33066b916fe 100755 --- a/chdb/build_pybind11.sh +++ b/chdb/build_pybind11.sh @@ -63,7 +63,7 @@ build_pybind11_nonlimitedapi() { } build_all_pybind11_nonlimitedapi() { - local python_versions=("3.8" "3.9" "3.10" "3.11" "3.12" "3.13", "3.14") + local python_versions=("3.8" "3.9" "3.10" "3.11" "3.12" "3.13" "3.14") # Skip Python 3.8 for macOS x86_64 if [ "$(uname)" == "Darwin" ] && [ "$(uname -m)" == "x86_64" ]; then