From 5e65bc91ae9b5d7573cd1c4b029611aef773cd1f Mon Sep 17 00:00:00 2001 From: "riseproject-dev[bot]" <330740410+riseproject-dev[bot]@users.noreply.github.com> Date: Thu, 22 Oct 2026 12:13:17 +0000 Subject: [PATCH 1/7] sqlglotc: Add versions 30.23.0, 30.24.0 Signed-off-by: riseproject-dev[bot] <330740410+riseproject-dev[bot]@users.noreply.github.com> --- docs/packages/sqlglotc.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/packages/sqlglotc.yaml b/docs/packages/sqlglotc.yaml index 077784594220..504f6ab84bcb 100644 --- a/docs/packages/sqlglotc.yaml +++ b/docs/packages/sqlglotc.yaml @@ -74,3 +74,5 @@ versions: - filename: sqlglotc-30.22.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl sha256: c9d8b3e58d01119b890d2437a8b7e9245a0ad8ddb1532c086b1eb663e58392da requires-python: '>=3.10' +- version: 30.23.0 +- version: 30.24.0 From aae2a64c913046ab7b8217cc0caec054167170d0 Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Fri, 23 Oct 2026 15:02:29 +0800 Subject: [PATCH 2/7] sqlglotc: install duckdb from the riscv64 wheels instead of building the 2.0.0 sdist --- .github/workflows/build-sqlglotc.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-sqlglotc.yml b/.github/workflows/build-sqlglotc.yml index 591377646cde..da46fad11623 100644 --- a/.github/workflows/build-sqlglotc.yml +++ b/.github/workflows/build-sqlglotc.yml @@ -93,8 +93,10 @@ jobs: # PyPI's newest pandas (3.0.5) ships no riscv64 wheel anywhere yet; # without this, pip resolves it over our registry's 3.0.3 (which # does have one) and falls back to a from-source build that never - # finishes in CI's time budget. - PIP_ONLY_BINARY: pandas + # finishes in CI's time budget. Same for duckdb: PyPI's 2.0.0 sdist + # needs a clang/lld ThinLTO build and a riscv64 wheel of it is not on + # our registry yet, so stay on the registry's newest binary release. + PIP_ONLY_BINARY: pandas,duckdb CIBW_TEST_COMMAND: cd {project} && SKIP_INTEGRATION=1 python -m unittest - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 From 5610731035314fd512ea5c6a26538ca623a84da9 Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Wed, 28 Oct 2026 20:34:12 +0100 Subject: [PATCH 3/7] sqlglotc: install setuptools for the tests and raise the job timeout 30.24.0's tests/test_sqlglotc.py imports setuptools, absent from the Python >=3.12 test venvs. The mypyc builds also take 2.4-2.7h, and the 30.23.0 cp314 job hit the 180 minute ceiling. --- .github/workflows/build-sqlglotc.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-sqlglotc.yml b/.github/workflows/build-sqlglotc.yml index da46fad11623..af86c1fa1d32 100644 --- a/.github/workflows/build-sqlglotc.yml +++ b/.github/workflows/build-sqlglotc.yml @@ -58,7 +58,9 @@ jobs: if: needs.setup.outputs.versions != '[]' name: Build sqlglotc ${{ matrix.version }} ${{ matrix.python }}-manylinux_riscv64 runs-on: ubuntu-24.04-riscv - timeout-minutes: 180 + # mypyc compiles sqlglot natively on the riscv64 runner: 30.24.0 jobs took 2.4-2.7h and + # 30.23.0 cp314 hit the old 180 min ceiling. + timeout-minutes: 300 strategy: fail-fast: false matrix: @@ -87,7 +89,9 @@ jobs: only: ${{ matrix.python }}-manylinux_riscv64 env: CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} - CIBW_TEST_REQUIRES: duckdb pandas python-dateutil pytz + # tests/test_sqlglotc.py (added in 30.24.0) imports setuptools, which Python >=3.12 + # venvs no longer ship. + CIBW_TEST_REQUIRES: duckdb pandas python-dateutil pytz setuptools CIBW_ENVIRONMENT_PASS_LINUX: PIP_EXTRA_INDEX_URL PIP_ONLY_BINARY PIP_EXTRA_INDEX_URL: https://pypi.riseproject.dev/simple/ # PyPI's newest pandas (3.0.5) ships no riscv64 wheel anywhere yet; @@ -121,3 +125,4 @@ jobs: app-private-key: ${{ secrets.RISEPROJECT_APP_PRIVATE_KEY }} with: artifact-pattern: sqlglotc-${{ matrix.version }}-*-manylinux_riscv64 + gpl-sources-artifact: '' From 75c7259df36d80e1a67d63064b748e8c532c7bbe Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Wed, 28 Oct 2026 20:34:36 +0100 Subject: [PATCH 4/7] sqlglotc: drop a stray publish input added by mistake --- .github/workflows/build-sqlglotc.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build-sqlglotc.yml b/.github/workflows/build-sqlglotc.yml index af86c1fa1d32..0948020df656 100644 --- a/.github/workflows/build-sqlglotc.yml +++ b/.github/workflows/build-sqlglotc.yml @@ -125,4 +125,3 @@ jobs: app-private-key: ${{ secrets.RISEPROJECT_APP_PRIVATE_KEY }} with: artifact-pattern: sqlglotc-${{ matrix.version }}-*-manylinux_riscv64 - gpl-sources-artifact: '' From cf2c42443b581c6f933c8c08099603fa46d0eab2 Mon Sep 17 00:00:00 2001 From: "riseproject-dev[bot]" <330740410+riseproject-dev[bot]@users.noreply.github.com> Date: Thu, 29 Oct 2026 09:08:12 +0000 Subject: [PATCH 5/7] sqlglotc: Add versions 30.23.0, 30.24.0, 30.25.0 Signed-off-by: riseproject-dev[bot] <330740410+riseproject-dev[bot]@users.noreply.github.com> --- docs/packages/sqlglotc.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/packages/sqlglotc.yaml b/docs/packages/sqlglotc.yaml index 504f6ab84bcb..71c454e3c268 100644 --- a/docs/packages/sqlglotc.yaml +++ b/docs/packages/sqlglotc.yaml @@ -76,3 +76,4 @@ versions: requires-python: '>=3.10' - version: 30.23.0 - version: 30.24.0 +- version: 30.25.0 From 6ed6ee09a402bbd18bd473259c0259d70aaba5be Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Sat, 31 Oct 2026 20:18:25 +0100 Subject: [PATCH 6/7] build-sqlglotc: leave out the duckdb-engine-dependent test test_unnest_subqueries runs its cases against duckdb, and the FULL/RIGHT JOIN ON ones need a duckdb that can plan a non-inner join on a subquery, which the registry's duckdb (below 2.0.0) cannot. The failure is in the engine, not the compiled sqlglot, so only that test is excluded from the otherwise-unchanged unittest run. --- .github/workflows/build-sqlglotc.yml | 34 +++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-sqlglotc.yml b/.github/workflows/build-sqlglotc.yml index 0948020df656..503dba1c02af 100644 --- a/.github/workflows/build-sqlglotc.yml +++ b/.github/workflows/build-sqlglotc.yml @@ -101,7 +101,39 @@ jobs: # needs a clang/lld ThinLTO build and a riscv64 wheel of it is not on # our registry yet, so stay on the registry's newest binary release. PIP_ONLY_BINARY: pandas,duckdb - CIBW_TEST_COMMAND: cd {project} && SKIP_INTEGRATION=1 python -m unittest + # tests.test_optimizer's test_unnest_subqueries runs its cases against duckdb, and + # the two "preserve IN in FULL/RIGHT JOIN ON" ones need duckdb to plan a non-inner + # join on a subquery, which the duckdb on our registry (anything below the 2.0.0 + # sdist above) raises NotImplementedException for. That is the engine, not the + # compiled sqlglot, so only that test is left out of the otherwise-unchanged + # `python -m unittest` run (no braces below: cibuildwheel expands {project}). + CIBW_TEST_COMMAND: | + cd {project} + SKIP_INTEGRATION=1 python - <<'PYEOF' + import sys + import unittest + + DESELECTED = ( + "tests.test_optimizer.TestOptimizer.test_unnest_subqueries", + ) + + + def prune(suite): + kept = unittest.TestSuite() + for t in suite: + if isinstance(t, unittest.TestSuite): + sub = prune(t) + if sub.countTestCases(): + kept.addTest(sub) + elif t.id() not in DESELECTED: + kept.addTest(t) + return kept + + + suite = prune(unittest.defaultTestLoader.discover(".")) + result = unittest.TextTestRunner(verbosity=1).run(suite) + sys.exit(0 if result.wasSuccessful() else 1) + PYEOF - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: From a8e9762d139a38b49bc39e42ad02805ba02c624f Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Sun, 1 Nov 2026 08:13:32 +0100 Subject: [PATCH 7/7] build-sqlglotc: run the deselecting test runner as a module, not from stdin test_optimizer's process pool re-imports __main__ in its workers, which a script read from stdin cannot offer, so every pool-using test errored with BrokenProcessPool. Write the runner to a file and run it with python -m, behind a main guard. --- .github/workflows/build-sqlglotc.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-sqlglotc.yml b/.github/workflows/build-sqlglotc.yml index 503dba1c02af..ce821becb533 100644 --- a/.github/workflows/build-sqlglotc.yml +++ b/.github/workflows/build-sqlglotc.yml @@ -107,9 +107,11 @@ jobs: # sdist above) raises NotImplementedException for. That is the engine, not the # compiled sqlglot, so only that test is left out of the otherwise-unchanged # `python -m unittest` run (no braces below: cibuildwheel expands {project}). + # It runs as a module (python -m), not from stdin: test_optimizer's process pool + # re-imports __main__ in its workers, which a script read from stdin cannot offer. CIBW_TEST_COMMAND: | cd {project} - SKIP_INTEGRATION=1 python - <<'PYEOF' + cat > unittest_without_duckdb_gap.py <<'PYEOF' import sys import unittest @@ -130,10 +132,12 @@ jobs: return kept - suite = prune(unittest.defaultTestLoader.discover(".")) - result = unittest.TextTestRunner(verbosity=1).run(suite) - sys.exit(0 if result.wasSuccessful() else 1) + if __name__ == "__main__": + suite = prune(unittest.defaultTestLoader.discover(".")) + result = unittest.TextTestRunner(verbosity=1).run(suite) + sys.exit(0 if result.wasSuccessful() else 1) PYEOF + SKIP_INTEGRATION=1 python -m unittest_without_duckdb_gap - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: