Uh oh!
There was an error while loading. Please reload this page.
Add ClickHouse Provider - #67080
Conversation
Congratulations on your first Pull Request and welcome to the Apache Airflow community! If you have any issues or are unsure about any anything please check our Contributors' Guide
|
BentsiLeviav
commented
May 18, 2026
@koletzilla@joe-clickhouse would you mind reviewing that as well? |
eladkal
commented
May 18, 2026
thanks for adding Clickhouse provider @BentsiLeviav |
joe-clickhouse
left a comment
There was a problem hiding this comment.
Hi @BentsiLeviav. Looks pretty good! From a clickhouse-connect perspective I have few comments. In short, the scheme name needs updating and I think the bulk insert should be changed to use an insert context or just the regular client insert method which will automatically stream.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
joe-clickhouse
left a comment
There was a problem hiding this comment.
Hi @BentsiLeviav. The changes you made look good! I did notice one last thing that i've left a comment about in the code related to passing arbitrary kwargs to the client from the Connection extra level.
Uh oh!
There was an error while loading. Please reload this page.
potiuk
commented
May 24, 2026
@BentsiLeviav A few things need addressing before review — see our Pull Request quality criteria.
Adding a new provider is a substantial change; please get a clean CI run before requesting maintainer review. No rush. Note: This comment was drafted by an AI-assisted triage tool and may contain mistakes. Once you have addressed the points above, an Apache Airflow maintainer — a real person — will take the next look at your PR. We use this two-stage triage process so that our maintainers' limited time is spent where it matters most: the conversation with you. Drafted-by: Claude Code (Opus 4.7); reviewed by @potiuk before posting |
BentsiLeviav
commented
May 25, 2026
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Quickest fix: git fetch upstream main && git rebase upstream/main
rm uv.lock && uv lock
git add uv.lock && git rebase --continue
git push --force-with-leaseAutomated nudge — ignore if you're not ready to rebase. This comment is updated in place on future |
Needs rebase and resolve conflicts |
2f5c62e to
63c9d34Compareeladkal
commented
Jun 4, 2026
For refrence mailing list discussion: |
Uh oh!
There was an error while loading. Please reload this page.
Awesome work, congrats on your first merged pull request! You are invited to check our Issue Tracker for additional contributions. |
* Remove mistakenly added generated/provider_dependencies.json* Those files - since April 2025 have been removed and gitignored as they are automatically refreshed whenever dedpendencies changed by breeze when needed. The #67080 accidentally added it back. * Update contributing-docs/12_provider_distributions.rst
…#68801) * Remove mistakenly added generated/provider_dependencies.json* Those files - since April 2025 have been removed and gitignored as they are automatically refreshed whenever dedpendencies changed by breeze when needed. The apache#67080 accidentally added it back. * Update contributing-docs/12_provider_distributions.rst
Description
Adds a new apache-airflow-providers-clickhouse provider that integrates Airflow with ClickHouse via the HTTP interface using the
clickhouse-connectlibrary.Scope of this implementation
ClickHouseHook- the core integration, extendingDbApiHookso all standardSQLExecuteQueryOperatorfeatures work out of the box (templating, handler, split_statements, etc.)bulk_insert_rows()for more performant inserts using clickhouse-connect's native insert pathget_uri()for SQLAlchemy-compatible connection strings (clickhousedb:///clickhousedbs://)Implementation decisions
DB-API 2.0adapter (ClickHouseConnection): clickhouse-connect doesn't expose a DB-API connection natively - we wrap its Client in a thin adapter soDbApiHook.run()works unmodified.commit()and
rollback()are intentional no-ops since ClickHouse has no transactions.session_settingsandclient_kwargscan be set at the connection level (via the extra JSON field) and overridden at the task level (via hook constructor arguments), with the constructor taking precedence on conflicts.apache-airflow/<version> apache-airflow-providers-clickhouse/<version>in the HTTP User-Agent (system.query_log), making queries traceable back to their Airflow source. Users can append a custom label via the client_name extra field.SQLExecuteQueryOperatorfromcommon.sqlcovers all standard SQL use cases.File structure (generated with Claude)
provider.yamlconn-fieldsschema used to generate the connection formpyproject.tomlclickhouse-connect >=0.7.0,common-sql >=1.32.0) — auto-generated from the Breeze templatesrc/.../hooks/clickhouse.pyClickHouseHook(extendsDbApiHook) andClickHouseConnection(thin DB-API 2.0 adapter wrapping theclickhouse-connectclient)src/.../get_provider_info.pyprovider.yamlby the Breeze release tooling — do not edit manuallysrc/airflow/__init__.py,src/airflow/providers/__init__.pyairflow.providersimplicit namespacesrc/.../clickhouse/__init__.py__version__ = "1.0.0") with minimum Airflow version guard — auto-generateddocs/connections/clickhouse.rstdocs/operators/clickhouse.rstSQLExecuteQueryOperatorandClickHouseHookdirectly, includingsession_settingsandbulk_insert_rowsexamplesdocs/index.rst,docs/conf.py,docs/changelog.rst,docs/security.rstdocs/integration-logos/ClickHouse.pngtests/unit/clickhouse/hooks/test_clickhouse.pytests/system/clickhouse/example_clickhouse.py.github/boring-cyborg.ymlprovider:clickhouselabel rule for automatic PR labellingscripts/ci/docker-compose/remove-sources.yml,tests-sources.yml