Mariusz Felisiak
0250340e37
Refs #32074 -- Used Enum.repr() format proposed for Python 3.10.
...
The Python's Steering Council decided to revert changes in the Enum
module (see https://bugs.python.org/issue44559 ) and moved them to
Python 3.11.
Follow up to 5d9b065d3f
.
Thanks Nick Pope for the review.
2021-07-12 11:46:37 +02:00
Ian Foote
f42ccdd835
Fixed #27021 -- Allowed lookup expressions in annotations, aggregations, and QuerySet.filter().
...
Thanks Hannes Ljungberg and Simon Charette for reviews.
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
2021-07-09 11:43:06 +02:00
Mariusz Felisiak
77b88fe621
Fixed #32908 -- Allowed select_for_update(skip_locked) on MariaDB 10.6+.
2021-07-08 06:51:10 +02:00
Keryn Knight
5013798fe9
Fixed #32840 -- Optimized Field.get_col().
...
get_col() used "self" as "output_field" when it was not given, and
unnecessarily compared "self" to "self".
Co-authored-by: Chris Jerdonek <chris.jerdonek@gmail.com>
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
2021-07-07 20:32:57 +02:00
Mariusz Felisiak
355ecd1416
Fixed inspectdb and schema tests on MariaDB 10.6+.
...
The utf8 character set (and related collations) is by default an alias
for utf8mb3 on MariaDB 10.6+.
2021-07-07 17:02:20 +02:00
Mateo Radman
2231429991
Refs #32508 -- Raised ImproperlyConfigured/TypeError instead of using "assert".
2021-07-05 13:31:03 +02:00
Wu Haotian
aba9c2de66
Fixed #32226 -- Fixed JSON format of QuerySet.explain() on PostgreSQL.
2021-07-05 09:08:39 +02:00
Nick Pope
fa35c8bdbc
Fixed #30934 -- Included database alias in django.db.backends log messages.
...
This is useful when working with database routing as you want to know
where each query is being executed.
Co-authored-by: David Winterbottom <david.winterbottom@gmail.com>
2021-07-02 15:36:53 +02:00
Simon Charette
9f3cce172f
Refs #26430 -- Re-introduced empty aggregation optimization.
...
The introduction of the Expression.empty_aggregate_value interface
allows the compilation stage to enable the EmptyResultSet optimization
if all the aggregates expressions implement it.
This also removes unnecessary RegrCount/Count.convert_value() methods.
Disabling the empty result set aggregation optimization when it wasn't
appropriate prevented None returned for a Count aggregation value.
Thanks Nick Pope for the review.
2021-07-02 07:25:42 +02:00
Simon Charette
f3112fde98
Fixed #26430 -- Fixed coalesced aggregation of empty result sets.
...
Disable the EmptyResultSet optimization when performing aggregation as
it might interfere with coalescence.
2021-07-02 06:40:54 +02:00
abhiabhi94
fde6fb2898
Fixed #32893 -- Fixed serialization of models.Model class in migrations.
...
Migrations assumed that an import of the models.Model class must
already be included when it's serialized, but for models with only
custom fields this was not necessarily the case.
Thanks Jaap Joris Vens for the report.
2021-07-01 12:42:32 +02:00
Hannes Ljungberg
d8c90d4c22
Fixed #32786 -- Moved subquery ordering clearing optimization to the _in lookup.
...
Co-Authored-By: Simon Charette <charette.s@gmail.com>
2021-06-30 10:08:55 +02:00
Hannes Ljungberg
053141d31f
Refs #32786 -- Made Query.clear_ordering() not to cause side effects by default.
2021-06-30 08:52:27 +02:00
manav014
503ee41497
Refs #29898 -- Moved state_forwards()'s logic from migration operations to ProjectState.
...
Thanks Simon Charette and Markus Holtermann for reviews.
2021-06-29 12:03:30 +02:00
abhiabhi94
cd124295d8
Fixed #32381 -- Made QuerySet.bulk_update() return the number of objects updated.
...
Co-authored-by: Diego Lima <diego.lima@lais.huol.ufrn.br>
2021-06-29 06:58:46 +02:00
Hasan Ramezani
7a9745fed4
Fixed #32863 -- Skipped system check for specifying type of auto-created primary keys on models with invalid app_label.
...
Regression in b5e12d490a
.
Thanks Iuri de Silvio for the report.
2021-06-22 20:47:15 +02:00
manav014
d718d99017
Refs #29898 -- Moved django.db.migrations.operations.utils to django.db.migrations.utils.
2021-06-22 09:26:18 +02:00
Mariusz Felisiak
e07609a0d1
Refs #32858 , Refs #32392 -- Restored using :: shortcut syntax in Cast() on PostgreSQL.
...
This partly reverts commit fdfbc66331
unnecessary since b69b0c3fe8
.
2021-06-22 06:28:42 +02:00
Carlton Gibson
225d96533a
Fixed #30427 , Fixed #16176 -- Corrected setting descriptor in Field.contribute_to_class().
...
Co-authored-by: Jarek Glowacki <jarekwg@gmail.com>
2021-06-15 12:01:28 +02:00
Mariusz Felisiak
fa0433d05f
Fixed #32832 -- Fixed adding BLOB/TEXT nullable field with default on MySQL 8.0.13+.
...
Regression in d4ac23bee1
.
Thanks Omkar Deshpande for the report.
2021-06-10 20:03:43 +02:00
Jacob Walls
c0e29cec83
Fixed #25255 -- Recorded unapplied squashed migrations.
2021-06-08 08:40:34 +02:00
Takayuki Hirayama
0393b9262d
Fixed #32812 -- Restored immutability of named values from QuerySet.values_list().
...
Regression in 981a072dd4
.
Thanks pirelle for the report.
2021-06-04 07:23:16 +02:00
Mariusz Felisiak
e703b152c6
Fixed #32793 -- Fixed loss of precision for temporal operations with DecimalFields on MySQL.
...
Regression in 1e38f1191d
.
Thanks Mohsen Tamiz for the report.
2021-06-01 15:11:42 +02:00
David Sanders
5685b7cd73
Fixed typos in comments and docs.
2021-05-29 12:51:14 +02:00
David Wobrock
b9df2b74b9
Fixed #32676 -- Prevented migrations from rendering related field attributes when not passed during initialization.
...
Thanks Simon Charette for the implementation idea.
2021-05-28 20:25:59 +02:00
Hannes Ljungberg
b746596f5f
Refs #32779 -- Changed DatabaseSchemaEditor._unique_sql()/_create_unique_sql() to take fields as second parameter.
2021-05-28 10:50:27 +02:00
Hannes Ljungberg
3e0fdf5546
Fixed #32780 -- Made Add/RemoveConstraint operations a noop for covering/deferrable unique constraints on SQLite.
2021-05-25 11:34:25 +02:00
saeedblanchette
d3d95d645f
Refs #24121 -- Added __repr__() to Lookup.
2021-05-24 07:32:25 +02:00
Mariusz Felisiak
f0a9413bd2
Refs #24121 -- Improved Value.__repr__().
2021-05-24 07:26:53 +02:00
Hannes Ljungberg
7ef2398e81
Fixed #32777 -- Passed table reference as a string to DatabaseSchemaEditor._index_columns().
2021-05-24 06:31:48 +02:00
Yuekui Li
5e04e84d67
Fixed #32503 -- Fixed altering BLOB/TEXT field to non-nullable with default on MySQL 8.0.13+.
...
MySQL 8.0.13+ supports defaults for BLOB/TEXT but not in the
ALTER COLUMN statement.
Regression in 6b16c91157
.
Thanks Matt Westcott for the report.
2021-05-21 13:34:37 +02:00
Rust Saiargaliev
a24fed399c
Fixed #32733 -- Skipped system check for specifying type of auto-created primary keys on abstract models.
...
Regression in b5e12d490a
.
2021-05-18 13:02:33 +02:00
Artur Beltsov
3954bf50fb
Fixed #32750 -- Fixed crash of Extract() transform on OuterRef() expressions.
...
Thanks Simon Charette for the review.
2021-05-17 17:51:39 +02:00
Mariusz Felisiak
b55699968f
Fixed #32718 -- Relaxed file name validation in FileField.
...
- Validate filename returned by FileField.upload_to() not a filename
passed to the FileField.generate_filename() (upload_to() may
completely ignored passed filename).
- Allow relative paths (without dot segments) in the generated filename.
Thanks to Jakub Kleň for the report and review.
Thanks to all folks for checking this patch on existing projects.
Thanks Florian Apolloner and Markus Holtermann for the discussion and
implementation idea.
Regression in 0b79eb3691
.
2021-05-13 08:53:44 +02:00
Nick Pope
1061f52436
Fixed #32732 -- Removed usage of deprecated 'db' and 'passwd' connection options in MySQL backend.
...
The 'db' and 'passwd' connection options have been deprecated, use
'database' and 'password' instead (available since mysqlclient >= 1.3.8).
This also allows the 'database' option in DATABASES['OPTIONS'] on MySQL.
2021-05-12 12:21:57 +02:00
Mariusz Felisiak
b1a4b1f0bd
Fixed #32722 -- Fixed comparing to TruncTime() on Oracle.
2021-05-11 09:19:25 +02:00
Alex Hill
c4ee3b208a
Fixed #32699 -- Fixed comparing to TruncTime() with 0 microseconds on MySQL.
2021-05-07 08:13:40 +02:00
Simon Charette
136ff592ad
Fixed #32690 -- Fixed __in lookup crash when combining with filtered aggregates.
...
Having lookups group by subquery right-hand-sides is likely unnecessary
in the first place but relatively large amount of work would be needed
to achieve that such as making Lookup instances proper resolvable
expressions.
Regression in 3543129822
.
Thanks James A. Munsch for the report.
2021-05-05 11:41:35 +02:00
Simon Charette
96f55ccf79
Fixed #32714 -- Prevented recreation of migration for Meta.ordering with OrderBy expressions.
...
Regression in c8b6594305
.
Thanks Kevin Marsh for the report.
2021-05-05 08:43:57 +02:00
Florian Apolloner
0b79eb3691
Fixed CVE-2021-31542 -- Tightened path & file name sanitation in file uploads.
2021-05-04 08:44:42 +02:00
Hasan Ramezani
8de4ca74ba
Fixed #32693 -- Quoted and lowercased generated column aliases.
2021-05-04 07:36:56 +02:00
Mariusz Felisiak
1f643c28b5
Fixed #32653 -- Made quoting names in the Oracle backend consistent with db_table.
2021-04-30 12:59:07 +02:00
Nick Pope
0c71e0f9cf
Removed unnecessary reuse_with_filtered_relation argument from Query methods.
...
In Query.join() the argument reuse_with_filtered_relation was used to
determine whether to use == or .equals(). As this area of code is
related to aliases, we only expect an instance of Join or BaseTable to
be provided - the only two classes that provide .equals().
In both cases, the implementations of __eq__() and equals() are based
on use of the "identity" property. __eq__() performs an isinstance()
check first, returning NotImplemented if required. BaseTable.equals()
then does a straightforward equality check on "identity". Join.equals()
is a little bit different as it skips checking the last element of the
"identity" property: filtered_relation. This was only included
previously when the with_filtered_relation argument was True, impossible
since bbf141bcdc
.
2021-04-28 21:19:42 +02:00
Nick Pope
a6c79f4987
Removed unused with_filtered_relation argument from .equals()
...
Unused since bbf141bcdc
.
2021-04-28 20:42:20 +02:00
Simon Charette
c8b6594305
Fixed #32632 , Fixed #32657 -- Removed flawed support for Subquery deconstruction.
...
Subquery deconstruction support required implementing complex and
expensive equality rules for sql.Query objects for little benefit as
the latter cannot themselves be made deconstructible to their reference
to model classes.
Making Expression @deconstructible and not BaseExpression allows
interested parties to conform to the "expression" API even if they are
not deconstructible as it's only a requirement for expressions allowed
in Model fields and meta options (e.g. constraints, indexes).
Thanks Phillip Cutter for the report.
This also fixes a performance regression in bbf141bcdc
.
2021-04-28 12:13:55 +02:00
Konstantin Alekseev
6e742dabc9
Fixed #32687 -- Restored passing process’ environment to underlying tool in dbshell on PostgreSQL.
...
Regression in bbe6fbb876
.
2021-04-27 10:43:35 +02:00
Mariusz Felisiak
4074f38e1d
Refs #32682 -- Fixed QuerySet.delete() crash on querysets with self-referential subqueries on MySQL.
2021-04-27 10:34:47 +02:00
Hannes Ljungberg
eab71f7690
Fixed #32686 -- Removed unnecessary semicolon on collected multiline SQL for RunSQL.
2021-04-27 08:01:07 +02:00
Mariusz Felisiak
0aacbdcf27
Refs #32673 -- Fixed lookups crash when comparing against lookups on Oracle.
...
Follow up to 170b006ce8
.
2021-04-23 16:32:53 +02:00
Simon Charette
170b006ce8
Fixed #32673 -- Fixed lookups crash when comparing against lookups on PostgreSQL.
...
Regression in 3a505c70e7
.
Nonlitteral right-hand-sides of lookups need to be wrapped in
parentheses to avoid operator precedence ambiguities.
Thanks Charles Lirsac for the detailed report.
2021-04-23 15:38:32 +02:00
Chris Jerdonek
0461b7a6b6
Fixed #32662 -- Refactored a generator out of SQLCompiler.get_order_by().
...
This also renames the `asc` variable to `default_order`, markes the
`desc` variable as unused, fixes a typo in SQLCompiler.get_order_by()
docstring, and reorders some blocks in SQLCompiler._order_by_pairs().
2021-04-21 12:35:49 +02:00
Simon Charette
6d0cbe42c3
Fixed #32650 -- Fixed handling subquery aliasing on queryset combination.
...
This issue started manifesting itself when nesting a combined subquery
relying on exclude() since 8593e162c9
but
sql.Query.combine never properly handled subqueries outer refs in the
first place, see QuerySetBitwiseOperationTests.test_subquery_aliases()
(refs #27149 ).
Thanks Raffaele Salmaso for the report.
2021-04-21 09:49:15 +02:00
Tobias Bengfort
54e94640ac
Refs #25287 -- Added support for multiplying and dividing DurationField by scalar values on SQLite.
2021-04-20 11:44:41 +02:00
Tobias Bengfort
9e1ccd7283
Refs #25287 -- Added _sqlite_prepare_dtdelta_param() hook.
2021-04-20 10:07:42 +02:00
David Beitey
4bb27c8719
Removed unnecessary line in OrderBy.as_sql().
...
Unnecessary since 7286eaf681
.
2021-04-20 09:47:11 +02:00
David Wobrock
aa4acc164d
Fixed #29899 -- Made autodetector use model states instead of model classes.
...
Thanks Simon Charette and Markus Holtermann for reviews.
2021-04-16 11:18:10 +02:00
David Wobrock
a67849499a
Refs #29899 -- Improved variable names in MigrationAutodetector._detect_changes().
2021-04-16 10:33:42 +02:00
David Wobrock
fd325b9dee
Refs #29899 -- Moved resolve_relation() to django.db.migrations.utils.
2021-04-16 10:33:42 +02:00
Mariusz Felisiak
ca98729055
Fixed #32645 -- Fixed QuerySet.update() crash when ordered by joined fields on MySQL/MariaDB.
...
Thanks Matt Westcott for the report.
Regression in 779e615e36
.
2021-04-14 21:11:17 +02:00
Hasan Ramezani
a77c9a4229
Fixed #32635 -- Fixed system check crash for reverse o2o relations in CheckConstraint.check and UniqueConstraint.condition.
...
Regression in b7b7df5fbc
.
Thanks Szymon Zmilczak for the report.
2021-04-14 10:06:18 +02:00
Daniel Hahler
59552bea57
Corrected typo in Field.deconstruct docstring.
2021-04-13 11:44:44 +02:00
Iuri de Silvio
9760e262f8
Fixed #32627 -- Fixed QuerySet.values()/values_list() crash on combined querysets ordered by unannotated columns.
2021-04-12 21:11:40 +02:00
Chris Jerdonek
823a9e6bac
Fixed #32416 -- Made ThreadedWSGIServer close connections after each thread.
...
ThreadedWSGIServer is used by LiveServerTestCase.
2021-04-12 10:23:56 +02:00
Adam Johnson
45a58c31e6
Fixed #32620 -- Allowed subclasses of Big/SmallAutoField for DEFAULT_AUTO_FIELD.
2021-04-08 13:17:08 +02:00
girishsontakke
98abc0c90e
Fixed #32501 -- Added support for returning fields from INSERT statements on SQLite 3.35+.
2021-04-07 20:09:56 +02:00
Adam Johnson
d9de74141e
Fixed #32442 -- Used converters on returning fields from INSERT statements.
2021-04-07 17:10:00 +02:00
Mariusz Felisiak
c6859f1a68
Refs #32074 -- Backported Enum.__repr__() from Python 3.10.
...
Enum.__repr__() was changed in [1], we should use the same format in
Python < 3.10.
[1] https://bugs.python.org/issue40066
2021-04-07 10:28:40 +02:00
Mariusz Felisiak
f6018c1e63
Fixed #32595 -- Fixed SchemaEditor.quote_value() crash with bytes.
2021-03-30 11:42:15 +02:00
Nick Pope
2f13c476ab
Fixed #31487 -- Added precision argument to Round().
2021-03-29 09:43:08 +02:00
Hasan Ramezani
ed0cc52dc3
Fixed #32585 -- Fixed Value() crash with DecimalField on SQLite.
2021-03-29 06:22:36 +02:00
Girish Sontakke
5388ff2a52
Fixed #32582 -- Removed unnecessary dot in names of cloned test databases on SQLite.
2021-03-25 06:37:01 +01:00
Mariusz Felisiak
94463aa861
Removed trailing whitespaces in error messages.
2021-03-24 11:44:01 +01:00
Nick Pope
a96c730431
Fixed #32460 -- Allowed "label"/"do_not_call_in_templates" members in model choice enums.
2021-03-24 07:45:33 +01:00
Florian Demmer
3a185cee2a
Fixed #32573 -- Fixed bounds in __iso_year lookup optimization.
2021-03-23 21:27:55 +01:00
Mariusz Felisiak
71ec102b01
Fixed #32483 -- Fixed QuerySet.values()/values_list() on JSONField key transforms with booleans on SQLite.
...
Thanks Matthew Cornell for the report.
2021-03-23 08:28:47 +01:00
Jonathan Richards
00b0786de5
Fixed #32548 -- Fixed crash when combining Q() objects with boolean expressions.
2021-03-17 21:53:39 +01:00
Yuri Konotopov
330bc402a8
Fixed #32546 -- Avoided Meta.ordering columns in GROUP BY clauses.
...
Follow up to 0ddb4ebf7b
.
2021-03-16 07:58:38 +01:00
manav014
99640e24b4
Fixed #31516 -- Improved naming of migrations with multiple operations.
...
52 gives 60 in total (52 + 5 + 3).
Co-authored-by: Adam Johnson <me@adamj.eu>
2021-03-12 11:56:12 +01:00
Adam Johnson
b1cb923883
Refs #31516 , Refs #31703 -- Made makemigrations always name initial migrations "initial".
2021-03-12 09:19:23 +01:00
Mariusz Felisiak
ba9a2b7544
Refs #32508 -- Raised TypeError instead of using "assert" on unsupported operations for sliced querysets.
2021-03-10 09:16:28 +01:00
Johan Schiff
d01709aae2
Fixed #24141 -- Added QuerySet.contains().
2021-03-06 20:40:29 +01:00
Jacob Walls
73b1b225ce
Fixed #22640 -- Raised TypeError when instantiating model with keyword and positional args for the same field.
2021-03-01 20:26:39 +01:00
Hasan Ramezani
8380fe08a0
Fixed #32456 -- Added dbshell support for specifying a password file on PostgreSQL.
2021-03-01 09:33:49 +01:00
Mariusz Felisiak
8908846444
Refs #32292 -- Made dbshell do not use 'postgres' database when service name is set.
...
Regression in dcb3ad3319
.
2021-02-26 20:53:01 +01:00
Simon Charette
277eea8fcc
Fixed #32478 -- Included nested columns referenced by subqueries in GROUP BY on aggregations.
...
Regression in fb3f034f1c
.
Refs #31094 , #31150 .
Thanks Igor Pejic for the report.
2021-02-24 09:01:36 +01:00
Hannes Ljungberg
3aa545281e
Fixed #30916 -- Added support for functional unique constraints.
...
Thanks Ian Foote and Mariusz Felisiak for reviews.
2021-02-23 20:19:53 +01:00
Chris Jerdonek
19ce1d493a
Fixed typo in django/db/backends/sqlite3/base.py comment.
2021-02-23 10:54:32 +01:00
Hannes Ljungberg
87acbf0631
Fixed #32458 -- Made __repr__() for Index and BaseConstraint subclasses more consistent.
2021-02-19 20:25:11 +01:00
Hasan Ramezani
7c18b22e2f
Fixed #32256 -- Fixed migration optimization crash when swapping field names.
...
This disables optimization of RenameField operation when an old field
name is referenced in subsequent operations.
Co-authored-by: InvalidInterrupt <InvalidInterrupt@users.noreply.github.com>
2021-02-19 11:19:01 +01:00
Hasan Ramezani
f2bef2b7bc
Fixed #32455 -- Allowed right combining Q() with boolean expressions.
2021-02-18 22:20:36 +01:00
starryrbs
466920f6d7
Fixed #32450 -- Fixed crash when ANDing/ORing an empty Q() with not pickleable Q().
...
Regression in bb0b6e5263
.
2021-02-18 21:13:24 +01:00
Hannes Ljungberg
4d99375b46
Fixed #32453 -- Added introspection of unique constraint field ordering on SQLite.
...
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
2021-02-17 10:59:17 +01:00
Hannes Ljungberg
c60b9e6640
Simplified introspection of constraints on MySQL.
...
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
2021-02-12 21:11:04 +01:00
Egidijus Macijauskas
6307c3f1a1
Fixed #32433 -- Added error message on QuerySet.delete() following distinct().
2021-02-11 08:33:30 +01:00
Mariusz Felisiak
ec0ff40631
Fixed #32355 -- Dropped support for Python 3.6 and 3.7
2021-02-10 10:20:54 +01:00
Jordan Bae
d4ac23bee1
Fixed #32425 -- Fixed adding nullable field with default on MySQL.
...
Thanks Simon Charette for the review.
2021-02-09 06:59:31 +01:00
Hasan Ramezani
63d239db03
Fixed #32411 -- Fixed __icontains lookup for JSONField on MySQL.
2021-02-05 16:14:12 +01:00
Mariusz Felisiak
5d9b065d3f
Refs #32074 -- Fixed TextChoices/IntegerChoices crash on Python 3.10.
...
EnumMeta has a new keyword argument 'boundary' in Python 3.10. This
is a new mechanism that controls how out-of-range / invalid bits are
handled, see https://bugs.python.org/issue38250 .
2021-02-04 10:47:45 +01:00
Hasan Ramezani
7cba92ec55
Fixed #32332 -- Fixed loss of parent with non-numeric pk when saving child after parent.
...
Follow up to 519016e5f2
.
2021-02-04 06:06:00 +01:00
Mariusz Felisiak
f39634ff22
Refs #32390 -- Bumped required cx_Oracle to 7.0.
2021-02-03 10:03:33 +01:00