Skip to content

ci: multi-transport (subprocess/http/unix) SQL E2E + externalize streaming cursors - #2

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

ci: multi-transport (subprocess/http/unix) SQL E2E + externalize streaming cursors#2
rustyconover merged 1 commit into
mainfrom
multi-transport-e2e

Conversation

@rustyconover

Copy link
Copy Markdown
Contributor

Adds subprocess/http/unix transport coverage to the SQL E2E suite and fixes the streaming table functions to run over HTTP.

Changes

  • Parameterize ci/run-integration.sh by TRANSPORT; CI runs a [subprocess, http, unix] matrix.
  • http/unix start the worker out-of-band; LOCATION is the bare URL. httpfs injected on the http leg. Silent-skip guard added. Mock OData server kept for all legs.
  • Wire --unix flag into the worker main (RunUnix).
  • Externalize the streaming cursor: replace Done bool with a gob-encodable Offset cursor + bounded per-tick emit, so producer state survives the HTTP continuation boundary. Added TestCursorSurvivesContinuation.

All three transports pass locally (subprocess/unix 31 assertions, http 35).

🤖 Generated with Claude Code

… cursors

Run the full SQL E2E suite over all three VGI transports (subprocess, http,
unix), selected by ci/run-integration.sh's TRANSPORT env var and a CI matrix.

- Parameterize run-integration.sh by TRANSPORT; for http/unix start the worker
  out-of-band and hand the extension a bare URL LOCATION. Inject httpfs on the
  http leg (the worker-RPC POSTs go through DuckDB's HTTP client). Guard against
  the runner's silent-skip fake-pass. Keep the mock OData server for all legs.
- Wire a --unix flag into the worker main (RunUnix; the SDK had it, the flag was
  unexposed).
- Externalize the streaming table-function cursor: replace the bare `Done bool`
  emit flag with an explicit gob-encodable Offset cursor and a bounded
  per-tick emit. Over HTTP the producer state is round-tripped through a
  continuation token each tick, so a Done flag flipped after Emit re-emits row 0
  forever; an advancing Offset survives the boundary and terminates. Add
  TestCursorSurvivesContinuation (gob round-trip between ticks).

All three transports pass locally (subprocess/unix 31 assertions, http 35).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@rustyconover
rustyconover merged commit d1412be into main Jun 24, 2026
5 checks passed
@rustyconover
rustyconover deleted the multi-transport-e2e branch June 24, 2026 01:10
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