Skip to content

ci: multi-transport SQL E2E (subprocess, http, unix)#7

Merged
rustyconover merged 1 commit into
mainfrom
multi-transport-sql-ci
Jun 24, 2026
Merged

ci: multi-transport SQL E2E (subprocess, http, unix)#7
rustyconover merged 1 commit into
mainfrom
multi-transport-sql-ci

Conversation

@rustyconover

Copy link
Copy Markdown
Contributor

Parameterizes ci/run-integration.sh by TRANSPORT and expands the integration job into an os x transport matrix so the same test/sql/*.test suite runs over all three transports the vgi extension supports (subprocess, http, unix).

The http/unix worker is launched with cwd = the stage dir so evtx_records('test/sql/data/...') and the path-input scalars resolve the staged fixtures server-side. The evtx_records() table function passes over http unchanged (the Rust SDK drains producers fully in the init response — no externalized-cursor fix needed). Verified locally: all three GREEN (59/63/59 assertions).

🤖 Generated with Claude Code

Parameterize ci/run-integration.sh by TRANSPORT and expand the integration
job into an os x transport matrix. The same test/sql/*.test suite now runs
over all three transports the vgi extension supports, by varying only the
LOCATION the .test files ATTACH (VGI_EVTX_WORKER):

  subprocess  the stdio worker binary DuckDB spawns (current behavior)
  http        evtx-worker --http (auto port, advertises PORT:<n>)
  unix        evtx-worker --unix <sock> (advertises UNIX:<sock>)

For the http leg the script starts the worker out-of-band, discovers the
port from stdout, and the awk preprocessor injects a signed
INSTALL/LOAD httpfs after each LOAD vgi;. The http/unix worker is launched
with cwd = the stage dir so the VARCHAR-path overloads of evtx_records()
and the scalars resolve the staged test/sql/data/*.evtx fixtures
server-side (staging now runs before the worker launch). A fail-on-skip
guard rejects the silent auto-skip the sqllogictest runner applies to
"HTTP"-containing errors. Cleanup trap preserves the run's exit code.

No worker code changes: the evtx_records() producer drains fully within the
HTTP init response (the Rust SDK serves producers with producer_batch_limit
0), so the streaming table function works over HTTP unchanged — no
externalized-cursor fix required.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@rustyconover rustyconover force-pushed the multi-transport-sql-ci branch from 5d9a850 to 0dbe528 Compare June 24, 2026 01:11
@rustyconover rustyconover merged commit 09263c5 into main Jun 24, 2026
8 checks passed
@rustyconover rustyconover deleted the multi-transport-sql-ci branch June 24, 2026 01:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant