Commit Graph

1736 Commits

Author SHA1 Message Date
Tim Graham d5af14aa84 Fixed #30055 -- Dropped support for SQLite < 3.8.3. 2018-12-22 16:59:28 -05:00
Simon Charette 790d108c97 Refs #30033 -- Checked constraints before committing SQLite schema changes.
This order of operations is more in line with SQLite's documented table
rebuild procedure and ensures that changes aren't committed if foreign key
integrity is broken.
2018-12-22 15:26:46 -05:00
Simon Charette 6b9bd0933e Refs #29928 -- Added supports_pragma_foreign_key_check SQLite feature flag. 2018-12-22 15:14:33 -05:00
Simon Charette f3eb1cfb58 Refs #29928 -- Corrected SQLite's can_defer_constraint_checks feature flag. 2018-12-22 15:13:46 -05:00
Simon Charette 25a0781a16 Refs #29182 -- Corrected SQLite's supports_atomic_references_rename feature flag. 2018-12-22 14:58:08 -05:00
Simon Charette e5b8626c0e Refs #29547 -- Corrected SQLite's supports_partial_indexes feature flag. 2018-12-22 14:51:59 -05:00
Simon Charette 20f6f9eaa1 Renamed SQLite3 references to to SQLite.
The version suffix isn't part of the product name.
2018-12-22 14:20:43 -05:00
Simon Charette 1939dd49d1 Fixed #29928 -- Enabled deferred constraint checks on SQLite 3.20+.
Refs #11665, #14204.

Thanks Michel Samia for the report.
2018-12-17 11:03:44 +01:00
Simon Charette 894cb13779 Refs #29182 -- Stopped relying on legacy alter table semantic on SQLite 3.26+.
SQLite 3.26 changed the behavior of table and column renaming operations to
repoint foreign key references even if foreign key checks are disabled.

This makes the workarounds in place to simulate this behavior unnecessary on
SQLite 3.26+. Refs #30033.
2018-12-17 10:44:05 +01:00
Simon Charette 7289874adc Fixed #30033 -- Conformed to the recommended table alterations procedure on SQlite3.
Refs #29182.

The previous implementation was following a procedure explicitly documented
as incorrect and was the origin of the breakage experienced on SQLite 3.26
release that were addressed by c8ffdbe514.

Thanks to Richard Hipp for pointing out the usage of the incorrect procedure.
2018-12-17 10:44:05 +01:00
Simon Charette a939d630a4 Refs #29928 -- Implemented fast constraint checking on SQLite 3.20+. 2018-12-17 10:44:05 +01:00
Simon Charette 315357ad25 Fixed #30023 -- Prevented SQLite schema alterations while foreign key checks are enabled.
Prior to this change foreign key constraint references could be left pointing
at tables dropped during operations simulating unsupported table alterations
because of an unexpected failure to disable foreign key constraint checks.

SQLite3 does not allow disabling such checks while in a transaction so they
must be disabled beforehand.

Thanks ezaquarii for the report and Carlton and Tim for the review.
2018-12-15 18:51:59 -05:00
Mariusz Felisiak f0082b9a77
Refs #28670 -- Fixed DatabaseFeatures.supports_slicing_ordering_in_compound on Oracle. 2018-12-10 12:56:09 +00:00
Simon Charette c8ffdbe514 Fixed #29182 -- Fixed schema table alteration on SQLite 3.26+.
SQLite 3.26 repoints foreign key constraints on table renames even when
foreign_keys pragma is off which breaks every operation that requires
a table rebuild to simulate unsupported ALTER TABLE statements.

The newly introduced legacy_alter_table pragma disables this behavior
and restores the previous schema editor assumptions.

Thanks Florian Apolloner, Christoph Trassl, Chris Lamb for the report and
troubleshooting assistance.
2018-12-07 13:32:37 -05:00
Mariusz Felisiak f9a33e3c3f Fixed #29932 -- Fixed combining compound queries with sub-compound queries on SQLite and Oracle. 2018-12-06 15:31:33 -05:00
Tim Graham 88619e6129
Bumped mysqlclient requirement to >= 1.3.13.
There are test failures with older versions.
2018-12-06 14:49:27 -05:00
Tim Graham 284b3221a2 Fixed #30013 -- Fixed DatabaseOperations.last_executed_query() with mysqlclient 1.3.14+. 2018-12-05 14:46:23 -05:00
Mariusz Felisiak f091ea3515
Refs #29722 -- Added introspection of materialized views for Oracle.
Thanks Tim Graham for the review.
2018-11-26 19:45:05 +01:00
Mariusz Felisiak d5f4ce9849
Fixed #29949 -- Refactored db introspection identifier converters.
Removed DatabaseIntrospection.table_name_converter()/column_name_converter()
and use instead DatabaseIntrospection.identifier_converter().

Removed DatabaseFeatures.uppercases_column_names.

Thanks Tim Graham for the initial patch and review and Simon Charette
for the review.
2018-11-21 09:06:50 +01:00
Tim Graham acdd18dffc
Changed BaseDatabaseSchemaEditor._effective_default() to staticmethod.
Follow up to 9cac10eee4.
2018-11-20 18:01:18 -05:00
Nick Pope ebd270627c Refs #29722 -- Added introspection of partitions for PostgreSQL. 2018-11-19 14:06:01 -05:00
Sergey Fedoseev 80ba7a881f Fixed cached_properties that share a common property.
The aliases aren't cached and thus the old usage will be an error after
refs #29478.
2018-11-19 08:59:46 -05:00
Tim Graham 9cac10eee4 Added BaseDatabaseSchemaEditor._effective_default() to allow testing without a connection. 2018-11-17 19:27:53 -05:00
Tim Graham e62f6e0968 Fixed #29505 -- Removed SchemaEditor's calling of callable defaults.
Thanks Eugene Pakhomov for the suggested fix.
2018-11-17 19:27:53 -05:00
Mariusz Felisiak ff8020ed49 Fixed #29788 -- Added support for Oracle Managed File (OMF) tablespaces. 2018-11-13 18:22:41 -05:00
Simon Charette db13bca60a Fixed #29641 -- Added support for unique constraints in Meta.constraints.
This constraint is similar to Meta.unique_together but also allows
specifying a name.

Co-authored-by: Ian Foote <python@ian.feete.org>
2018-11-13 17:57:27 -05:00
Simon Charette dba4a634ba Refs #29641 -- Refactored database schema constraint creation.
Added a test for constraint names in the database.

Updated SQLite introspection to use sqlparse to allow reading the
constraint name for table check and unique constraints.

Co-authored-by: Ian Foote <python@ian.feete.org>
2018-11-13 15:25:44 -05:00
Tim Graham f82be9ebc7
Fixed #29934 -- Added sqlparse as a require dependency. 2018-11-09 19:09:36 -05:00
Srinivas Reddy Thatiparthy 978ad6d4c0 Removed unused 'tz' variable in typecast_timestamp(). 2018-11-09 12:47:02 -05:00
Tom Forbes d5e52f2bef Removed DatabaseOperation.savepoint_create/rollback_sql() on Oracle.
Obsolete since 918f44e3ae.
2018-11-04 18:21:59 -05:00
Jayantha Gumballi dfcdc8992f Fixed #29886 -- Fixed unaccent lookup when PostgreSQL's standard_conforming_strings option is off.
Thanks Tom McClure for the patch.
2018-11-01 11:14:34 -04:00
Mads Jensen a906c98982 Fixed #29547 -- Added support for partial indexes.
Thanks to Ian Foote, Mariusz Felisiak, Simon Charettes, and
Markus Holtermann for comments and feedback.
2018-10-29 19:34:54 -04:00
thomazzo 9625d13f7b Fixed #29882 -- Added events and stored routines to MySQL's cloned test databases. 2018-10-29 14:45:30 -04:00
Simon Charette 95bda03f2d Fixed #29868 -- Retained database constraints on SQLite table rebuilds.
Refs #11964.

Thanks Scott Stevens for testing this upcoming feature and the report.
2018-10-29 10:33:41 +01:00
Hampus Dunström 5e8a07d69d Fixed #29763 -- Added support for column renaming on SQLite. 2018-10-27 20:26:39 -04:00
Tim Graham 717ee63e56
Refs #27025 -- Removed obsolete sqlite3 transaction management workaround for Python 3.6+.
Obsolete per https://bugs.python.org/issue10740#msg274816.
2018-10-25 19:54:48 -04:00
Mariusz Felisiak c6525bea9e Fixed #29534 -- Made dbshell use rlwrap on Oracle if available. 2018-10-25 19:39:42 -04:00
Sergey Fedoseev 9a88c6dd6a Fixed #29827 -- Fixed reuse of test databases with --keepdb on MySQL.
Regression in e1253bc26f.
2018-10-25 19:37:41 -04:00
Tim Graham f1d1634493 Removed useless check in sqlite's DatabaseWrapper._savepoint_allowed().
Obsolete since 27193aea00.
2018-10-25 10:17:37 -04:00
Tim Graham 9b52bd6575 Made DatabaseFeatures.uses_savepoints default to True. 2018-10-25 10:02:47 -04:00
Mariusz Felisiak 641742528a Fixed F841 flake8 warning. 2018-10-24 09:13:10 -04:00
Mariusz Felisiak 328f5627dd
Fixed #29870 -- Added DurationField introspection for Oracle and PostgreSQL.
Thanks Tim Graham for the review.
2018-10-21 09:08:05 +02:00
Florian Apolloner bc7dd8490b Fixed #21171 -- Avoided starting a transaction when a single (or atomic queries) are executed.
Checked the following locations:

 * Model.save(): If there are parents involved, take the safe way and use
   transactions since this should be an all or nothing operation.

   If the model has no parents:

    * Signals are executed before and after the previous existing
      transaction -- they were never been part of the transaction.

    * if `force_insert` is set then only one query is executed -> atomic
      by definition and no transaction needed.

    * same applies to `force_update`.

    * If a primary key is set and no `force_*` is set Django will try an
      UPDATE and if that returns zero rows it tries an INSERT. The first
      case is completly save (single query). In the second case a
      transaction should not produce different results since the update
      query is basically a no-op then (might miss something though).

 * QuerySet.update(): no signals issued, single query -> no transaction
   needed.

 * Model/Collector.delete(): This one is fun due to the fact that is
   does many things at once.

   Most importantly though: It does send signals as part of the
   transaction, so for maximum backwards compatibility we need to be
   conservative.

   To ensure maximum compatibility the transaction here is removed only
   if the following holds true:

     * A single instance is being deleted.
     * There are no signal handlers attached to that instance.
     * There are no deletions/updates to cascade.
     * There are no parents which also need deletion.
2018-10-17 12:19:02 +02:00
Mariusz Felisiak f2e2a1bd4b
Fixed #29845 -- Fixed Cast crash on MySQL when casting to DecimalField. 2018-10-15 15:57:22 +02:00
Mariusz Felisiak a3052c35d1
Fixed various comments in django/db/backends/oracle/base.py. 2018-10-13 20:25:23 +02:00
Mariusz Felisiak 52fec5d18f
Fixed #29836 -- Bumped required cx_Oracle to 6.0. 2018-10-11 11:43:16 +02:00
Sergey Fedoseev 3957f767bb Simplified handling of DurationField values on MySQL/MariaDB. 2018-10-09 10:38:42 -04:00
Jon Dufresne efd8a82e26 Refs #27795 -- Removed force_bytes() usage in MySQL backend.
The mysqlclient cursor attribute `_last_executed` is always stored as
bytes. Decode it.

TextField values are already type str. No need to decode.
2018-10-03 10:37:36 +02:00
Nick Pope bf8b625a3b Refs #29722 -- Added introspection of materialized views for PostgreSQL. 2018-10-02 14:02:04 -04:00
Nick Pope 45ef3df7d0 Fixed #29719 -- Added introspection of foreign tables for PostgreSQL.
Thanks infinite-l00p for the initial patch.
2018-10-02 14:01:24 -04:00
Jon Dufresne 0bf7b25f8f Added django.db.backends.utils.names_digest() to remove redundant code. 2018-10-02 10:41:43 -04:00
Jon Dufresne c37b844349 Fixed ResourceWarning in MySQL's _clone_test_db(). 2018-10-02 10:23:21 -04:00
Claude Paroz fc3a463048 Fixed #29767 -- Made date-related casts work on SQLite
Thanks Rémy Hubscher for the report and Tim Graham and Simon Charette for the reviews.
2018-10-01 13:27:30 +02:00
Mariusz Felisiak 024abe5b82
Fixed #29630 -- Fixed crash of sliced queries with multiple columns with the same name on Oracle 12.1.
Regression in 0899d583bd.

Thanks Tim Graham for the review and Jani Tiainen for help.
2018-09-26 20:18:48 +02:00
Mariusz Felisiak 90d93a1b42
Made DatabaseWrapper.oracle_version() return a full version tuple. 2018-09-26 08:51:27 +02:00
Jon Dufresne 82f286cf6f Refs #29784 -- Switched to https:// links where available. 2018-09-26 08:48:47 +02:00
Oleg d1d5c97bc2 Fixed #29778 -- Fixed quoting of unique index names.
Regression in 3b429c9673.
2018-09-25 16:00:20 -04:00
Jon Dufresne abeed587b1 Refs #27795 -- Removed force_bytes() usage in db/backends/base/schema.py. 2018-09-25 09:54:06 -04:00
Jon Dufresne 1d65ddd9c3 Refs #27795 -- Removed force_bytes() usage in db/backends/utils.py. 2018-09-25 09:53:13 -04:00
Tom Forbes 9cbdb44014 Fixed #23646 -- Added QuerySet.bulk_update() to efficiently update many models. 2018-09-18 16:14:44 -04:00
Claude Paroz f5e347a640 Fixed #27899 -- Added support for phrase/raw searching in SearchQuery.
Thanks Tim Graham, Nick Pope, and Claude Paroz for contribution and review.
2018-09-17 12:03:52 -04:00
Mariusz Felisiak da92ec7962
Fixed #29759 -- Fixed crash on Oracle when fetching a returned insert id with cx_Oracle 7. 2018-09-16 12:45:34 +02:00
Nick Pope f87f9c5f63 Simplified introspection methods for PostgreSQL. 2018-09-14 14:34:43 -04:00
Srinivas Reddy Thatiparthy 34d6bceec4 Fixed #29500 -- Fixed SQLite function crashes on null values.
Co-authored-by: Srinivas Reddy Thatiparthy <thatiparthysreenivas@gmail.com>
Co-authored-by: Nick Pope <nick.pope@flightdataservices.com>
2018-09-10 15:08:55 -04:00
Nick Pope 76dfa834e7 Combined two identical SQLite functions. 2018-09-10 14:41:58 -04:00
Nick Pope af7a758dcb Made some date parsing in SQLite functions more DRY. 2018-09-10 14:41:20 -04:00
Jon Dufresne 5311a36da5 Refs #29654 -- Replaced three dots with ellipsis in DB creation output strings. 2018-08-28 07:56:34 -04:00
Claude Paroz 50b8493581 Refs #29654 -- Replaced three dots with ellipsis character in output strings. 2018-08-22 09:13:58 -04:00
Sigurd Ljødal 3e09b37f80 Fixed #28649 -- Added ExtractIsoYear database function and iso_year lookup. 2018-08-18 13:09:15 -04:00
Jon Dufresne bf17f5e884 Refs #29015 -- Added database name to PostgreSQL database name too long exception. 2018-08-17 12:43:56 -04:00
Tom f1fbef6cd1 Fixed #28668 -- Allowed QuerySet.bulk_create() to ignore insert conflicts. 2018-08-03 17:40:46 -04:00
Mariusz Felisiak 1a9cbf41a1
Fixed #29613 -- Fixed --keepdb on PostgreSQL if the database exists and the user can't create databases.
Regression in e776dd2db6.

Thanks Tim Graham for the review.
2018-08-03 10:31:55 +02:00
Nick Pope 6b4d1ec8ff Fixed #29614 -- Added BTreeIndex to django.contrib.postres. 2018-08-02 11:42:57 -04:00
Nick Pope d6381d3559 Fixed #28990 -- Added autosummarize parameter to BrinIndex. 2018-08-02 11:26:58 -04:00
Tom Forbes 4198445afc Refs #29548 -- Fixed failing window tests on MariaDB 10.3. 2018-07-30 19:54:56 -04:00
Andrew Brown c0e3c65b9d Fixed #29563 -- Added result streaming for QuerySet.iterator() on SQLite. 2018-07-25 18:08:57 -04:00
Mariusz Felisiak ac25dd1f8d
Fixed #29569 -- Fixed Cast() with AutoField and BigAutoField. 2018-07-25 08:00:11 +02:00
Claude Paroz 65503ca097 Fixed #29040 -- Made test database creation messages use a consistent output stream. 2018-07-19 18:05:33 -04:00
Oliver Sauder a07a49ee32 Fixed #29559 -- Fixed TransactionTestCase.reset_sequences for auto-created m2m through models. 2018-07-11 17:20:29 -04:00
Ian Foote 952f05a6db Fixed #11964 -- Added support for database check constraints. 2018-07-10 15:32:33 -04:00
Sergey Fedoseev 6fbfb5cb96 Removed Oracle's fetchmany() and fetchall() wrappers.
Follow up to e06cab2600.
2018-07-10 15:03:09 -04:00
Tom Forbes 45c035c823 Refs #29548 -- Fixed non-GIS test failures on MariaDB. 2018-07-09 14:59:42 -04:00
Michal Čihař 39e287d8bf Fixed #29544 -- Fixed regex lookup on MariaDB.
Regression in 4249076844.
2018-07-05 12:11:49 -04:00
Junyi Jiao a0b19a0f5b Refs #28643 -- Added math database functions.
Thanks Nick Pope for much review.
2018-07-05 11:02:12 -04:00
Mariusz Felisiak d7d32964ef Fixed #29541 -- Fixed Cursor.execute() crash when setinputsizes() is called without arguments wit cx_Oracle 6.4. 2018-07-04 12:57:29 -04:00
Tim Graham 4009e1f2ab
Removed unused code in django.db.backends.utils.format_number(). 2018-07-02 16:10:35 -04:00
Sergey Fedoseev b49b59b029 Simplified SQLite's Decimal adapter. 2018-07-02 13:36:40 -04:00
Ian Foote 38cada7c94 Fixed #28077 -- Added support for PostgreSQL opclasses in Index.
Thanks Vinay Karanam for the initial patch.
2018-06-29 17:00:28 -04:00
Thomas Grainger 4fba321a45 Fixed #29480 -- Made MySQL backend retrieve constraint columns in their defined order. 2018-06-29 10:43:53 -04:00
Tim Graham b9cf764be6 Fixed #29517 -- Added support for SQLite column check constraints on positive integer fields. 2018-06-25 14:01:04 -04:00
Tom 4249076844 Refs #29451 -- Fixed regex/iregex lookups on MySQL 8. 2018-06-20 10:57:28 -04:00
Mariusz Felisiak 6dd4edb1b4
Fixed #29496 -- Fixed crash on Oracle when converting a non-unique field to primary key.
Thanks Tim Graham for the review.
2018-06-17 08:51:02 +02:00
Markus Holtermann e01fa015c0 Refs #27098 -- Removed unused introspection queries.
Unused since 578711c310.

Thanks Ian Foote for finding this.
2018-05-26 16:29:02 +02:00
bakabiko a7bc1aea03 Fixed #29380 -- Added support for QuerySet.select_for_update()'s nowait and skip_locked options on MySQL 8+. 2018-05-18 19:37:36 -04:00
Tim Graham 7ac3008fe4
Refs #29350 -- Fixed 'invalid escape sequence' warning in SQLite introspection. 2018-05-08 10:42:24 -04:00
Mariusz Felisiak 483cc1c430
Refs #28859 -- Fixed "no data found" exception handling with cx_Oracle 6.3+. 2018-04-28 19:39:45 +02:00
Zackary Troop 30f8642f2e Fixed #29350 -- Fix get_primary_key_column() method in sqlite3 backend
Thanks Tim Graham and Mariusz Felisiak for the reviews.
2018-04-28 12:01:45 +02:00
priyanshsaxena 6b3d292043 Fixed #29015 -- Added an exception if the PostgreSQL database name is too long. 2018-04-27 21:37:42 -04:00
Tom c1c163b427 Fixed #28574 -- Added QuerySet.explain(). 2018-04-19 10:52:19 -04:00
Brett Cannon 64b74804c5 Fixed #29334 -- Updated pypi.python.org URLs to pypi.org. 2018-04-17 20:24:27 -04:00
Mariusz Felisiak e0a3cfaca0 Simplified Oracle's DatabaseOperations.cache_key_culling_sql() with LIMIT/OFFSET. 2018-04-17 12:50:43 -04:00
Jeremy Bowman ee17bb8a67 Fixed #29193 -- Prevented unnecessary foreign key drops when altering a unique field.
Stopped dropping and recreating foreign key constraints on other fields
in the same table as the one which is actually being altered in an
AlterField operation.

Regression in c3e0adcad8.
2018-04-11 23:17:11 -04:00
Mariusz Felisiak 816b386d41
Refs #24791 -- Made PostgreSQL's nodb connection use first PostgresSQL db when 'postgres' db isn't available.
Thanks Tim Graham and Claude Paroz for reviews.
2018-04-03 22:21:47 +02:00
Mariusz Felisiak 55cc26941a
Refs #28643 -- Added Repeat database function.
Thanks Tim Graham and Nick Pope for reviews.
2018-04-03 19:36:12 +02:00
Mariusz Felisiak 6141c752fe
Fixed #29251 -- Added bytes to str conversion in LPad/RPad database functions on MySQL.
Thanks Tim Graham for the review.
2018-04-03 18:24:04 +02:00
Tim Graham 6421bd702f Refs #29227 -- Made inspectdb generate BooleanField(null=True) rather than NullBooleanField. 2018-03-20 12:10:10 -04:00
Tim Graham 5fa4f40f45 Fixed #29227 -- Allowed BooleanField to be null=True.
Thanks Lynn Cyrin for contributing to the patch, and Nick Pope for review.
2018-03-20 12:10:10 -04:00
Mariusz Felisiak cede5111bb
Refs #28643 -- Added LPad and RPad database functions.
Thanks Tim Graham for the review.
2018-03-19 17:35:16 +01:00
Claude Paroz 3c4ff21763 Fixed #29103 -- Removed bad 'b'-prefix added by MySQL's SchemaEditor.quote_value(). 2018-03-17 16:36:54 -04:00
Tim Graham f8b98f0edc Removed DatabaseFeatures.can_introspect_null.
The only known usage is in the unmaintained django-pymssql project.
2018-03-16 11:43:41 -04:00
Mariusz Felisiak 362813d628
Fixed hanging indentation in various code. 2018-03-16 10:54:34 +01:00
Mariusz Felisiak acfc650f2a
Fixed #29199 -- Fixed crash when database user password contains @ sign on Oracle.
Thanks Shane Allgeier for the report and Tim Graham for the review.
2018-03-13 19:06:40 +01:00
Sergey Fedoseev d696fccae6 Fixed #29209 -- Fixed Cast() with TextField on MySQL and Oracle. 2018-03-12 21:57:14 -04:00
Tomer Chachamu c12745f682 Fixed typo in django/db/backends/base/schema.py. 2018-03-12 13:49:36 -04:00
Дилян Палаузов 45aaf6608d Removed unused variable in BaseDatabaseSchemaEditor.effective_default(). 2018-03-12 12:06:06 -04:00
Sergey Fedoseev ba4a986240 Refs #28459 -- Improved performance of time difference expressions on MySQL. 2018-03-01 14:42:21 +05:00
Mariusz Felisiak 074a2f7f58
Refs #28909 -- Simplifed code using unpacking generalizations. 2018-02-26 18:23:31 +01:00
Matthew Wilkes 2162f0983d Fixed #24747 -- Allowed transforms in QuerySet.order_by() and distinct(*fields). 2018-02-10 19:08:55 -05:00
Mariusz Felisiak 34b52f8572
Renamed the allow_sliced_subqueries database feature to allow_sliced_subqueries_with_in.
After 0899d583bd this database feature is
false only on MySQL which doesn't support sliced subqueries only with
IN/ALL/ANY/SOME.
2018-02-07 08:27:47 +01:00
Mariusz Felisiak f73f821143 Removed uneeded comment in DatabaseWrapper.check_constraints() on SQLite/MySQL backends. 2018-01-31 20:02:45 -05:00
bquinn c2b969e124 Fixed #29004 -- Added inspectdb --include-views option. 2018-01-27 18:51:40 -05:00
Sigurd Ljødal a455e732a0 Fixed #28650 -- Added TruncWeek database function. 2018-01-27 09:59:13 -05:00
Tim Martin 02365d3f38 Fixed #28542 -- Fixed deletion of primary key constraint if the new field is unique. 2018-01-13 20:11:55 -05:00
Дилян Палаузов a38ae914d8 Fixed #28996 -- Simplified some boolean constructs and removed trivial continue statements. 2018-01-12 12:44:50 -05:00
Tim Graham d60e8b856b Added DatabaseFeatures.is_postgresql_9_5 to avoid repetition. 2018-01-09 14:09:02 -05:00
Mariusz Felisiak 8f8a93a9ae
Fixed #28859 -- Made Oracle backend raise DatabaseError if "no data found" exception is hidden by the Oracle OCI library.
Thanks Tim Graham for the review and Jani Tiainen for the report.
2018-01-06 18:50:54 +01:00
Sergey Fedoseev 2115be616b Refs #28459 -- Improved performance of duration expressions on SQLite. 2018-01-04 17:16:17 -05:00
Дилян Палаузов d7b2aa24f7 Fixed #28982 -- Simplified code with and/or. 2018-01-03 20:12:23 -05:00
Mariusz Felisiak 51a00749e9
Used Decimal.scaleb() in backends.utils.format_number() and DecimalField.widget_attrs() to improve performance. 2017-12-30 18:05:15 +01:00
Sergey Fedoseev 98e78ac754 Bumped minimum supported mysqlclient version to 1.3.7.
Follow up to ad9390bba2.
2017-12-29 11:55:29 -05:00
Sergey Fedoseev 51ae4e1f32 Refs #28459 -- Used default date converter on SQLite for better performance.
See https://docs.python.org/3/library/sqlite3.html#default-adapters-and-converters.
2017-12-29 14:37:00 +05:00
Sergey Fedoseev ae6fa914aa Fixed #28926 -- Fixed loss of precision of big DurationField values on SQLite and MySQL. 2017-12-28 17:35:41 -05:00
Sergey Fedoseev 44908d4d93 Fixed #28967 -- Prevented Cast to FloatField from rounding to integer on MySQL. 2017-12-27 19:16:37 -05:00
Sergey Fedoseev ae1baa7d1d Refs #28459 -- Improved performance of loading DurationField on SQLite and MySQL. 2017-12-27 12:23:08 -05:00
Sergey Fedoseev d0f569b350 Refs #28459 -- Improved performance of loading DecimalField on SQLite. 2017-12-26 18:12:37 -05:00
Simon Charette 9f7772e098 Fixed #28884 -- Fixed crash on SQLite when renaming a field in a model referenced by a ManyToManyField.
Introspected database constraints instead of relying on _meta.related_objects
to determine whether or not a table or a column is referenced on rename
operations.

This has the side effect of ignoring both db_constraint=False and virtual
fields such as GenericRelation which aren't backend by database level
constraints and thus shouldn't prevent the rename operations from being
performed in a transaction.

Regression in 095c1aaa89.

Thanks Tim for the additional tests and edits, and Mariusz for the review.
2017-12-22 15:19:05 -05:00
Nick Pope f3a98224e6 Refs #28909 -- Simplifed code using unpacking generalizations. 2017-12-21 21:05:23 -05:00
Sergey Fedoseev ebc4ee3369 Refs #23941 -- Prevented incorrect rounding of DecimalField annotations on SQLite. 2017-12-21 19:50:56 -05:00
Sergey Fedoseev c8a85e3e91 Fixed #28932 -- Prevented Oracle from truncating trailing zeros in the fractional part of DecimalField.
Fixes the test added in 6fd6d8383f.
Regression in 7c1f3901bc.
2017-12-20 11:55:51 -05:00
Mariusz Felisiak fc9eec7bb7 Fixed #28934 -- Prevented Cast from truncating microseconds on Oracle. 2017-12-20 11:05:27 -05:00
Mariusz Felisiak 4420761ea9
Fixed #28727 -- Fixed Cast crash on SQLite when casting a Python date/datetime to Date/DateTimeField. 2017-12-19 19:54:58 +01:00
Sergey Fedoseev 9c9ef58352
Removed unused DatabaseOperations.date_interval_sql() on Oracle.
Unused since 5ca82e710e.
2017-12-16 23:59:36 +05:00
Sergey Fedoseev 6fd6d8383f Fixed #28915 -- Prevented SQLite from truncating trailing zeros in the fractional part of DecimalField.
This reverts commit a146b65628 and adds
a test for the regression.
2017-12-12 21:57:41 -10:00
Sergey Fedoseev f9a0766f1c Simplified SQLite converter for bool type. 2017-12-12 22:40:15 -05:00
Nick Pope d13a9e44de Fixed #28909 -- Simplified code using tuple/list/set/dict unpacking. 2017-12-11 07:08:45 -05:00
Sergey Fedoseev c5a2f48bed Improved performance of loading DateTimeField on Oracle and MySQL. 2017-12-08 09:53:27 -05:00
Mariusz Felisiak fc48047586
Refs #28876 -- Fixed incorrect foreign key constraint name for models with quoted db_table.
Thanks Simon Charette and Tim Graham for the review and Carlos E. C.
Leite for the report.
2017-12-05 21:11:20 +01:00
Дилян Палаузов d2afa5eb23 Fixed #28860 -- Removed unnecessary len() calls. 2017-12-04 10:35:23 -05:00
Simon Charette 095c1aaa89 Fixed #28849 -- Fixed referenced table and column rename on SQLite.
Thanks Ramiro for the input and Tim for the review.
2017-12-01 22:12:24 -05:00
Tim Graham c3e0adcad8 Fixed #28305 -- Fixed "Cannot change column 'x': used in a foreign key constraint" crash on MySQL with a sequence of AlterField or RenameField operations.
Regression in 45ded053b1.
2017-12-01 19:07:46 -05:00
Mads Jensen f0a68c2511 Fixed #28702 -- Made query lookups for CIText fields use citext. 2017-11-29 10:35:37 -05:00
Jon Dufresne 7a6fbf36b1 Fixed #28853 -- Updated connection.cursor() uses to use a context manager. 2017-11-28 11:28:09 -05:00
Дилян Палаузов 3308085838 Fixed #28854 -- Replaced type(True) with bool in sqlite's SchemaEditor. 2017-11-28 10:44:02 -05:00
Mariusz Felisiak ad5f33ee03
Refs #27954 -- Fixed typo in django/db/backends/postgresql/client.py comment. 2017-11-26 16:27:37 +01:00
Sergey Fedoseev 93cdd07e8f Used bytes.hex() and bytes.fromhex() to simplify. 2017-11-23 08:52:23 -05:00
Tim Graham e3c852cbd6
Fixed #28804 -- Fixed "Unknown system variable 'transaction_isolation'" on MariaDB.
Regression in 967450a3bf.
2017-11-20 10:08:34 -05:00
Simon Charette ee85ef8315 Fixed #28792 -- Fixed index name truncation of namespaced tables.
Refs #27458, #27843.

Thanks Tim and Mariusz for the review.
2017-11-14 21:36:25 -05:00
Sergey Fedoseev 967450a3bf Fixed #28794 -- Fixed tx_isolation deprecation warning on MySQL 5.7.20+. 2017-11-14 15:40:44 -05:00
Дилян Палаузов c69e4bc691 Fixed #28769 -- Replaced 'x if x else y' with 'x or y'. 2017-11-07 09:08:46 -05:00
Nick 3d22121a0b Clarified error message for when sqlplarse isn't installed. 2017-11-03 10:09:46 -04:00
Mariusz Felisiak 0899d583bd Fixed #28670 -- Added FETCH/OFFSET support on Oracle.
Thanks Tim Graham for the review.
2017-10-09 18:07:03 +02:00
Simon Charette 9d93dff333 Fixed #28665 -- Change some database exceptions to NotImplementedError per PEP 249. 2017-10-06 12:47:08 -04:00
Mariusz Felisiak 1b823b8f18 Fixed #28596 -- Fixed QuerySet.bulk_create() and cascade deletion crash on Oracle when using more than 65535 parameters.
Thanks Tim Graham for the review.
2017-10-05 18:52:37 +02:00
Mariusz Felisiak 03da070f5c Refs #28670 -- Moved LIMIT/OFFSET SQL to DatabaseOperations.limit_offset_sql().
Thanks Tim Graham for the review.
2017-10-04 20:24:38 +02:00
Tim Graham d0c761d3f8 Refs #28584 -- Removed unused DatabaseFeatures.can_share_in_memory_db. 2017-10-03 20:17:12 -04:00
Tim Graham 27193aea00 Fixed #28584 -- Dropped support for SQLite < 3.7.15. 2017-10-03 10:42:18 -04:00
Mads Jensen 6d1df84c00 Corrected typos in BaseDatabaseOperations exception messages. 2017-09-30 19:18:51 -04:00
Tim Graham dd82f33271 Fixed #27979 -- Made MySQL raise IntegrityError rather than OperationalError when saving negative numbers in PositiveInteger fields. 2017-09-29 15:20:32 -04:00
Mads Jensen 8d40eb0e89 Used NotSupportedError for some unsupported database opreations per PEP 249. 2017-09-29 09:49:55 -04:00
Tim Graham 1d8cfa3608 Fixed #28626 -- Dropped support for PostgreSQL 9.3.
Thanks Simon Charette for the introspection changes.
2017-09-27 11:00:04 -04:00
Tim Graham a80903b711 Removed DatabaseFeatures.supports_microsecond_precision.
MySQL 5.5 (refs #28552) was the last database to use it.
2017-09-25 14:48:15 -04:00
Tim Graham 8a1768432b Fixed #28552 -- Dropped support for MySQL 5.5. 2017-09-25 14:48:11 -04:00
Tim Graham 578711c310 Refs #27098 -- Removed DatabaseIntrospection.get_indexes() per deprecation timeline. 2017-09-22 12:51:18 -04:00
Shai Berger d612026c37 Refs #28595 -- Added a hook to add execute wrappers for database queries.
Thanks Adam Johnson, Carl Meyer, Anssi Kääriäinen, Mariusz Felisiak,
Michael Manfre, and Tim Graham for discussion and review.
2017-09-21 12:13:09 -04:00
Mads Jensen d549b88050 Fixed #26608 -- Added support for window expressions (OVER clause).
Thanks Josh Smeaton, Mariusz Felisiak, Sergey Fedoseev, Simon Charettes,
Adam Chainz/Johnson and Tim Graham for comments and reviews and Jamie
Cockburn for initial patch.
2017-09-18 09:42:29 -04:00
Mads Jensen 3939e2b4dc Changed default value of DatabaseFeatures.has_bulk_insert to True. 2017-09-18 08:12:35 -04:00
Mariusz Felisiak c6a1faecc3 Refs #27090 -- Added real database sequence introspection.
Thanks Mariusz Felisiak for the Oracle part and Tim Graham for the
review.
2017-09-13 20:12:32 +02:00
Jon Dufresne 99e65d6488 Fixed #28578 -- Renamed DatabaseCreation number arguments to suffix. 2017-09-11 11:32:40 -04:00
Tim Graham 6e4c6281db Reverted "Fixed #27818 -- Replaced try/except/pass with contextlib.suppress()."
This reverts commit 550cb3a365
because try/except performs better.
2017-09-07 08:16:21 -04:00
Sergey Fedoseev 8b2515a450 Removed unneeded __init__() methods. 2017-09-07 08:10:49 -04:00
Sergey Fedoseev 34f27f910b Replaced @cached_property with class attributes where possible. 2017-09-06 10:13:43 -04:00
Sergey Fedoseev 690fc30d44 Removed DatabaseWrapper.psycopg2_version.
Unused since 3adc5f1ee6.
2017-09-06 09:51:56 -04:00
Mads Jensen 15f2d87ceb Removed unneeded __init__() in PostgreSQL DatabaseWrapper. 2017-09-05 16:22:36 -04:00
Mariusz Felisiak 179b247e07 Removed useless condition from Oracle's NullBooleanField's check constraint.
NULL cannot be compare with standard operators on Oracle, it works only
with IS NULL and IS NOT NULL operators. Therefore 'OR ... IS NULL'
condition in NullBooleanField's check constraint is redundant.
Nullability is checked in a separate constraint.
2017-09-05 11:17:06 +02:00
Kevin Grinberg c6a3546093 Fixed #28451 -- Restored pre-Django 1.11 Oracle sequence/trigger naming.
Regression in 69b7d4b116.
2017-08-22 15:51:08 -04:00
Mariusz Felisiak c47747d45a Removed postgresql_psycopg2.version
Uneeded since 29ea9714ee.
2017-08-21 09:13:07 +02:00
Mariusz Felisiak 6784383e93 Fixed #28498 -- Fixed test database creation with cx_Oracle 6. 2017-08-16 18:39:58 +02:00
Tom b78d100fa6 Fixed #27849 -- Added filtering support to aggregates. 2017-08-12 17:58:28 -04:00
Mariusz Felisiak 489421b015 Fixed #23546 -- Added kwargs support for CursorWrapper.callproc() on Oracle.
Thanks Shai Berger, Tim Graham and Aymeric Augustin for reviews and
Renbi Yu for the initial patch.
2017-08-12 21:06:49 +02:00
Sergey Fedoseev f3e350d631 Replaced typecast_decimal() with decimal.Decimal(). 2017-08-11 09:22:40 -04:00
Sergey Fedoseev a146b65628 Refs #28459 -- Improved performance of loading DecimalField on SQLite. 2017-08-10 15:32:28 -04:00
Sergey Fedoseev 22ff86ec52 Refs #28459 -- Made Oracle get_db_converters() return converter for empty strings only when it's needed. 2017-08-10 10:33:05 -04:00
Sergey Fedoseev 5244d7cf54 Simplified SQLite converter for bool type. 2017-08-09 18:10:34 -04:00
Sergey Fedoseev bb91c0a4dc Refs #4518 -- Removed handling of empty strings in typecast_decimal().
It's unclear if the original change was needed, but it seems unneeded now.
Reverted 6fc10f50b0.
2017-08-09 18:02:16 -04:00
Mariusz Felisiak 3189a93ceb Refs #23766 -- Added tests for CursorWrapper.callproc().
Thanks Tim Graham for the review.
2017-08-08 22:13:02 +02:00
Claude Paroz 831358f23d Fixed #28465 -- Unified index SQL creation in DatabaseSchemaEditor
Thanks Tim Graham for the review.
2017-08-08 17:37:43 +02:00
Srinivas Reddy Thatiparthy 6a793d1788 Removed unnecessary assignment in Oracle's FormatStylePlaceholderCursor._fix_for_params().
Obsolete since fae56427e1.
2017-08-07 10:11:54 -04:00
Mariusz Felisiak 5d9034bc92 Removed unused DatabaseOperations.last_insert_id() on PostgreSQL.
Unused since 9eb2afddfa.
2017-08-01 16:53:17 -04:00
Mariusz Felisiak b61d5b1991 Fixed #28371 -- Fixed Cast() with CharField if the max_length argument isn't provided.
Thanks Tim Graham for the review.
2017-07-27 19:36:47 +02:00
Mariusz Felisiak 8e41373c81 Allowed database backends to specify data types for Cast().
A small refactor ahead of refs #28371.
2017-07-26 20:26:58 -04:00
Mariusz Felisiak 28a02259cb Fixed DatabaseFeatures.has_case_insensitive_like on MySQL and Oracle.
Incorrect since its introduction in 20bab2cf9d.
2017-07-24 21:51:29 +02:00
Mariusz Felisiak fe9f383357 Refs #24996 -- Removed unused BaseDatabaseFeatures.supports_select_related.
Unused since 0c7633178f.
2017-07-24 13:46:02 -04:00
Tim Graham 487362fa8f Fixed #28370 -- Deprecated the context arg of Field.from_db_value() and Expression.convert_value().
Unused since a0d166306f.
2017-07-20 16:30:08 -04:00
Mariusz Felisiak e06cab2600 Fixed #28411 -- Used cx_Oracle.Cursor.outputtypehandler instead of _rowfactory() on Oracle.
Thanks Tim Graham for the review.
2017-07-19 08:42:52 +02:00
Mariusz Felisiak 776cee9749 Fixed #28391 -- Fixed Cast() with CharField and max_length on MySQL.
Thanks Tim Graham for the review.
2017-07-17 21:12:27 +02:00
Tim Graham feeafdad02 Removed unused enter/exit methods of MySQL's CursorWrapper.
Unused since their introduction in e1d839237f.
2017-07-17 13:16:29 -04:00
Sergey Fedoseev fc2dee6908 Removed unused branch in __getattr__() of Oracle and MySQL cursor wrappers. 2017-07-14 09:14:21 -04:00
Sergey Fedoseev 18db55bb31 Replaced Oracle CursorIterator with generator expression. 2017-07-14 14:15:00 +05:00
Claude Paroz 169c3b3e07 Fixed #14204 -- Enforced SQLite foreign key constraints.
Thanks Tim Graham for contributing to the patch and
Simon Charette for advice and review.
2017-07-11 09:07:31 -04:00
Mariusz Felisiak cf57ecb221 Fixed #28364 -- Removed redundant table joins in Oracle's DatabaseIntrospection.get_relations(). 2017-07-06 07:39:01 -04:00
Mariusz Felisiak df1106a40f Fixed #28365 -- Unified DatabaseOperations.date_interval_sql() return value with similar methods. 2017-07-06 07:37:47 -04:00
Mariusz Felisiak 7d8fc65f36
Removed obsolete comment about IntegerField introspection on Oracle.
Obsolete since e9d12bae1e.
2017-07-04 14:46:40 +02:00
Ran Benita b9f7dce84b Fixed #28010 -- Added FOR UPDATE OF support to QuerySet.select_for_update(). 2017-06-29 16:00:15 -04:00
Mads Jensen 550cb3a365 Fixed #27818 -- Replaced try/except/pass with contextlib.suppress(). 2017-06-28 14:07:55 -04:00
Mariusz Felisiak 3297dede7f Fixed #28046 -- Added the db_tablespace parameter to class-based indexes.
Thanks Markus Holtermann and Tim Graham for reviews.
2017-06-27 21:15:15 +02:00
Josh Schneier fba0eaa5d6 Fixed #28298 -- Prevented a primary key alteration from adding a foreign key constraint if db_constraint=False. 2017-06-22 21:31:56 -04:00
Simon Charette b1cbbe9267 Refs #25530 -- Deleted deferred SQL references on delete operation. 2017-06-21 00:26:30 -04:00
Simon Charette b50815ee41 Refs #25530 -- Renamed deferred SQL references on rename operation. 2017-06-21 00:26:30 -04:00
Simon Charette 3b429c9673 Refs #25530 -- Tracked references of deferred SQL statements. 2017-06-21 00:03:31 -04:00
Simon Charette ea91ad4c13 Refs #25530 -- Changed _create_index_name to take a table as first parameter. 2017-06-20 22:59:22 -04:00
Mads Jensen de42adf4ff Fixed #27869 -- Added fastupdate and gin_pending_list_limit params to GinIndex.
Thanks Tim Graham and Markus Holtermann for review.
2017-06-20 10:54:39 -04:00
Paul Tiplady 335a8d7895 Fixed #28322 -- Added dbshell support for MySQL client TLS certs. 2017-06-19 18:11:25 -04:00
chillaranand 08bda82c23 Fixed #27830 -- Used distutils.version.LooseVersion for version parsing. 2017-06-13 10:53:39 -04:00
Mads Jensen c7f6ffbdcf Fixed #28103 -- Added quarter extract, truncation, and lookup.
Thanks Mariusz Felisiak, Tim Graham, and Adam Johnson for review.
2017-06-08 15:15:29 -04:00
Florian Apolloner 823d73be3e Fixed #28275 -- Added more hooks to SchemaEditor._alter_field(). 2017-06-06 11:08:40 -04:00
Mariusz Felisiak 5e9f7f1e1c Refs #20483 -- Removed unneeded column from _foreign_key_constraints() on Oracle. 2017-06-06 14:25:53 +02:00
Mariusz Felisiak 516b7664dc Fixed #28260 -- Allowed customizing the test tablespace initial and autoextend size on Oracle.
Thanks Tim Graham for the review.
2017-06-02 18:35:56 +02:00
Mariusz Felisiak 8149bd00d8 Fixed #28258 -- Optimized Oracle introspection by using LISTAGG.
Thanks Tim Graham and Jani Tiainen for reviews.
2017-06-02 16:54:34 +02:00
Jon Dufresne 2c69824e5a Refs #23968 -- Removed unnecessary lists, generators, and tuple calls. 2017-06-01 19:08:59 -04:00
Mariusz Felisiak 9af6c97504 Refs #26682 -- Added AutoField introspection on Oracle. 2017-06-01 19:33:48 +02:00
Mariusz Felisiak 924a89e135 Fixed #26682 -- Added support for Oracle identity columns.
Thanks Shai Berger and Tim Graham for reviews.
2017-06-01 19:33:48 +02:00
Jon Dufresne 21046e7773 Fixed #28249 -- Removed unnecessary dict.keys() calls.
iter(dict) is equivalent to iter(dict.keys()).
2017-05-27 19:08:46 -04:00
Mariusz Felisiak 91b2bc3e70 Fixed #27860 -- Dropped varchar_pattern_ops/text_pattern_ops index before altering char/text field in PostgreSQL.
Thanks Tim Graham for the review.
2017-05-24 07:25:59 +02:00
Mariusz Felisiak 538bf43458 Fixed #27859 -- Ignored db_index for TextField/BinaryField on Oracle and MySQL.
Thanks Zubair Alam for the initial patch and Tim Graham for the review.
2017-05-23 17:02:40 +02:00
Mariusz Felisiak b3eb6eaf1a Refs #27859 -- Added DatabaseWrapper.display_name.
Thanks Tim Graham for the review.
2017-05-23 09:09:35 -04:00
Tim Schneider 3a5299c19c Fixed #28197 -- Fixed introspection of index field ordering on PostgreSQL. 2017-05-15 08:33:31 -04:00
Mariusz Felisiak 5cff2cb4c0 Refs #27859 -- Refactored BaseDatabaseValidation to use check_field_type().
Thanks Tim Graham for the review.
2017-05-14 18:34:45 +02:00
Florian Apolloner 837259a63f Pass type to sql_alter_column_* where it was missing.
This is a followup to 2b3a941457
2017-05-09 12:47:35 +02:00
Tim Graham 05098fa449 Fixed typo in django/db/backends/base/schema.py comment. 2017-05-01 20:45:33 -04:00
Markus Holtermann 663e48947f Fixed #28052 -- Prevented dropping Meta.indexes when changing db_index to False.
Thanks Marc Tamlyn for the report and Ian Foote/Tim Graham for review.
2017-05-01 11:31:48 -04:00
Mariusz Felisiak 946775227c Fixed #28138 -- Used ​output type handler instead of numbersAsStrings on Oracle ​cursor.
Thanks Tim Graham for the review.
2017-04-28 16:27:21 +02:00
Tim Graham 8095496a1c Fixed force_text() import in Oracle backend. 2017-04-27 08:47:33 -04:00
Claude Paroz 301de774c2 Refs #27795 -- Replaced many force_text() with str()
Thanks Tim Graham for the review.
2017-04-27 09:10:02 +02:00
Mariusz Felisiak e776dd2db6 Fixed #28116 -- Used error code filtering in PostgreSQL test database creation.
Thanks Claude Paroz and Tim Graham for reviews.
2017-04-25 06:01:25 +02:00
Mariusz Felisiak 87f9a3c5b2 Updated Oracle docs links to Oracle 12c. 2017-04-21 16:02:31 +02:00
Mariusz Felisiak 63b36d6419 Removed unused DatabaseIntrospection._name_to_index() from Oracle backend.
Unused since its introduction in cac7675f24.
2017-04-18 14:17:08 +02:00
Mariusz Felisiak e5dce7b0fb Refs #27795 -- Removed unneeded force_text calls from the Oracle backend. 2017-04-17 14:22:00 +02:00
Mariusz Felisiak e1253bc26f Refs #25406 -- Removed exception hiding in MySQL test database creation during --keepdb.
Thanks Adam Johnson, Simon Charette and Tim Graham for reviews.
2017-04-13 20:20:01 +02:00
Sergey Fedoseev e7afef13f5 Fixed #26788 -- Fixed QuerySet.update() crash when updating a geometry to another one. 2017-04-10 13:26:26 -04:00
Mariusz Felisiak 64264c9a19 Fixed #25406 -- Removed exception hiding in PostgreSQL test database creation during --keepdb.
Thanks Markus Holtermann and Tim Graham for reviews.
2017-04-10 13:04:00 -04:00