Skip to content

Fixes #28941: Migrate pinotdb, presto, clickhouse, teradata, exasol and iomete to BaseConnection#28942

Open
IceS2 wants to merge 2 commits into
mainfrom
refactor/db-baseconnection-engine-batch
Open

Fixes #28941: Migrate pinotdb, presto, clickhouse, teradata, exasol and iomete to BaseConnection#28942
IceS2 wants to merge 2 commits into
mainfrom
refactor/db-baseconnection-engine-batch

Conversation

@IceS2

@IceS2 IceS2 commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Fixes #28941

What

Migrates six single-scheme database connectors onto BaseConnection (foundations in #28854): pinotdb, presto, clickhouse, teradata, exasol, iomete.

How

Each connector's module-level get_connection/test_connection are replaced by a BaseConnection subclass whose get_connection_url is a @staticmethod (oracle/trino/snowflake precedent) and whose _get_client inlines the engine build — preserving each connector's existing connectionArguments/connectionOptions handling and test-connection logic (verified line-by-line against main). connection_class is wired into each service spec.

Colocated URL-parity unit tests are added under tests/unit/source/database/<x>/; the shared pinotdb/presto/exasol URL asserts are graduated out of test_source_connection.py. iomete's source override and topology test are repointed to the migrated connector via the generic get_connection resolver.

Bug fixes (behavior change, intentional)

  • teradata: the URL was doubled when extra connectionOptions were set (url += f"{url}…"url = f"{url}…").
  • exasol: get_connection_url mutated connection.password — now read-only (rendered URL identical). Also drops dead hasattr(databaseSchema/database) branches (not fields on the model).

Tests

ruff + basedpyright (no new errors) + 87 unit tests. db2 (scheme dispatch + SSL + runtime clidriver) is handled separately.

…Connection

Migrate six single-scheme database connectors onto BaseConnection subclasses
whose get_connection_url is a @staticmethod (oracle/trino/snowflake precedent)
and whose _get_client inlines the connector-specific engine build, preserving
each connector's existing connectionArguments/connectionOptions handling and
test-connection logic. connection_class is wired into each service spec.

Colocated URL-parity unit tests are added under tests/unit/source/database/<x>/,
and the shared pinotdb/presto/exasol URL asserts are graduated out of
test_source_connection.py. iomete's source override and topology test are
repointed to the migrated connector via the generic get_connection resolver.

Fixes two latent bugs found while reading the URL builders: teradata doubled
the whole URL when extra connection options were set (url += f"{url}..."
instead of url = f"{url}..."), and exasol mutated connection.password inside
its URL builder (now read-only). exasol also drops dead hasattr branches for
databaseSchema/database, which are not fields on the model.
@IceS2 IceS2 requested a review from a team as a code owner June 11, 2026 06:21
@github-actions github-actions Bot added Ingestion safe to test Add this label to run secure Github workflows on PRs labels Jun 11, 2026
@github-actions

github-actions Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

🟡 Playwright Results — all passed (15 flaky)

✅ 4272 passed · ❌ 0 failed · 🟡 15 flaky · ⏭️ 88 skipped

Shard Passed Failed Flaky Skipped
✅ Shard 1 301 0 0 4
🟡 Shard 2 804 0 2 9
🟡 Shard 3 804 0 3 8
✅ Shard 4 847 0 0 12
🟡 Shard 5 718 0 3 47
🟡 Shard 6 798 0 7 8
🟡 15 flaky test(s) (passed on retry)
  • Features/DataQuality/TestCaseImportExportE2eFlow.spec.ts › Admin: Complete export-import-validate flow (shard 2, 1 retry)
  • Features/DataQuality/TestCaseResultPermissions.spec.ts › User with only VIEW cannot PATCH results (shard 2, 1 retry)
  • Features/RTL.spec.ts › Verify Following widget functionality (shard 3, 1 retry)
  • Features/Table.spec.ts › Table pagination with sorting should works (shard 3, 1 retry)
  • Features/Tasks/DomainFiltering.spec.ts › selecting All Domains removes domain filter from feed API call (shard 3, 1 retry)
  • Pages/Entity.spec.ts › Glossary Term Add, Update and Remove for child entities (shard 5, 1 retry)
  • Pages/EntityDataConsumer.spec.ts › Tier Add, Update and Remove (shard 5, 1 retry)
  • Pages/ExplorePageRightPanel_KnowledgeCenter.spec.ts › Should remove user owner for knowledgeCenter (shard 5, 1 retry)
  • Pages/ExploreTree.spec.ts › Explore Tree (shard 6, 1 retry)
  • Pages/Glossary.spec.ts › Column dropdown drag-and-drop functionality for Glossary Terms table (shard 6, 1 retry)
  • Pages/Lineage/LineageFilters.spec.ts › Verify lineage service type filter selection (shard 6, 2 retries)
  • Pages/Lineage/LineageFilters.spec.ts › Verify lineage schema filter selection (shard 6, 1 retry)
  • Pages/Lineage/LineageRightPanel.spec.ts › Verify custom properties tab IS visible for supported type: searchIndex (shard 6, 1 retry)
  • Pages/Lineage/PlatformLineage.spec.ts › Verify domain platform view (shard 6, 1 retry)
  • Pages/Teams.spec.ts › Delete a user from the table (shard 6, 1 retry)

📦 Download artifacts

How to debug locally
# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip    # view trace

@gitar-bot

gitar-bot Bot commented Jun 11, 2026

Copy link
Copy Markdown
Code Review ✅ Approved

Refactors six database connectors to use BaseConnection, consolidating connection logic while resolving URL construction bugs in Teradata and Exasol. No issues found.

Options

Display: compact → Showing less information.

Comment with these commands to change:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Ingestion safe to test Add this label to run secure Github workflows on PRs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate pinotdb, presto, clickhouse, teradata, exasol and iomete connectors to BaseConnection

1 participant