NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Adapter to dbt-core for warehouse Exasol
Last release 24 days ago
10 Sep 2026
Ships unpredictably
gaps range from 8 days to 11 months
Most releases are documented
notes for 36 of 45 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
46 releases · first in 2020
One column per quarter.
A maintenance release with no breaking changes , containing bugfixes and documentation improvements.
A maintenance release with no breaking changes, containing bugfixes and documentation improvements.
pip install -U dbt-exasol
exasol__list_relations_without_caching so enabling quoting: {schema: true} no longer breaks schema matching or disables relation caching. Introduced ExasolIncludePolicy to prevent list_None_<SCHEMA> in logs while maintaining Exasol's database-omitted relation rendering.timestamp_format documented as session-wide (#229, #231): Clarified in documentation that timestamp_format is applied session-wide on every connection via ALTER SESSION SET NLS_TIMESTAMP_FORMAT, governing model SQL, snapshots, and seeds. Added debug logging for the applied format. Zero behaviour change.Full Changelog: v1.12.1...v1.12.2
A maintenance release containing bugfixes and documentation improvements.
timestamp_format is now documented as session-wide (#229).
The value is applied with ALTER SESSION SET NLS_TIMESTAMP_FORMAT on every
connection the adapter opens, so it governs model SQL, snapshots and seed
imports — not seeds alone. The default YYYY-MM-DDTHH:MI:SS.FF6 keeps
ISO-8601 seed files working (#35)
but differs from Exasol's server default YYYY-MM-DD HH24:MI:SS.FF6, which
makes dbt-compiled SQL behave differently in other clients. The README now
states the scope and how to opt into the server default; the applied format
is also emitted as a debug log line. No behaviour change — the default is
unchanged and a breaking change is deferred to a major release.exasol__list_relations_without_caching, unquoted schema identifiers are now compared properly when quoting: {schema: true} is enabled, avoiding empty cache lookups that permanently disabled relation caching. Introduced ExasolIncludePolicy to prevent list_None_<SCHEMA> in logs while maintaining Exasol's database-omitted relation rendering.A maintenance release with no breaking changes . Completes the feature set announced in v1.12.0 with the last fixes and some usability improvements.
A maintenance release with no breaking changes. Completes the feature set
announced in v1.12.0 with the last fixes and some usability improvements.
pip install -U dbt-exasol
Usability:
database in profiles.yml now defaults to "DB", so projects that don'tFixes:
\r to every row, LF seeds on Windows loaded zero rows.quote_policy. Settingquoting: {identifier: true} now works end-to-end — tables, views,--full-refresh, snapshots, seeds, and enforcedidentifier: '"tablename"' workaround is no longer needed.where false / limit 0 filter meant every dbt test --select test_type:unitsql_header (e.g. alter session) no longer breakspersist_docs column comments skip documented columns that don't exist inexasol__create_schema and exasol__persist_docs macro overrides removed —Full Changelog: v1.12.0...v1.12.1
A maintenance release with no breaking changes. Completes the feature set announced in v1.12.0 with the last fixes and some usability improvements.
database parameter in profiles.yml now defaults to "DB" (Exasol's
default database name), so projects that don't need a specific database can
omit it entirely.exasol__create_schema and exasol__persist_docs macro overrides have
been removed: both had converged to be byte-identical to dbt-core's current
default__create_schema / default__persist_docs. Dispatch now falls
through to the shared macros; no behaviour change, less surface to keep in
sync with upstream.IMPORT ... ROW SEPARATOR used for seeds was derived from the client OS (os.linesep),
which says nothing about the bytes in the CSV file. Both mismatches failed
silently: a CRLF seed built on Linux appended a stray \r to the last
column of every row, and an LF seed built on Windows loaded zero rows while
dbt seed reported success. The separator is now sniffed from each seed
file, so LF, CRLF and CR seeds — including a mix of them in one
project — import correctly. Setting row_separator in profiles.yml still
forces that value for every seed (unchanged behaviour); files with genuinely
mixed line endings now emit a warning instead of corrupting rows silently.CREATE TABLE/VIEW, DROP,
TRUNCATE, RENAME), snapshots, seeds, and relation lookups now render
through the relation's quote_policy, matching ref() and source().
Previously, with quoting: {identifier: true}, ref('model_a') compiled to
"model_a" while CREATE TABLE created the Exasol-folded MODEL_A,
producing object "model_a" not found; tables, views, incremental models,
--full-refresh, snapshots, seeds, and enforced contracts now work
end-to-end. The undocumented identifier: '"orders"' workaround for
case-sensitive sources is no longer needed — set source-level
quoting: {identifier: true} instead (project-level quoting: never
applies to sources, per dbt-core). quoting: {schema: true} remains
unsupported.dbt test --select test_type:unit) no longer execute the full
model query. The macro that builds the metadata-only temp table used to
discover column names/types (get_empty_subquery_sql) was missing the
where false / limit 0 filter dbt-core's default provides, so every unit
test run materialized the model's real result set before immediately
dropping it. The filter is restored; the Exasol-specific subquery alias
(dbt_sbq_tmp, required because Exasol rejects unquoted identifiers
starting with _) is unchanged.sql_header no
longer fails to build. Exasol accepts exactly one statement per request,
so emitting a header such as alter session set TIME_ZONE = '...';
immediately in front of the metadata-only select (as dbt-core's default
does) raised syntax error, unexpected SELECT_, expecting END_OF_INPUT_.
A header that is a complete statement is now submitted separately on the
same connection, so the session setting still applies to the following
query. Headers that are only a query prefix — most notably a leading
with ... as (...) CTE — remain inline and are no longer concatenated
directly onto the select keyword.persist_docs) are now applied only to columns that
actually exist in the relation, using validate_doc_columns; stale model
column definitions no longer break comment propagation.dbt-exasol 1.12.0 — dbt-core 1.12 support
Adds support for dbt-core 1.12 (dbt-core>=1.12.0,<1.13, dbt-adapters>=1.24.5).
pip install -U dbt-exasol
dbt seed --empty / dbt build --empty create correctly typed zero-row tables (decimal columns become float, not integer). Known limitation: reload data afterwards with dbt seed --full-refresh.latest_version_pointer — versioned models automatically get a pointer view named after the base model.--empty), microbatch strategy, sample mode (--sample), SQL/Python UDFs & UDAFs, snapshots (hard_deletes, dbt_valid_to_current), unit testing, single-relation catalog, batched last-modified metadata, persist_docs, grants.CatalogsV2 declared Unsupported; config(catalog=...) fails with a clear error)dbt clone — clone-as-view instead; cross-target clones workfloat (was integer) — affects zero-row seeds only; populated seeds unchanged.DbtRuntimeError instead of RuntimeError (it subclasses RuntimeError, so existing except RuntimeError code is unaffected).persist_docs column comments now skip documented columns that don't exist in the relation instead of erroring.Details: parity matrix · CHANGELOG · Full Changelog: v1.11.0...v1.12.0
Supports dbt-core 1.12 and adopts its new adapter-facing features. See the dbt-core version parity matrix for the full feature list.
dbt-core>=1.12.0,<1.13, dbt-adapters>=1.24.5).dbt seed --empty and dbt build --empty create correctly
typed empty tables; covered by the upstream BaseTestEmptySeedFlag suite.
Known limitation: an --empty seed followed immediately by a plain
(non---full-refresh) seed on a CSV with decimal columns is not fully
validated — use dbt seed --full-refresh to reload (see README).latest_version_pointer: versioned models
automatically get a pointer view named after the base model (dbt-core 1.12).Capability.CatalogsV2 declared as Unsupported.ExasolCursor.fetchone/fetchmany/fetchall now raise
dbt_common.exceptions.DbtRuntimeError instead of a raw RuntimeError when
called on an unset statement, aligning with dbt-core 1.12 exception handling.convert_number_type returns float for zero-row agate tables (e.g. empty
seeds) instead of letting agate.MaxPrecision degrade decimal columns to
integer.lint:deprecations nox session running dbt parse with warn-error: true against an adapter-owned fixture project (wired into mise run check and CI).
Establishes an explicit, testable parity claim against dbt-core 1.11
(reference adapter: dbt-snowflake).
dbt.adapters.capability.Capability value:GetCatalogForSingleRelation and TableLastModifiedMetadataBatch as Full,MicrobatchConcurrency as Unsupported (Exasol transaction-conflict semantics).ExasolAdapter.get_catalog_for_single_relation plus theget_catalog_for_single_relation macro (delegates to exasol__get_catalog_relations)._behavior_flags scaffolding (returns []) for future platform flags.DbtRuntimeError when a model sets config(catalog=...); projects with ancatalogs.yml still parse and run.dbt-tests-adapter subclasses for clone, snapshot hard_deletes anddbt_valid_to_current, sample mode, and catalog-integration validation.lint:deprecations nox session running dbt parse with warn-error: truemise run check and CI).README.md.exasol__get_relation_last_modified now reads SYS.EXA_ALL_OBJECTS (wasSYS.EXA_USER_OBJECTS) so cross-owner sources resolve, honouring theTableLastModifiedMetadataBatch: Full claim.dbt/adapters/exasol/__version__.py1.10.6 → 1.11.0) to match pyproject.toml.list_relations) issued on a thread with no bound connection now acquire a pooledInvalidConnectionError: connection never acquired for thread.dbt clone --target otherschema — cross-target clone-as-view now worksTestExasolCloneNotPossible passes against a live Exasol instance.Full Changelog: v1.10.6...v1.11.0
Establishes an explicit, testable parity claim against dbt-core 1.11 (reference
adapter: dbt-snowflake). See the
dbt-core version parity matrix for the full
feature list and the
dbt-core-version-parity spec
for the underlying contract.
dbt.adapters.capability.Capability value:
GetCatalogForSingleRelation and TableLastModifiedMetadataBatch as Full,
MicrobatchConcurrency as Unsupported (Exasol transaction-conflict semantics).ExasolAdapter.get_catalog_for_single_relation plus the
get_catalog_for_single_relation macro (delegates to exasol__get_catalog_relations)._behavior_flags scaffolding (returns []) for future platform flags.DbtRuntimeError when a model sets config(catalog=...); projects with an
unused catalogs.yml still parse and run.dbt-tests-adapter subclasses for clone, snapshot hard_deletes and
dbt_valid_to_current, sample mode, and catalog-integration validation.lint:deprecations nox session running dbt parse with warn-error: true
against an adapter-owned fixture project (wired into mise run check and CI).README.md.exasol__get_relation_last_modified now reads SYS.EXA_ALL_OBJECTS (was
SYS.EXA_USER_OBJECTS) so cross-owner sources resolve, honouring the
TableLastModifiedMetadataBatch: Full claim.dbt/adapters/exasol/__version__.py
(1.10.6 → 1.11.0) to match pyproject.toml.list_relations) issued on a thread that has no bound connection (outside a
connection_named block) now acquire a pooled connection on demand instead of
raising InvalidConnectionError: connection never acquired for thread. This
restores the implicit contract that non-pooled adapters satisfy, and unblocks
upstream dbt-tests-adapter classes that invoke adapter methods directly.dbt clone --target otherschema — cross-target clone-as-view now works
end-to-end; TestExasolCloneNotPossible passes against a live Exasol instance.bugfix release 1.10.5 by @tglunde in #188
Full Changelog: v1.10.5...v1.10.6
Bump dbt-common from 1.37.2 to 1.37.3 by @dependabot [bot] in #181
Full Changelog: v1.10.4...v1.10.5
Added security policy by @redcatbear in #170
Full Changelog: v1.10.3...v1.10.4
auto-quote SQL keyword column names in seed operations by @ilikutle in #164
Full Changelog: v1.10.2...v1.10.3
Full Changelog: https://github.com/exasol/dbt-exasol/compare/v1.10.2...v1.10.3
github actions by @tglunde in #159
Adding sample mode & deprecation warnings to support 1.10 dbt-core features
Full Changelog: v1.10.0...v1.10.1
fix: update pyexasol to resolve SSL certificate issue by @mikhail-zhadanov in #139
Full Changelog: v1.8.2...v1.10.0
fixed 'create table as' missing a line break by @ilikutle in https://github.com/tglunde/dbt-exasol/pull/136
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.8.1...v1.8.2
Bump tornado from 6.4.1 to 6.4.2 by @dependabot in https://github.com/tglunde/dbt-exasol/pull/133
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.8.0...v1.8.1
Bump black from 22.12.0 to 24.3.0 by @dependabot in https://github.com/tglunde/dbt-exasol/pull/122
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.7.1...v1.8.0
Version 1.7 updates by @tglunde in https://github.com/tglunde/dbt-exasol/pull/109
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.7.0...v1.7.1
Bump sqlparse from 0.4.3 to 0.4.4 by @dependabot in https://github.com/tglunde/dbt-exasol/pull/69
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.4.0...v1.7.0
xdist for parallel pytest execution added - mv & clone miss in readme by @tglunde in https://github.com/tglunde/dbt-exasol/pull/108
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.6.1...v1.6.3
Exasol 8 compatibility Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.6.1...v1.6.2
Exasol 8 compatibility Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.6.1...v1.6.2
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.6.0...v1.6.1
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.6.0...v1.6.1
Bump sqlparse from 0.4.3 to 0.4.4 by @dependabot in https://github.com/tglunde/dbt-exasol/pull/69
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.4.0...v1.6.0
Nothing published for this version
Nothing published for this version
Bump sqlparse from 0.4.3 to 0.4.4 by @dependabot in https://github.com/tglunde/dbt-exasol/pull/69
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.4.0...v1.5.0
Exasol 8 compatibility Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.4.6...v1.4.7
Exasol 8 compatibility
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.4.6...v1.4.7
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.4.5...v1.4.6
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.4.5...v1.4.6
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.4.4...v1.4.5
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.4.4...v1.4.5
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.4.3...v1.4.4
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.4.3...v1.4.4
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.4.2...v1.4.3
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.4.2...v1.4.3
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.4.0...v1.4.1
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.4.0...v1.4.1
Minor changes as suggested by dbt-Labs #57
Minor changes as suggested by dbt-Labs #57
Incremental model has changed to reflect core template. append & delete+insert strategies are supported.
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.3.0...v1.4.0
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1...v1.3.4
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1...v1.3.4
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.3.2...v1.3.3
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.3.2...v1.3.3
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.3.0...v1.3.1
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.3.0...v1.3.1
Finished tasks from #31 except python models. We will deliver python as second language for dbt models next after 1.4 release.
Finished tasks from #31 except python models. We will deliver python as second language for dbt models next after 1.4 release.
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.2.2...v1.3.0
Finished all tasks from #24 , with cross-db macros, new functional tests and python 3.10 support.
Finished all tasks from #24 , with cross-db macros, new functional tests and python 3.10 support.
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.2.1...v1.2.2
additional keys for connection that can be included in the profiles.yml by @johannes-becker-otto in https://github.com/tglunde/dbt-exasol/pull/19
Full Changelog: https://github.com/tglunde/dbt-exasol/compare/v1.0.1...v1.2.1
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
ensured compatibility with dbt 0.20.0 release
Correcting breaking change from dbt 0.19.x
Correcting breaking change from dbt 0.19.x
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →