Skip to content

Add a pull-style streaming select API#471

Open
iskakaushik wants to merge 1 commit intoClickHouse:masterfrom
iskakaushik:feature/add-streaming-select-api
Open

Add a pull-style streaming select API#471
iskakaushik wants to merge 1 commit intoClickHouse:masterfrom
iskakaushik:feature/add-streaming-select-api

Conversation

@iskakaushik
Copy link
Copy Markdown
Contributor

pg_clickhouse needs to consume select results one block at a time, but clickhouse-cpp only exposes a callback-driven select path today. That forces downstream users to layer coroutines or connection resets on top of the client when they need pull-style iteration.

Add BeginSelect(), ReceiveSelectBlock(), and EndSelect() to mirror the existing multi-step insert workflow. The implementation reuses the existing query and packet handling code, keeps Query callbacks active for progress, profile, and log packets, and drains canceled queries so connections remain reusable.

Add integration tests that cover full streaming iteration, preserved Query callbacks, early cleanup, end-of-stream reuse, and exception cleanup with subsequent reuse.

pg_clickhouse needs to consume select results one block at a time, but
clickhouse-cpp only exposes a callback-driven select path today. That
forces downstream users to layer coroutines or connection resets on top
of the client when they need pull-style iteration.

Add BeginSelect(), ReceiveSelectBlock(), and EndSelect() to mirror the
existing multi-step insert workflow. The implementation reuses the
existing query and packet handling code, keeps Query callbacks active
for progress, profile, and log packets, and drains canceled queries so
connections remain reusable.

Add integration tests that cover full streaming iteration, preserved
Query callbacks, early cleanup, end-of-stream reuse, and exception
cleanup with subsequent reuse.
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