Skip to content

3.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 16 Oct 08:36
· 1 commit to master since this release
1870071

3.0.0 - 2026-10-16

Summary

In this major release, the following changes were made:

  • The Exasol telemetry tracking -- anonymized usage tracking of the PyExasol library --
    was added.

  • To align more closely with PEP 249, the WebSocket DBAPI now returns values as
    Python types by default whenever possible. Some values were already returned
    as Python types before version 3.0; version 3.0 made this behavior more
    consistent:

    Exasol type Version < 3.0 Version >= 3.0
    BOOLEAN bool bool
    CHAR str str
    DATE datetime.date datetime.date
    DECIMAL(p, 0) int int
    DECIMAL(p, s) where s > 0 str decimal.Decimal
    DOUBLE float float
    GEOMETRY str str
    HASHTYPE str str
    INTERVAL DAY TO SECOND str ExaTimeDelta
    INTERVAL YEAR TO MONTH str str
    TIMESTAMP str datetime.datetime
    TIMESTAMP WITH LOCAL TIME ZONE str datetime.datetime
    VARCHAR str str
    • Nanosecond precision in TIMESTAMP values is truncated to Python
      microsecond precision.
    • NULL values continue to be returned as None for all types.
  • WebSocket DBAPI executions now validate the NLS_DATE_FORMAT and
    NLS_TIMESTAMP_FORMAT EXA_PARAMETERS against the ISO-compatible formats
    supported by PyExasol, reporting all invalid parameters together with
    corrective ALTER SESSION guidance.

  • WebSocket DBAPI connection operations that require an active connection now
    consistently reject calls made without one and translate underlying Exasol
    errors into the appropriate DBAPI exceptions.

  • WebSocket result metadata types are now exposed as
    pyexasol.data_types.WebSocketDataType; the public TypeCode alias
    remains available but displays using the canonical name.

  • convert_websocket_to_python is the preferred name for converting
    WebSocket values to Python types; exasol_mapper remains available as a
    deprecated compatibility alias. ExaTimeDelta is also available from
    pyexasol.data_types, while the old pyexasol.mapper compatibility
    module emits a deprecation warning on import.

  • The deprecated pyexasol.db2 compatibility layer was removed; the
    maintained exasol.driver.websocket.dbapi2 interface remains available.

Security Issues

This release fixes vulnerabilities by updating dependencies:

Dependency Vulnerability Affected Fixed in
tornado GHSA-chx6-46f5-w4vp 6.5.8 6.5.9
tornado GHSA-c2m8-h5v5-343r 6.5.8 6.5.9
tornado GHSA-3hv7-mjh2-fv65 6.5.8 6.5.9
urllib3 PYSEC-2026-4177 2.7.0 2.8.0
urllib3 PYSEC-2026-4176 2.7.0 2.8.0
urllib3 PYSEC-2026-4175 2.7.0 2.8.0
virtualenv PYSEC-2026-4011 21.7.8 21.7.12
virtualenv PYSEC-2026-4012 21.7.8 21.7.11
virtualenv PYSEC-2026-4014 21.7.8 21.7.12
virtualenv PYSEC-2026-4013 21.7.8 21.7.13
virtualenv PYSEC-2026-4011 21.7.8 21.7.12
virtualenv PYSEC-2026-4012 21.7.8 21.7.11
virtualenv PYSEC-2026-4013 21.7.8 21.7.13
virtualenv PYSEC-2026-4014 21.7.8 21.7.12

Features

  • #116: Added conversion support for TIMESTAMP WITH LOCAL TIME ZONE values
    in convert_websocket_to_python.
  • #375: Integrated telemetry

Bugfixes

  • #353: Fixed documentation inconsistencies in type hints and docstrings
  • #409: Restricted allowed formats for TIMESTAMP and DATE to ISO-formats
  • #415: Fixed a KeyError when accessing cursor.description for result
    sets containing HASHTYPE columns by adding HASHTYPE to TypeCode
  • #419: Fixed exact negative-day intervals in ExaTimeDelta being formatted with a
    day count one too low
  • #429: Fixed Cursor.executemany silently accepting rows with more parameters
    than the prepared statement columns
  • #436: Fixed WebSocket DBAPI result conversion by setting the default
    fetch_mapper to convert_websocket_to_python

Refactorings

  • #409: Refactored connection method handling around _requires_connection
    so connection checks and Exasol-to-DBAPI exception translation are applied
    consistently
  • #415: Removed the pyexasol.db2 compatibility module, which was
    deprecated in July 2024
  • #417: Moved DECIMAL, DATE, and TIMESTAMP conversion helpers into
    pyexasol.data_types.to_python and improved unit test coverage
  • #238: Moved DSN parsing and connection tests from integration tests to unit tests, so
    they no longer require a running Docker database
  • #419: Centralized WebSocket metadata types and moved mapper implementations
    into pyexasol.data_types.
  • #429: Centralized data-type test cases across unit and integration tests and
    renamed exasol_mapper to convert_websocket_to_python
  • #434: Refactored data-type test cases to share SQL templates and expected
    values across fetch-mapper and cursor integration tests

Dependency Updates

main

  • Updated dependency cryptography:50.0.1 to 50.0.2
  • Added dependency exasol-telemetry-client:0.2.1
  • Updated dependency polars:1.44.1 to 1.44.2

dev

  • Updated dependency exasol-toolbox:10.5.0 to 11.0.0