Commit Graph

497 Commits

Author SHA1 Message Date
Andrew Godwin a415ce70be Fixed #30451 -- Added ASGI handler and coroutine-safety.
This adds an ASGI handler, asgi.py file for the default project layout,
a few async utilities and adds async-safety to many parts of Django.
2019-06-20 12:29:43 +02:00
can fde9b7d35e Fixed #30128 -- Fixed handling timedelta timezone in database functions. 2019-06-13 09:29:43 +02:00
Jon Dufresne 8b3f1c35dd Removed unnecessary assignments in various code. 2019-04-24 13:09:29 +02:00
can cef3f2d3c6
Fixed #28373 -- Used connection timezone instead of UTC when making dates timezone-aware on MySQL, SQLite, and Oracle.
Thanks vtalpaert for the initial patch.

Co-Authored-By: Mariusz Felisiak <felisiak.mariusz@gmail.com>
2019-04-08 08:59:17 +02:00
Nick Pope d26b242443
Fixed #30271 -- Added the Sign database function. 2019-03-22 12:52:39 +01:00
Nick Pope 0b70985f42 Fixed #30240 -- Added SHA1, SHA224, SHA256, SHA384, and SHA512 database functions.
Thanks Mariusz Felisiak and Tim Graham for reviews.
2019-03-20 19:30:43 +01:00
Paveł Tyślacki 782d85b6df Fixed #30183 -- Added introspection of inline SQLite constraints. 2019-03-13 10:24:28 -04:00
Paveł Tyślacki 4492be348a Refs #30183 -- Moved SQLite table constraint parsing to a method. 2019-03-01 17:05:36 -05:00
Paveł Tyślacki b777c0675e Unified nonexistent foreign key introspection value for SQLite. 2019-03-01 15:51:37 -05:00
Mariusz Felisiak 9ff18c08c3
Refs #28643 -- Added MD5 database function.
Thanks Tim Graham, Nick Pope and Simon Charette for reviews.
2019-02-21 10:52:51 +01:00
Dan Davis 2bd8df243a Fixed #30184 -- Removed ellipsis characters from shell output strings.
Partially reverted 50b8493581 (refs #29654)
to avoid a crash when the user shell doesn't support non-ASCII characters.
2019-02-13 13:59:44 -05:00
Simon Charette ebd2fe1861 Refs #30027 -- Enabled window function tests on SQLite 3.25+. 2019-02-09 08:47:40 -05:00
Tim Graham 7e6b214ed3 Fixed #30116 -- Dropped support for Python 3.5. 2019-01-30 10:19:48 -05:00
Dan Tao 738faf9da2 Fixed #30108 -- Allowed adding foreign key constraints in the same statement that adds a field. 2019-01-29 15:42:57 -05:00
Tim Graham 7444f32527
Refs #30055 -- Added a helpful error when SQLite is too old. 2019-01-28 11:14:45 -05:00
Nick Pope bff748df3e Fixed #30115 -- Fixed SQLite introspection crash with a varchar primary key.
Removed obsolete max_length handling for CharField that caused the issue.
Regression in a35d2a4510.
2019-01-22 19:02:34 -05:00
Nick Pope e19f58fc01 Inlined DatabaseIntrospection._table_info() for SQLite. 2019-01-22 18:23:37 -05:00
Nick Pope abf8e390a4 Refs #28643 -- Added Reverse database function.
Thanks Mariusz Felisiak for Oracle advice and review.
2019-01-12 10:45:48 -05:00
Paveł Tyślacki b69f8eb04c Fixed #30062 -- Added support for unique conditional constraints. 2019-01-12 09:50:20 -05:00
Simon Charette bc05547cd8 Fixed #28658 -- Added DISTINCT handling to the Aggregate class. 2019-01-09 17:52:36 -05:00
Nick Pope a35d2a4510 Refs #23748 -- Added AutoField introspection for SQLite. 2019-01-09 09:59:15 -05:00
Paveł Tyślacki 0123b67f6b Fixed #30060 -- Moved SQL generation for indexes and constraints to SchemaEditor. 2019-01-01 09:39:58 -05:00
Tim Graham b74b6736d0
Refs #29547 -- Skipped an unsupported partial index test on older versions of SQLite.
Follow up to e5b8626c0e.
2018-12-26 11:20:11 -05:00
Simon Charette 2b2ae4eeb7 Refs #30054, #20483 -- Cached SQLite references graph retrieval on sql_flush(). 2018-12-26 09:19:44 -05:00
Nick Pope 83677faf86 Fixed #30056 -- Added SQLite support for StdDev and Variance functions. 2018-12-24 11:14:58 -05:00
Nick Pope e626a3f993 Renamed Sqlite and Sqlite3 references to SQLite. 2018-12-22 18:52:54 -05:00
Simon Charette ce8b65ac5e Fixed #30054 -- Implemented cascaded flush on SQLite.
This is required to maintain foreign key integrity when using
TransactionTestCase.available_apps.

Refs #30033, #14204, #20483.
2018-12-22 17:47:48 -05:00
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
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
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
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
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
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 328f5627dd
Fixed #29870 -- Added DurationField introspection for Oracle and PostgreSQL.
Thanks Tim Graham for the review.
2018-10-21 09:08:05 +02: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
Jon Dufresne 82f286cf6f Refs #29784 -- Switched to https:// links where available. 2018-09-26 08:48:47 +02: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
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
Tom f1fbef6cd1 Fixed #28668 -- Allowed QuerySet.bulk_create() to ignore insert conflicts. 2018-08-03 17:40:46 -04:00
Andrew Brown c0e3c65b9d Fixed #29563 -- Added result streaming for QuerySet.iterator() on SQLite. 2018-07-25 18:08:57 -04:00
Claude Paroz 65503ca097 Fixed #29040 -- Made test database creation messages use a consistent output stream. 2018-07-19 18:05:33 -04:00
Ian Foote 952f05a6db Fixed #11964 -- Added support for database check constraints. 2018-07-10 15:32:33 -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
Sergey Fedoseev b49b59b029 Simplified SQLite's Decimal adapter. 2018-07-02 13:36:40 -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
Tim Graham 7ac3008fe4
Refs #29350 -- Fixed 'invalid escape sequence' warning in SQLite introspection. 2018-05-08 10:42:24 -04: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
Tom c1c163b427 Fixed #28574 -- Added QuerySet.explain(). 2018-04-19 10:52:19 -04: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 cede5111bb
Refs #28643 -- Added LPad and RPad database functions.
Thanks Tim Graham for the review.
2018-03-19 17:35:16 +01:00
Mariusz Felisiak 074a2f7f58
Refs #28909 -- Simplifed code using unpacking generalizations. 2018-02-26 18:23:31 +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
Sergey Fedoseev 2115be616b Refs #28459 -- Improved performance of duration expressions on SQLite. 2018-01-04 17:16:17 -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 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
Sergey Fedoseev ebc4ee3369 Refs #23941 -- Prevented incorrect rounding of DecimalField annotations on SQLite. 2017-12-21 19:50:56 -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 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
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
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
Sergey Fedoseev 93cdd07e8f Used bytes.hex() and bytes.fromhex() to simplify. 2017-11-23 08:52:23 -05:00
Дилян Палаузов c69e4bc691 Fixed #28769 -- Replaced 'x if x else y' with 'x or y'. 2017-11-07 09:08:46 -05:00
Simon Charette 9d93dff333 Fixed #28665 -- Change some database exceptions to NotImplementedError per PEP 249. 2017-10-06 12:47:08 -04: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
Tim Graham 578711c310 Refs #27098 -- Removed DatabaseIntrospection.get_indexes() per deprecation timeline. 2017-09-22 12:51:18 -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 34f27f910b Replaced @cached_property with class attributes where possible. 2017-09-06 10:13:43 -04: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 5244d7cf54 Simplified SQLite converter for bool type. 2017-08-09 18:10:34 -04:00