feat(exasol): add Exasol database provider - #320
Merged
Conversation
Add Exasol support via pyexasol, Exasol's native WebSocket client. Since pyexasol is not DB-API 2.0, ExasolAdapter subclasses DatabaseAdapter directly rather than CursorBasedAdapter, matching the ClickHouse provider. Installed through a new "exasol" extra, also folded into "all". The connection schema covers on-prem username/password auth and Exasol SaaS token auth (access token / refresh token), modeled on the existing Snowflake schema. Default port is 8563. Unit tests run against mocked connections and import no driver, so they work in the driver-free CI job; pyexasol is imported lazily inside the fixtures to keep the conftest star-import safe when the extra is not installed. Integration tests run against exasol/docker-db, wired into the existing enterprise compose profile and a new test-exasol CI job. Re-locking also corrects pre-existing drift: pyproject.toml declares mariadb = ["PyMySQL>=1.1.0"] but the committed lock still pinned the mariadb C-extension at 1.1.14. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds Exasol support through pyexasol for local/on-premises databases and Exasol SaaS. Includes schemas, tables, views, columns, primary keys, scripts, queries, and row limits.
The provider preserves pyexasol's verified TLS default, distinguishes
verify-cafromverify-full, and matches metadata identifiers exactly so names containing underscores or percent signs cannot return another table's columns. OpenID token fields use sqlit's existing protected credential slot, including save/load/rename, legacy migration, auth-mode changes, and driver-restart redaction. SaaS PATs work through username/password authentication with the connection-details username.Verification at
3d9807cf24ace4035a02992f777b74fab836f15f:EXASOL_REQUIRE_LIVE=1: unavailable drivers, failed readiness, and schema-setup errors fail the run instead of hiding behind skips.CONTRIBUTING.mddocuments the Docker and cloud regression commands. OpenID access/refresh-token handling has unit/UI coverage; live SaaS coverage uses a PAT as the password. Ordinary CI requires no cloud secrets.