Only roll-back in the outermost @db.transaction decorator/ctx manager if an unhandled exception occurs. Previously, an unhandled exception that occurred in a nested transaction context would trigger a rollback. The use of nested transaction has long been discouraged in the documentation: the recommendation is to always use db.atomic, which will use savepoints to properly handle nested blocks. However, the new behavior should make it easier to reason about transaction boundaries - see #2767 for discussion.
Cover transaction BEGIN in the reconnect-mixin. Given that no transaction has been started, reconnecting when beginning a new transaction ensures that a reconnect will occur if it is safe to do so.
Add support for setting isolation_level in db.atomic() and db.transaction() when using Postgres and MySQL/MariaDB, which will apply to the wrapped transaction. Note: Sqlite has supported a similar lock_type parameter for some time.
Add support for the Sqlite SQLITE_DETERMINISTIC function flag. This allows user-defined Sqlite functions to be used in indexes and may be used by the query planner.
Fix unreported bug in dataset import when inferred field name differs from column name.
Add flag to ManyToManyField to prevent setting/getting values on unsaved instances. This is worthwhile, since reading or writing a many-to-many has no meaning when the instance is unsaved.
Adds a star() helper to Source base-class for selecting all columns.
Fix missing binary types for mysql-connector and mariadb-connector.
Add extract() method to MySQL JSONField for extracting a jsonpath.
Fixes a longstanding issue with thread-safety of various decorators, including atomic(), transaction(), savepoint(). The context-managers are unaffected. See #2709 for details.
This release contains backwards-incompatible changes in the way Peewee
initializes connections to the underlying database driver. Previously, peewee
implemented autocommit semantics on-top of the existing DB-API transactional
workflow. Going forward, Peewee instead places the DB-API driver into
autocommit mode directly.
Why this change?
Previously, Peewee emulated autocommit behavior for top-level queries issued
outside of a transaction. This necessitated a number of checks which had to be
performed each time a query was executed, so as to ensure that we didn't end up
with uncommitted writes or, conversely, idle read transactions. By running the
underlying driver in autocommit mode, we can eliminate all these checks, since
we are already managing transactions ourselves.
Behaviorally, there should be no change -- Peewee will still treat top-level
queries outside of transactions as being autocommitted, while queries inside of
atomic() / with db: blocks are implicitly committed at the end of the
Only roll-back in the outermost @db.transaction decorator/ctx manager if
an unhandled exception occurs. Previously, an unhandled exception that
occurred in a nested transaction context would trigger a rollback. The use
of nested transaction has long been discouraged in the documentation: the
recommendation is to always use db.atomic, which will use savepoints to
properly handle nested blocks. However, the new behavior should make it
easier to reason about transaction boundaries - see #2767 for discussion.
Cover transaction BEGIN in the reconnect-mixin. Given that no transaction
has been started, reconnecting when beginning a new transaction ensures that
a reconnect will occur if it is safe to do so.
Add support for setting isolation_level in db.atomic() and
db.transaction() when using Postgres and MySQL/MariaDB, which will apply to
the wrapped transaction. Note: Sqlite has supported a similar lock_type
parameter for some time.
Add support for the Sqlite SQLITE_DETERMINISTIC function flag. This allows
user-defined Sqlite functions to be used in indexes and may be used by the
query planner.
Fix unreported bug in dataset import when inferred field name differs from
column name.
Add flag to ManyToManyField to prevent setting/getting values on unsaved
instances. This is worthwhile, since reading or writing a many-to-many has no
meaning when the instance is unsaved.
Adds a star() helper to Source base-class for selecting all columns.
Fix missing binary types for mysql-connector and mariadb-connector.
Add extract() method to MySQL JSONField for extracting a jsonpath.
Fixes a longstanding issue with thread-safety of various decorators, including
atomic(), transaction(), savepoint(). The context-managers are
unaffected. See #2709 for details.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps peewee from 3.15.4 to 3.17.0.
Release notes
Sourced from peewee's releases.
... (truncated)
Changelog
Sourced from peewee's changelog.
... (truncated)
Commits
01b2d94
3.17.0605f97e
Ensure we don't try to create duplicate columns in dataset insert.e04d237
Add notes on lock type / isolation level parameter.a219fd4
Add isolation level support for MySQL/MariaDB via atomic/transaction.a69d235
Allow specifying isolation_level with Postgres transactions.b0e2e43
Clarify txn docs.53d4620
Add support for Sqlite deterministic functions.ade292f
Attempt to get postgres view introspection test passing again.ae8d2c7
Try to get docs building again.352d119
Switch back to RTD default theme.Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show