Unreleased Release Notes


New Features

  • oslo.db now supports SQLAlchemy 2.0.

  • A new oslo_db.compat module has been added. This provides a number of shims for handling differences between SQLAlchemy 1.x and 2.x.

Upgrade Notes

  • The following test fixtures and base test classes were deprecated and have now been removed:

    • oslo_db.sqlalchemy.test_base.DbFixture

    • oslo_db.sqlalchemy.test_base.DbTestCase

    • oslo_db.sqlalchemy.test_base.OpportunisticTestCase

    • oslo_db.sqlalchemy.test_base.MySQLOpportunisticFixture

    • oslo_db.sqlalchemy.test_base.PostgreSQLOpportunisticFixture

    • oslo_db.sqlalchemy.test_base.MySQLOpportunisticTestCase

    • oslo_db.sqlalchemy.test_base.PostgreSQLOpportunisticTestCase

    They have all been replaced by equivalent test fixtures and test class mixins in oslo_db.sqlalchemy.test_fixtures.

    In addition, the following test cases were being inadvertently used publicly despite being private to oslo.db. They were also deprecated and have now been removed:

    • oslo_db.tests.sqlalchemy.base.DbTestCase

    • oslo_db.tests.sqlalchemy.base.MySQLOpportunisticTestCase

    • oslo_db.tests.sqlalchemy.base.PostgreSQLOpportunisticTestCase

  • The oslo_db.sqlalchemy.migration module and migrate backend for the oslo_db.sqalchemy.migration_cli module, both of which were first deprecated in the 8.5.0 release, have now been removed. sqlalchemy-migrate is no longer under active development, does not support SQLAlchemy 2.0, and has been effectively replaced by alembic.

  • The ability to create engine facades that used autocommit, first deprecated in 12.1.0, has now been removed. This is not supported in SQLAlchemy 2.x.


Bug Fixes

  • The newly added mysql_wsrep_sync_wait parameter now defaults to non-present in the enginefacade’s default configuration options, so that it is not configured in a MySQL / MariaDB database by default, unless passed in the options explicitly. Previously, the default value was “0”, meaning the wsrep_sync_wait parameter would be set unconditionally on new connections, which would fail for MySQL backends that don’t provide for this setting.