summaryrefslogtreecommitdiff
path: root/django/db
AgeCommit message (Collapse)Author
2009-03-20Fixed #2698 -- Fixed deleting in the presence of custom managers.Malcolm Tredinnick
A custom manager on a related object that filtered away objects would prevent those objects being deleted via the relation. This is now fixed. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10104 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-20Fixed #10547 -- Worked around some odd behaviour in Python 2.3 and 2.4.Malcolm Tredinnick
Calling the super() version of __reduce__ in Model.__reduce__ led to infinite loops in Python prior to 2.5. We don't do that any longer. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10099 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-19Typo fix for an error path in r100090.Malcolm Tredinnick
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10091 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-19Fixed #5420 -- Added support for delayed loading of model fields.Malcolm Tredinnick
In extreme cases, some fields are expensive to load from the database (e.g. GIS fields requiring conversion, or large text fields). This commit adds defer() and only() methods to querysets that allow the caller to specify which fields should not be loaded unless they are accessed. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10090 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-18Fixed #8193: all dynamic imports in Django are now done correctly. I know ↵Jacob Kaplan-Moss
this because Brett Cannon borrowed the time machine and brought Python 2.7's '`importlib` back for inclusion in Django. Thanks for the patch-from-the-future, Brett! git-svn-id: http://code.djangoproject.com/svn/django/trunk@10088 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-18Fixed #10356 -- Added pure-Python inheritance for models (a.k.a proxy models).Malcolm Tredinnick
Large portions of this are needed for #5420, so I implemented it fully. Thanks to Ryan Kelly for an initial patch to get this started. Refs #5420. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10083 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-16More fixing of PostgreSQL < 8.2 problems with the psycopg2 backend.Malcolm Tredinnick
Affects the postgresql_psycopg2 backend only. We now don't use the "RETURNING" syntax in SQL INSERT statements unless it's required by the autocommit behaviour. This fixes an edge-case that could cause crashes with earlier PostgreSQL versions, but the broader problem remains to be fixed (which is #10509). Fixed #10467. Refs #10509. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10065 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-15Use plain model.Manager, or suitable proxy, for model saving.Malcolm Tredinnick
We can't use the default manager in Model.save_base(), since we need to retrieve existing objects which might be filtered out by that manager. We now always use a plain Manager instance at that point (or something that can replace it, such as a GeoManager), making all existing rows in the database visible to the saving code. The logic for detecting a "suitable replacement" plain base is the same as for related fields: if the use_for_related_fields is set on the manager subclass, we can use it. The general requirement here is that we want a base class that returns the appropriate QuerySet subclass, but does not restrict the rows returned. Fixed #8990, #9527. Refs #2698 (which is not fixed by this change, but it's the first part of a larger change to fix that bug.) git-svn-id: http://code.djangoproject.com/svn/django/trunk@10056 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-14Fixed #10425 -- Corrected the interaction of .count() with .annotate() when ↵Russell Keith-Magee
.values() is also involved. Thanks to kmassey for the report. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10053 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-13Fixed #10488: fixed DB cache backend test failures in Oracle.Ian Kelly
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10051 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-13Fixed #10238: coerce TextField values to unicode in the oracle backend.Ian Kelly
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10049 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-13Fixed a case where column aliases weren't being quoted properly.Ian Kelly
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10048 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-13Prevented InsertQuery from appending a 'RETURNING' clause when it's not ↵Ian Kelly
actually interested in the result. This was causing some problems for Oracle. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10047 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-13Improved the error message in case of an invalid DATABASE_BACKEND to ignore ↵Adrian Holovaty
'.svn' directories in displaying the list of valid backends git-svn-id: http://code.djangoproject.com/svn/django/trunk@10046 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-13Fixed #10487 -- Refactored the database-backend-selection logic into a ↵Adrian Holovaty
function, django.db.load_backend. Thanks to Alex Gaynor for the initial patch git-svn-id: http://code.djangoproject.com/svn/django/trunk@10045 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-12Fixed #10473: Added Oracle support for "RETURNING" ids from insert statements.Ian Kelly
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10044 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-12Tweaked the dummy database backend initialisation.Malcolm Tredinnick
In order to report more comphrehensible tracebacks, remove the super() constructor call, since passing args to object.__init__ ends badly. So some subclassing possibilities are now removed, but it's the "dummy" backend, so we can make some compromises. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10042 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-12Fixed #10467 -- Fixed generated INSERT SQL for PostgreSQL 8.1 and earlier.Malcolm Tredinnick
I introduced a bad regression in r10029, forgetting to check that some syntax was supported. For now, you can't use autocommit=True with 8.1 and earlier (it's still available for later versions). I'll fix the broader issue later and re-enable it for those versions, but I want to get the SQL regression for the default path out of the code right now. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10035 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-12Return last insert ID correctly when the feature is enabled.Malcolm Tredinnick
This was overlooked when merging the patch from #3460 in r10029. Thank to Ian Kelly for noticing. Refs #10467. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10034 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-12Slight refactoring of isolation setting from r10029.Malcolm Tredinnick
There was a bug in the way we were reading the DATABASE_OPTIONS setting and a lot of essentially duplicated code. This is neater. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10033 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-11Fixed some breakages in the Oracle test database handling from r10026.Ian Kelly
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10032 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-11Fixed #10463 -- Corrected a problem with the MySQL backend, introduced by ↵Russell Keith-Magee
[10026]. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10030 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-11Fixed #3460 -- Added an ability to enable true autocommit for psycopg2 backend.Malcolm Tredinnick
Ensure to read the documentation before blindly enabling this: requires some code audits first, but might well be worth it for busy sites. Thanks to nicferrier, iamseb and Richard Davies for help with this patch. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10029 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-11Fixed the django.contrib.gis test database creation as well.Malcolm Tredinnick
Refs r10026 and r10027. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10028 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-11Fixed some breakages in the test database handling from r10026.Malcolm Tredinnick
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10027 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-11Fixed #10459 -- Refactored the internals of database connection objects so ↵Adrian Holovaty
that connections know their own settings and pass around settings as dictionaries instead of passing around the Django settings module itself. This will make it easier for multiple database support. Thanks to Alex Gaynor for the initial patch. This is backwards-compatible but will likely break third-party database backends. Specific API changes are: * BaseDatabaseWrapper.__init__() now takes a settings_dict instead of a settings module. It's called settings_dict to disambiguate, and for easy grepability. This should be a dictionary containing DATABASE_NAME, etc. * BaseDatabaseWrapper has a settings_dict attribute instead of an options attribute. BaseDatabaseWrapper.options is now BaseDatabaseWrapper['DATABASE_OPTIONS'] * BaseDatabaseWrapper._cursor() no longer takes a settings argument. * BaseDatabaseClient.__init__() now takes a connection argument (a DatabaseWrapper instance) instead of no arguments. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10026 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-10Added savepoint support to the Oracle backend, necessary per the thread at ↵Ian Kelly
http://groups.google.com/group/django-developers/browse_thread/thread/c87cf2d97478c068/ git-svn-id: http://code.djangoproject.com/svn/django/trunk@10022 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-10Removed a FIXME from the queryset-refactor days.Malcolm Tredinnick
Turns out, nothing needed to be fixed. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10018 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-10Fixed #10443 -- Fixed model attribute updating after r10003.Malcolm Tredinnick
Adding a get_db_prep_save() call to the UpdateQuery code path meant it was being called twice if you updated an existing model attribute. This change removes that double call and also makes TimeField.to_python() a little more robust for the benefit of the Oracle backend (just in case). git-svn-id: http://code.djangoproject.com/svn/django/trunk@10013 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-09Fixed #3163 -- Add a "Meta.managed" option to models.Malcolm Tredinnick
This allows a model to be defined which is not subject to database table creation and removal. Useful for models that sit over existing tables or database views. Thanks to Alexander Myodov, Wolfgang Kriesing and Ryan Kelly for the bulk of this patch. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10008 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-09Pass values through get_db_prep_save() in a QuerySet.update() call.Malcolm Tredinnick
This removes a long-standing FIXME in the update() handling and allows for greater flexibility in the values passed in. In particular, it brings updates into line with saves for django.contrib.gis fields, so fixed #10411. Thanks to Justin Bronn and Russell Keith-Magee for help with this patch. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10003 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-08Fixed #9508 -- Added an appropriate FileField.__hash__ implementation.Malcolm Tredinnick
Required because we declare a custom __eq__ method. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9997 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-08Fixed #10432 -- Handle all kinds of iterators in queryset filters.Malcolm Tredinnick
Only consumes the iterators once and works with Python 2.3. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9986 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-06Fixed #9649 -- Better error handling in model creation.Malcolm Tredinnick
Previously, you could explicitly assign None to a non-null ForeignKey (or other) field when creating the model (Child(parent=None), etc). We now throw an exception when you do that, which matches the behaviour when you assign None to the attribute after creation. Thanks to ales.zoulek@gmail.com and ondrej.kohout@gmail.com for some analysis of this problem. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9983 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-06Fixed #6710 -- Made DATABASE_OPTIONS work with postgresql_psycopg2 backend.Malcolm Tredinnick
Thanks to rcoup for the patch. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9981 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-06Improved table join handling for comparisons against NULL.Malcolm Tredinnick
This fixes a broad class of bugs involving filters that look for missing related models and fields. Most of them don't seem to have been reported (the added tests cover the root cause). The exception is that this has also fixed #9868. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9979 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-04Made it explicit if you accidentally override a Field from a parent model.Malcolm Tredinnick
This was always not working reliably (model initialization and serialization were two of the problems). Now, it's an explicit error. Also, documented. Fixed #10252. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9974 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-04Fixed #10406 -- Fixed some problems with model inheritance and pk fields.Malcolm Tredinnick
Manually specifying both a OneToOneField(parent_link=True) and separate a primary key field was causing invalid SQL to be generated. Thanks to Ramiro Morales for some analysis on this one. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9971 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-04Fixed #10251 -- Fixed model inheritance when there's also an explicit pk field.Malcolm Tredinnick
git-svn-id: http://code.djangoproject.com/svn/django/trunk@9970 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-04Fixed #10362 -- An update() that only affects a parent model no longer crashes.Malcolm Tredinnick
This includes a fairly large refactor of the update() query path (and the initial portions of constructing the SQL for any query). The previous code appears to have been only working more or less by accident and was very fragile. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9967 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-04Changed the row count value returned from update queries in some cases.Malcolm Tredinnick
If an update only affected an ancestor model (not the child), we were returning 0 for the number of rows updated. This could have been misleading if the value is used to detect an update occuring. So we now return the rowcount from the first non-trivial query that is executed (if any). Still a slight compromise, but better than what we had. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9966 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-04Changed the handling of as_sql() versus _as_sql() in Query/QuerySet from r9928.Malcolm Tredinnick
This avoids inadvertently hiding AttributeError that is raised for other reasons. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9965 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-02Fixed #10181 -- Handle an EmptyResultSet exception case properly in nested ↵Malcolm Tredinnick
querysets. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9951 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-01Changed the way cache specifiers are parsed.Malcolm Tredinnick
Allows us to reuse the same code in multiple places, avoiding new and interesting bugs (the testing framework had a DIY version that was slightly wrong, for example). Fixed #9833. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9936 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-01Fixed #8737 -- Made the PostgreSQL version number detection more flexible.Malcolm Tredinnick
git-svn-id: http://code.djangoproject.com/svn/django/trunk@9931 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-01Fixed #8706 -- Improved the way we detect available database backends.Malcolm Tredinnick
Thanks, victor@egenix.com. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9930 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-01To avoid an unfortunately common user-error, rename QuerySet.as_sql().Malcolm Tredinnick
This was never a public API method, so this is backwards compatible, unless you're poking at the internals. Refs #10352. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9928 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-01Fixed insert/update handling when no database interaction is required.Malcolm Tredinnick
Fixed #10205 as part of this. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9926 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-03-01Fixed #10202 -- Fixed another couple of slicing edge-cases with querysets.Malcolm Tredinnick
Patch from Alex Gaynor and Ramiro Morales. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9924 bcc190cf-cafb-0310-a4f2-bffc1f526a37
2009-02-28Fixed #10028 -- Fixed a problem when ordering by related models.Malcolm Tredinnick
Some results were inadvertently being excluded if we were ordering across a nullable relation which itself ordering by a non-nullable relation. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9916 bcc190cf-cafb-0310-a4f2-bffc1f526a37