summaryrefslogtreecommitdiff
path: root/django/db/backends
AgeCommit message (Collapse)Author
2013-03-11Added an option to disable the creation of savepoints in atomic.Aymeric Augustin
2013-03-11Deprecated TransactionMiddleware and TRANSACTIONS_MANAGED.Aymeric Augustin
Replaced them with per-database options, for proper multi-db support. Also toned down the recommendation to tie transactions to HTTP requests. Thanks Jeremy for sharing his experience.
2013-03-11Made transaction management work even before the first SQL query.Aymeric Augustin
Thanks Florian again.
2013-03-11Added some assertions to enforce the atomicity of atomic.Aymeric Augustin
2013-03-11Implemented an 'atomic' decorator and context manager.Aymeric Augustin
Currently it only works in autocommit mode. Based on @xact by Christophe Pettus.
2013-03-11Added support for savepoints in SQLite.Aymeric Augustin
Technically speaking they aren't usable yet.
2013-03-11Refactored implementation of savepoints.Aymeric Augustin
Prepared for using savepoints within transactions in autocommit mode.
2013-03-11Moved standard SQL for savepoints in the base backend.Aymeric Augustin
These methods are only called when uses_savepoints = True anyway.
2013-03-11Deprecated transaction.is_managed().Aymeric Augustin
It's synchronized with the autocommit flag.
2013-03-11Deprecated transaction.commit/rollback_unless_managed.Aymeric Augustin
Since "unless managed" now means "if database-level autocommit", committing or rolling back doesn't have any effect. Restored transactional integrity in a few places that relied on automatically-started transactions with a transitory API.
2013-03-11Removed superfluous code now that connections use autocommit by default.Aymeric Augustin
2013-03-11Enabled database-level autocommit for all backends.Aymeric Augustin
This is mostly a documentation change. It has the same backwards-incompatibility consequences as those described for PostgreSQL in a previous commit.
2013-03-11Removed _enter/_leave_transaction_management.Aymeric Augustin
The goal is to make all databases share a common, autocommit-based, implementation.
2013-03-11Added BaseDatabaseWrapper.ensure_connection.Aymeric Augustin
This API is useful because autocommit cannot be managed without an open connection.
2013-03-11Expressed the dirty flag handling logic in terms of autocommit.Aymeric Augustin
2013-03-11Stopped flipping the uses_savepoints feature at runtime.Aymeric Augustin
2013-03-11Enabled autocommit for PostgreSQL.Aymeric Augustin
For users who didn't activate autocommit in their database options, this is backwards-incompatible in "non-managed" aka "auto" transaction state. This state now uses database-level autocommit instead of ORM-level autocommit. Also removed the uses_autocommit feature which lost its purpose.
2013-03-11Separated autocommit and isolation level handling for PostgreSQL.Aymeric Augustin
Autocommit cannot be manipulated independently from an open connection. This commit introduces a minor change in behavior: entering transaction management forces opening a databasse connection. This shouldn't be backwards incompatible in any practical use case.
2013-03-11Added an API to control database-level autocommit.Aymeric Augustin
2013-03-11Made transaction.managed a no-op and deprecated it.Aymeric Augustin
enter_transaction_management() was nearly always followed by managed(). In three places it wasn't, but they will all be refactored eventually. The "forced" keyword argument avoids introducing behavior changes until then. This is mostly backwards-compatible, except, of course, for managed itself. There's a minor difference in _enter_transaction_management: the top self.transaction_state now contains the new 'managed' state rather than the previous one. Django doesn't access self.transaction_state in _enter_transaction_management.
2013-03-09Fixed BinaryField support on Oracle.Florian Apolloner
2013-03-07Added missing method in the dummy database backend.Aymeric Augustin
2013-03-02Fixed #18130 -- Made the isolation level configurable on PostgreSQL.Aymeric Augustin
Thanks limscoder for the report and niwi for the draft patch.
2013-03-02Reordered methods in database wrappers.Aymeric Augustin
* Grouped related methods together -- with banner comments :/ * Described which methods are intended to be implemented in backends. * Added docstrings. * Used the same order in all wrappers.
2013-03-02Add introspection support for BinaryFieldClaude Paroz
2013-03-02Add a BinaryField model fieldClaude Paroz
Thanks Michael Jung, Charl Botha and Florian Apolloner for review and help on the patch.
2013-02-28Implemented persistent database connections.Aymeric Augustin
Thanks Anssi Kääriäinen and Karen Tracey for their inputs.
2013-02-27Refactored database exceptions wrapping.Aymeric Augustin
Squashed commit of the following: commit 2181d833ed1a2e422494738dcef311164c4e097e Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Wed Feb 27 14:28:39 2013 +0100 Fixed #15901 -- Wrapped all PEP-249 exceptions. commit 5476a5d93c19aa2f928c497d39ce6e33f52694e2 Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Tue Feb 26 17:26:52 2013 +0100 Added PEP 3134 exception chaining. Thanks Jacob Kaplan-Moss for the suggestion. commit 9365fad0a650328002fb424457d675a273c95802 Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Tue Feb 26 17:13:49 2013 +0100 Improved API for wrapping database errors. Thanks Alex Gaynor for the proposal. commit 1b463b765f2826f73a8d9266795cd5da4f8d5e9e Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Tue Feb 26 15:00:39 2013 +0100 Removed redundant exception wrapping. This is now taken care of by the cursor wrapper. commit 524bc7345a724bf526bdd2dd1bcf5ede67d6bb5c Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Tue Feb 26 14:55:10 2013 +0100 Wrapped database exceptions in the base backend. This covers the most common PEP-249 APIs: - Connection APIs: close(), commit(), rollback(), cursor() - Cursor APIs: callproc(), close(), execute(), executemany(), fetchone(), fetchmany(), fetchall(), nextset(). Fixed #19920. commit a66746bb5f0839f35543222787fce3b6a0d0a3ea Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Tue Feb 26 14:53:34 2013 +0100 Added a wrap_database_exception context manager and decorator. It re-throws backend-specific exceptions using Django's common wrappers.
2013-02-27Fixed #19861 -- Transaction ._dirty flag improvementAnssi Kääriäinen
There were a couple of errors in ._dirty flag handling: * It started as None, but was never reset to None. * The _dirty flag was sometimes used to indicate if the connection was inside transaction management, but this was not done consistently. This also meant the flag had three separate values. * The None value had a special meaning, causing for example inability to commit() on new connection unless enter/leave tx management was done. * The _dirty was tracking "connection in transaction" state, but only in managed transactions. * Some tests never reset the transaction state of the used connection. * And some additional less important changes. This commit has some potential for regressions, but as the above list shows, the current situation isn't perfect either.
2013-02-25Fixed #19634 -- Added proper __hash__ methods.Aymeric Augustin
Classes overriding __eq__ need a __hash__ such that equal objects have the same hash. Thanks akaariai for the report and regebro for the patch.
2013-02-24Add sqldropindexes to manageTomasz Rybak
Change patch from https://code.djangoproject.com/ticket/5568 to work on modern Django. Add special case for MySQL which has different syntax for DROP INDEX. Add unit tests for the new functionality.
2013-02-23Fixed Oracle regression in last_executed_query() with unicode stringsAnssi Kääriäinen
The regression was likely caused by the fix in #19606 which adjusted Oracle's unicode detection, though it seems this would have been an issue in some configurations even before.
2013-02-21Factored code and added a missing docstring.Aymeric Augustin
2013-02-20Added a db_constraint option to ForeignKeys.Alex Gaynor
This controls whether or not a database level cosntraint is created. This is useful in a few specialized circumstances, but in general should not be used!
2013-02-19This function is unused and should have been removed a few releases ago.Alex Gaynor
2013-02-19Ensured a connection is established when checking the database version.Aymeric Augustin
Fixed a test broken by 21765c0a. Refs #18135.
2013-02-19Implemented Oracle version as a cached property.Aymeric Augustin
2013-02-18Added required methods in BaseDatabaseWrapper.Aymeric Augustin
I should have included this in 29628e0b6e5b1c6324e0c06cc56a49a5aa0747e0.
2013-02-18Implemented PostgreSQL version as a cached property.Aymeric Augustin
2013-02-18Removed duplicate caching of mysql_version.Aymeric Augustin
The manual caching in self.server_version and the cached_property decorator are redundant.
2013-02-18Fixed #15119 -- Stopped pinging the MySQL server.Aymeric Augustin
2013-02-18Simplified MySQL version checking.Aymeric Augustin
Django used to check the version of MySQL before handling the first request, which required: - opening a connection - closing it, to avoid holding it idle until the first request. This code isn't necessary any longer since Django dropped support for some versions of MySQL, and other database backends don't implement a similar dance. For consistency and maintenability, remove it. Reverts 4423757c0c50afbe2470434778c8d5e5b4a70925. Closes #18135.
2013-02-18Factored out common code in database backends.Aymeric Augustin
2013-02-18Removed an unecessary function.Aymeric Augustin
It was introduced by the refactoring in 5a4e63e6 and made redundant by the refactoring in 18934677.
2013-02-16Fixed #17260 -- Added time zone aware aggregation and lookups.Aymeric Augustin
Thanks Carl Meyer for the review. Squashed commit of the following: commit 4f290bdb60b7d8534abf4ca901bd0844612dcbda Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Wed Feb 13 21:21:30 2013 +0100 Used '0:00' instead of 'UTC' which doesn't always exist in Oracle. Thanks Ian Kelly for the suggestion. commit 01b6366f3ce67d57a58ca8f25e5be77911748638 Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Wed Feb 13 13:38:43 2013 +0100 Made tzname a parameter of datetime_extract/trunc_sql. This is required to work around a bug in Oracle. commit 924a144ef8a80ba4daeeafbe9efaa826566e9d02 Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Wed Feb 13 14:47:44 2013 +0100 Added support for parameters in SELECT clauses. commit b4351d2890cd1090d3ff2d203fe148937324c935 Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Mon Feb 11 22:30:22 2013 +0100 Documented backwards incompatibilities in the two previous commits. commit 91ef84713c81bd455f559dacf790e586d08cacb9 Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Mon Feb 11 09:42:31 2013 +0100 Used QuerySet.datetimes for the admin's date_hierarchy. commit 0d0de288a5210fa106cd4350961eb2006535cc5c Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Mon Feb 11 09:29:38 2013 +0100 Used QuerySet.datetimes in date-based generic views. commit 9c0859ff7c0b00734afe7fc15609d43d83215072 Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Sun Feb 10 21:43:25 2013 +0100 Implemented QuerySet.datetimes on Oracle. commit 68ab511a4ffbd2b811bf5da174d47e4dd90f28fc Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Sun Feb 10 21:43:14 2013 +0100 Implemented QuerySet.datetimes on MySQL. commit 22d52681d347a8cdf568dc31ed032cbc61d049ef Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Sun Feb 10 21:42:29 2013 +0100 Implemented QuerySet.datetimes on SQLite. commit f6800fd04c93722b45f9236976389e0b2fe436f5 Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Sun Feb 10 21:43:03 2013 +0100 Implemented QuerySet.datetimes on PostgreSQL. commit 0c829c23f4cf4d6804cadcc93032dd4c26b8c65e Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Sun Feb 10 21:41:08 2013 +0100 Added datetime-handling infrastructure in the ORM layers. commit 104d82a7778cf3f0f5d03dfa53709c26df45daad Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Mon Feb 11 10:05:55 2013 +0100 Updated null_queries tests to avoid clashing with the __second lookup. commit c01bbb32358201b3ac8cb4291ef87b7612a2b8e6 Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Sun Feb 10 23:07:41 2013 +0100 Updated tests of .dates(). Replaced .dates() by .datetimes() for DateTimeFields. Replaced dates with datetimes in the expected output for DateFields. commit 50fb7a52462fecf0127b38e7f3df322aeb287c43 Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Sun Feb 10 21:40:09 2013 +0100 Updated and added tests for QuerySet.datetimes. commit a8451a5004c437190e264667b1e6fb8acc3c1eeb Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Sun Feb 10 22:34:46 2013 +0100 Documented the new time lookups and updated the date lookups. commit 29413eab2bd1d5e004598900c0dadc0521bbf4d3 Author: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Sun Feb 10 16:15:49 2013 +0100 Documented QuerySet.datetimes and updated QuerySet.dates.
2013-02-10Fixed #19638 -- Skipped tx support testing for some DBsAnssi Kääriäinen
PostgreSQL and Oracle always support transactions, so the create table and rollback test is non-necessary on those DBs. Thanks to shai for report.
2013-02-10Fixed #19707 -- Reset transaction state after requestsAnssi Kääriäinen
2013-02-08Moved import in db.backends.creationClaude Paroz
2013-01-31Fixed #19709 -- Fixed TimeField introspection on MySQLClaude Paroz
Thanks Eugene Grachev for the report.
2013-01-28Fixed #19677 -- Introspection of recursive foreign keys under SQLite.Aymeric Augustin
Thanks Simon Charette.