Skip to content

v3.40.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 15:25
· 1602 commits to master since this release
v3.40.0
7fb102a

v3.40.0 is a minor release of the 3.x maintenance line. It backports bug fixes from master (#1198). The 3.x line still supports Python 3.10 and sqlalchemy>=1.0.0.

Thanks to @greg-om for reporting the SQLAlchemy ping failure with unload=true (#1189) and fixing it (#1185).

SQLAlchemy

  • With unload=true, the connection ping (pool_pre_ping, and connection tests such as Apache Superset's) no longer fails with MISSING_COLUMN_NAME. The ping runs SELECT 1 through a plain Cursor instead of the connection's default cursor, while SQLAlchemy keeps its own handling of a failed ping, including is_disconnect() before SQLAlchemy 2.0.5 (#1185, #1189; #1200, #1199).

Cursors

  • PolarsCursor and AioPolarsCursor work with Polars 2.0 (#1169, #1168). Before, every query read from a CSV result file without chunksize failed with OperationalError (invalid value for 'connection'). The CSV result file is now read through PyAthena's S3 filesystem and passed to Polars as bytes, with Polars 1.x as well.
  • Polars 2.0 reads an UNLOAD map column as Map, which the cursor description now reports as map. Before, it was string, or array/row when the map's values were lists or structs. With Polars 1.x, a map stays array. A struct containing a list is now described as row instead of array (#1169).

Known limitations

  • A chunked UNLOAD result of PolarsCursor describes its columns as the UNLOAD statement's rows bigint column. Master fixed this in #1012, which is not on 3.x.

What's Changed

New Contributors

Full Changelog: v3.39.0...v3.40.0