Repository navigation
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 BOOLEANboolboolCHARstrstrDATEdatetime.datedatetime.dateDECIMAL(p, 0)intintDECIMAL(p, s)wheres > 0strdecimal.DecimalDOUBLEfloatfloatGEOMETRYstrstrHASHTYPEstrstrINTERVAL DAY TO SECONDstrExaTimeDeltaINTERVAL YEAR TO MONTHstrstrTIMESTAMPstrdatetime.datetimeTIMESTAMP WITH LOCAL TIME ZONEstrdatetime.datetimeVARCHARstrstr- Nanosecond precision in
TIMESTAMPvalues is truncated to Python
microsecond precision. NULLvalues continue to be returned asNonefor all types.
- Nanosecond precision in
-
WebSocket DBAPI executions now validate the
NLS_DATE_FORMATand
NLS_TIMESTAMP_FORMATEXA_PARAMETERS against the ISO-compatible formats
supported by PyExasol, reporting all invalid parameters together with
correctiveALTER SESSIONguidance. -
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 publicTypeCodealias
remains available but displays using the canonical name. -
convert_websocket_to_pythonis the preferred name for converting
WebSocket values to Python types;exasol_mapperremains available as a
deprecated compatibility alias.ExaTimeDeltais also available from
pyexasol.data_types, while the oldpyexasol.mappercompatibility
module emits a deprecation warning on import. -
The deprecated
pyexasol.db2compatibility layer was removed; the
maintainedexasol.driver.websocket.dbapi2interface 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 ZONEvalues
inconvert_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
KeyErrorwhen accessingcursor.descriptionfor result
sets containingHASHTYPEcolumns by addingHASHTYPEtoTypeCode - #419: Fixed exact negative-day intervals in
ExaTimeDeltabeing formatted with a
day count one too low - #429: Fixed
Cursor.executemanysilently accepting rows with more parameters
than the prepared statement columns - #436: Fixed WebSocket DBAPI result conversion by setting the default
fetch_mappertoconvert_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.db2compatibility module, which was
deprecated in July 2024 - #417: Moved DECIMAL, DATE, and TIMESTAMP conversion helpers into
pyexasol.data_types.to_pythonand 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
intopyexasol.data_types. - #429: Centralized data-type test cases across unit and integration tests and
renamedexasol_mappertoconvert_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.1to50.0.2 - Added dependency
exasol-telemetry-client:0.2.1 - Updated dependency
polars:1.44.1to1.44.2
dev
- Updated dependency
exasol-toolbox:10.5.0to11.0.0