# Soda Core - Release notes

{% if visitor.claims.plan ===  %}
{% hint style="success" %}
You are **logged in to Soda** and seeing the **Free license** documentation. Learn more about [documentation-access-and-licensing](https://docs.soda.io/reference/documentation-access-and-licensing "mention").
{% endhint %}
{% endif %}

{% if visitor.claims.plan ===  %}
{% hint style="success" %}
You are **logged in to Soda** and seeing the **Team license** documentation. Learn more about [documentation-access-and-licensing](https://docs.soda.io/reference/documentation-access-and-licensing "mention").
{% endhint %}
{% endif %}

{% if visitor.claims.plan ===  %}
{% hint style="success" %}
You are **logged in to Soda** and seeing the **Enterprise license** documentation. Learn more about [documentation-access-and-licensing](https://docs.soda.io/reference/documentation-access-and-licensing "mention").
{% endhint %}
{% endif %}

{% if !(visitor.claims.plan ===  %}
{% hint style="info" %}
You are **not logged in to Soda** and are viewing the default public documentation. Learn more about [documentation-access-and-licensing](https://docs.soda.io/reference/documentation-access-and-licensing "mention").
{% endhint %}
{% endif %}

## `soda-core 4.7.0`

<sup>17 April 2026</sup>

Github release - <https://github.com/sodadata/soda-core/releases/tag/v4.7.0>

Changes

* Feat: Support data type parameters in schema check
* Fix: Cast boolean threshold values to int before sending to Soda Cloud
* Chore: Normalize pyodbc.Row objects so downstream consumers see plain tuples

## `soda-core 4.6.0`

<sup>09 April 2026</sup>

Github release - <https://github.com/sodadata/soda-core/releases/tag/v4.6.0>

**Overall**

* Fix: Execute user-defined queries as standalone, if they cannot be embedded as CTEs
* Fix: Snowflake handling of `\` during inserts

**Extensions**

* Feat: Failed rows sample file upload functionality
* Fix: Autopilot add database-dependent quoting time column comparisons
* Bump adbc-driver-flightsql to >=1.11.0

## `soda-core 4.5.0`

<sup>04 April 2026</sup>\
Github release - <https://github.com/sodadata/soda-core/releases/tag/v4.5.0>

* Feat: Support list-valued attributes in check filters
* Fix: Handle missing data source gracefully when publishing to Cloud

{% if visitor.claims.plan === %}
**Extensions**

* Feat: [Add multi-source reconciliation support](https://docs.soda.io/reference/contract-language-reference/reconciliation-checks#source-configuration)
* Fix: Correctly handle utf8 characters for Dremio
* Fix: Add qualifiers for all checks generated by autopilot
  {% endif %}

## `soda-core 4.4.2`

<sup>31 March 2026</sup>\
Github release - <https://github.com/sodadata/soda-core/releases/tag/v4.4.2>

Release notes:

* Fix: Upgrade requests to resolve insecure temp file vulnerability

## `soda-core 4.4.1`

<sup>31 March 2026</sup>\
Github release - <https://github.com/sodadata/soda-core/releases/tag/v4.4.1>

Release notes:

* Fix: Upgrade snowflake-connector-python, pyopenssl, pyjwt, and cryptography for security fixes

## `soda-core 4.4.0`

<sup>30 March 2026</sup>\
Github release - <https://github.com/sodadata/soda-core/releases/tag/v4.4.0>

Release notes:

* Feat: Add rows\_tested\_query to failed\_rows checks
* Feat: Add check filtering
* Fix: Expected iterator rowcount across data sources
* Fix: Query result iterator for all data sources

{% if visitor.claims.plan === %}
**Extensions**

* Fix: Skip columns with unusual data types from profiling and check assignment
* Fix: Fallback for migration column extraction
* Fix: Clean up autopilot sampler
* Fix: Update test connection query for Oracle
* Fix: UnboundLocalError on missing\_count during partial verification
* Fix: Update logs for pre-existing tables to debug level
  {% endif %}

## `soda-core 4.2.0`

<sup>17 March 2026</sup>\
Github release - <https://github.com/sodadata/soda-core/releases/tag/v4.2.0>

Release notes:

* Feat: Query all columns within a specific schema
* Fix: Properly quote Athena identifiers
* Fix: Speed-up Databricks v4 discovery with information\_schema query
* Fix: Do not discover `__soda_temp` tables

## `soda-core 4.1.1`

<sup>5 March 2026</sup>\
Github release - <https://github.com/sodadata/soda-core/releases/tag/v4.1.1>

Release notes:

* Fix: dry-run crash for invalid reference check in soda contract test
* Fiix: stop fetching datasource config from Cloud in local verification flow
* Fix: handle metric query returning zero rows gracefully
* Fix: Update cleanup script

## `soda-core 4.1.0`

<sup>28 February 2026</sup>\
Github release - <https://github.com/sodadata/soda-core/releases/tag/v4.1.0>

Release notes:

* Feat: Add full support for Trino data source
* Feat: Add percentage-based sampling for Postgres, Databricks, and Snowflake
* Feat: Expand structured data types and type casting to reference check
* Feat: Separate SQL dialect from data source
* Feat: Report missing count on duplicate and validity checks
* Fix: Potential issue with types not being converted to str in QueryResult
* Fix: Snowflake connector for private key connections
* Fix: Map COMPLETED\_WITH\_WARNINGS to WARNED in agent verification path
* Fix: Apply column expression on freshness check correctly
* Fix: Improved support for Fabric data source
* Fix: Small fixes for Synapse data source

{% if visitor.claims.plan === %}
**Extensions**

* Feat: Fabric, Synapse, Trino, and Oracle support for Diagnostics Warehouse
* Feat: Add missing\_row\_count to Diagnostic Warehouse. Fix diagnostics for FRQ
* Feat: Use percentage sampler for autopilot
* Fix: Fix Diagnostics Warehouse prefixes when `None` is being sent by Soda Cloud
* Fix: Autopilot handling of small & empty datasets
* Fix: Remove incorrect Dremio batch size overrides
* Fix: Fix autopilot scan times logging
  {% endif %}

## `soda-core 4.0.9`

<sup>19 February 2026</sup>\
Github release - <https://github.com/sodadata/soda-core/releases/tag/v4.0.9>

Please note: `4.0.8` failed during release pipeline and is not published in pypi.

Release notes:

* Feat: Update Redshift to use `psycopg3`
* Feat: Support structured data types and type casting
* Feat: Migrate to `uv`
* Fix: Report correct `datasetRowsTested` for failed rows query check
* Fix: Setup column expression correctly for aggregate metrics
* Fix: Update failed rows check diagnostics payload

{% if visitor.claims.plan === %}
**Extensions**

* Feat: Add Redshift compatibility to Diagnostics Warehouse
* Feat: Migrate to `uv`
* Fix: Issue with group by checks in cross-source configurations
* Fix: Compare columns case-insensitive for ensuring the correct columns for Soda-defined tables in Diagnostics Warehouse
  {% endif %}

## `soda-core 4.0.7`

<sup>11 February 2026</sup>\
Github release - <https://github.com/sodadata/soda-core/releases/tag/v4.0.7>

Release notes:

* fix: Databricks - quote dataset in metadata query by [@m1n0](https://github.com/m1n0) in [#2578](https://github.com/sodadata/soda-core/pull/2578)
* Chore: Use `tbump` to generate github release by [@mivds](https://github.com/mivds) in [#2575](https://github.com/sodadata/soda-core/pull/2575)

{% if visitor.claims.plan === %}
**Extensions**

* Diagnostic Warehouse use row hashing for between source movements
  {% endif %}

## `soda-core 4.0.6`

<sup>9 February 2026</sup>\
Github release - <https://github.com/sodadata/soda-core/releases/tag/v4.0.6>

Release notes:

* Feat: Add `uv` support to soda core by [@AidaPaul](https://github.com/AidaPaul) in [#2561](https://github.com/sodadata/soda-core/pull/2561)
* Feat: Update to `psycopg3` by [@Niels-b](https://github.com/Niels-b) in [#2558](https://github.com/sodadata/soda-core/pull/2558)
* Feat: add iterator support for query results by [@mivds](https://github.com/mivds) in [#2562](https://github.com/sodadata/soda-core/pull/2562)
* Fix: enhance CI workflow with staggered uploads to PyPI to reduce 503 errors by [@nik843](https://github.com/nik843) in [#2556](https://github.com/sodadata/soda-core/pull/2556)
* Fix: Require `pydantic>=2.11` by [@paulteehan](https://github.com/paulteehan) in [#2559](https://github.com/sodadata/soda-core/pull/2559)
* Fix: Improved Databricks data type mapping by [@Niels-b](https://github.com/Niels-b) in [#2558](https://github.com/sodadata/soda-core/pull/2558)
* Chore: Replace strings with `SamplerType` enum by [@mivds](https://github.com/mivds) in [#2565](https://github.com/sodadata/soda-core/pull/2565)
* Chore: better yaml parsing for Soda Cloud client, support migration e… by [@m1n0](https://github.com/m1n0) in [#2566](https://github.com/sodadata/soda-core/pull/2566)

{% if visitor.claims.plan === %}
**Extensions**

* Diagnostic Warehouse bugfixes
* Diagnostic Warehouse cross-datasource support
  {% endif %}

## `soda-core 4.0.5` - first public release of version 4

<sup>28 January 2026</sup>\
This is the first public release of Soda Core version 4. This release introduces **Data Contracts as the default way to define data quality rules for tables**. The new approach offers a cleaner, more structured, and more maintainable way to define and manage data quality rules, based on community feedback and real-world usage.

{% hint style="danger" %}
This is a breaking change: Soda Core is moving from the checks language to a Data Contracts–based syntax.
{% endhint %}

Highlights of this release:

* Introduced support for **parsing**, **publishing** and (both locally and remotely) **verifying** data contracts.
* Introduced extended check diagnostics providing deeper visibility into the count and percentage of tested, passing, and failing rows.
* Introduced seamless flexibility to run Contracts via Core or the Soda Agent, with definitions stored either as external files or in Soda Cloud.
* Introduced "Missing", "Invalid", "Duplicate", "Aggregate", "Failed Rows", "Metric" checks in data contract.
* Introduced data contracts support for **multiple data sources**: Postgres, Snowflake, BigQuery, Databricks, Redshift, SQL Server, Fabric, Synapse, Athena, DuckDB (in memory).
* Introduced **new CLI** with a noun-verb structure and better integration with the Soda Cloud APIs (e.g. contract fetching based on a dataset identifier)
* Introduced support for `variables` in contracts, allowing you to parameterize contracts.
* Introduced support for **extending functionality** using plugins.
* Introduced **extensible check types**.
* Introduced concept and hooks for **contract verification result handlers**, allowing post processing of the contract verification results.

### Extensions

* Implemented the contract generation plugin.
* Implemented the diagnostics warehouse plugin.
* Implemented reconciliation checks.
* Implemented group-by checks.
* Implemented support for Oracle as a data source.
* Implemented support for Dremio as a data source.
* Implemented support for contract requests.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.soda.io/release-notes/soda-core-release-notes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
