Skip to content

v4.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 14 Oct 00:36
· 452 commits to master since this release
v4.1.0
437276e

Breaking changes

  • The asyncio SQLAlchemy adapter classes in pyathena.aio.sqlalchemy.base are renamed, with no aliases for the old names: AsyncAdapt_pyathena_cursor → AthenaAioAdaptedCursor, AsyncAdapt_pyathena_connection → AthenaAioAdaptedConnection, AsyncAdapt_pyathena_dbapi → AthenaAioAdaptedDBAPI (#1151). Code that imports the old names must use the new ones. Engines created with the awsathena+aio* URLs are unaffected.

Behavior changes

  • PandasCursor parses CSV results with json columns with pandas' default low_memory=True and converts the json columns after parsing (#1141). pandas now applies these options to the JSON text instead of the converted value:
    • parse_dates naming a json column no longer parses a JSON string such as "2020-01-01", which keeps its quotes; cast in SQL instead.
    • With engine="python" and NA options such as keep_default_na=True, a JSON string that matches an NA token, such as "NA", stays a string; SQL NULL is still None.

Benchmark

The benchmark of this release is in benchmarks/history/2026-10-13-437276e1.md and benchmarks/history/2026-10-13-437276e1-filesystem.md (#1157). Highlights:

  • PandasCursor reads CSV results faster than in 4.0.0, for example 10 million flat rows in 74 seconds instead of 110 (#1134, #1144).
  • Chunked UNLOAD reads in PandasCursor and PolarsCursor stay at about 600 MiB for 10 million rows (#1135, #1143).

What's Changed

Full Changelog: v4.0.0...v4.1.0