<feed xmlns='http://www.w3.org/2005/Atom'>
<title>django.git/django/db/backends, branch main</title>
<subtitle>django
</subtitle>
<id>http://cgit.adnoto.dev/django.git/atom?h=main</id>
<link rel='self' href='http://cgit.adnoto.dev/django.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/'/>
<updated>2026-04-30T23:52:11Z</updated>
<entry>
<title>Fixed #37075 -- Allowed overriding the PostgreSQL pool's "check" callable.</title>
<updated>2026-04-30T23:52:11Z</updated>
<author>
<name>Raoni Timo</name>
<email>raoni@relume.io</email>
</author>
<published>2026-04-30T13:57:27Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=9f790ef1a0f356cf6342b5d57bbaeac35aed0d9f'/>
<id>urn:sha1:9f790ef1a0f356cf6342b5d57bbaeac35aed0d9f</id>
<content type='text'>
Setting "check" in OPTIONS["pool"] previously raised TypeError because the
PostgreSQL backend always passed check= to ConnectionPool() and unpacked
**pool_options on top, regardless of CONN_HEALTH_CHECKS. The user's callable
now takes precedence via setdefault(); pool_options is copied first to avoid
mutating the user's settings dict.
</content>
</entry>
<entry>
<title>Fixed #37028 -- Added BitAnd(), BitOr(), and BitXor() aggregates.</title>
<updated>2026-04-18T06:53:21Z</updated>
<author>
<name>Mariusz Felisiak</name>
<email>felisiak.mariusz@gmail.com</email>
</author>
<published>2026-04-18T06:53:21Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=ed79c5959add54b6e8ea589ec601e0d2e801517e'/>
<id>urn:sha1:ed79c5959add54b6e8ea589ec601e0d2e801517e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Added DatabaseFeatures.disallowed_simple_test_case_connection_methods.</title>
<updated>2026-04-16T09:28:19Z</updated>
<author>
<name>Tim Graham</name>
<email>timograham@gmail.com</email>
</author>
<published>2026-04-16T09:28:19Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=82a2465f71a1f5cbfe3811952c0d07482dea71c6'/>
<id>urn:sha1:82a2465f71a1f5cbfe3811952c0d07482dea71c6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fixed #36960 -- Enabled the use of psycopg 3's optimized timestamp loader.</title>
<updated>2026-03-20T20:31:25Z</updated>
<author>
<name>Aarni Koskela</name>
<email>akx@iki.fi</email>
</author>
<published>2026-03-14T23:04:26Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=994fa7780d73f6d618dc3a03339e96b5353b4e71'/>
<id>urn:sha1:994fa7780d73f6d618dc3a03339e96b5353b4e71</id>
<content type='text'>
Based on Daniele Varrazzo's comment in https://github.com/psycopg/psycopg/issues/1273#issuecomment-3986829769
</content>
</entry>
<entry>
<title>Refs #36795 -- Removed unnecessary prohibits_dollar_signs_in_column_aliases feature flag.</title>
<updated>2026-03-19T16:24:17Z</updated>
<author>
<name>Simon Charette</name>
<email>charette.s@gmail.com</email>
</author>
<published>2026-02-01T22:02:49Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=5146449a38222dc74f8f1ba88a7a7ef681e93101'/>
<id>urn:sha1:5146449a38222dc74f8f1ba88a7a7ef681e93101</id>
<content type='text'>
Now that user provided aliases are systematically quoted there is no need to
disallow the usage of the dollar sign on Postgres.
</content>
</entry>
<entry>
<title>Fixed #36795 -- Enforced quoting of all database object names.</title>
<updated>2026-03-19T16:24:17Z</updated>
<author>
<name>Simon Charette</name>
<email>charette.s@gmail.com</email>
</author>
<published>2026-02-01T21:53:54Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=f05fac88c4699c6d04a8f1ac3328cf6c7bd39228'/>
<id>urn:sha1:f05fac88c4699c6d04a8f1ac3328cf6c7bd39228</id>
<content type='text'>
This ensures all database identifiers are quoted independently of their orign
and most importantly that user provided aliases through annotate() and alias()
which paves the way for dropping the allow list of characters such aliases can
contain.

This will require adjustments to raw SQL interfaces such as RawSQL that might
make reference to ORM managed annotations as these will now be quoted.

The `SQLCompiler.quote_name_unless_alias` method is kept for now as an alias
for the newly introduced `.quote_name` method but will be duly deprecated in
a follow up commit.
</content>
</entry>
<entry>
<title>Fixed #36727 -- Deprecated Field.get_placeholder in favor of get_placeholder_sql.</title>
<updated>2026-03-13T00:01:02Z</updated>
<author>
<name>Simon Charette</name>
<email>charette.s@gmail.com</email>
</author>
<published>2025-11-22T18:32:34Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=1a8fd5cf75bf855852f6bc2f75c3da9f7b145669'/>
<id>urn:sha1:1a8fd5cf75bf855852f6bc2f75c3da9f7b145669</id>
<content type='text'>
The lack of ability of the get_placeholder call chain to return SQL and
parameters separated so they can be mogrified by the backend at execution time
forced implementations to dangerously interpolate potentially user controlled
values.

The get_placeholder_sql name was chosen due to its proximity to the previous
method, but other options such as Field.as_sql were considered but ultimately
rejected due to its different input signature compared to Expression.as_sql
that might have lead to confusion.

There is a lot of overlap between what Field.get_db_prep_value and
get_placeholder_sql do but folding the latter in the former would require
changing its return signature to return expression which is a way more invasive
change than what is proposed here.

Given we always call get_db_prep_value it might still be an avenue worth
exploring in the future to offer a publicly documented interface to allow field
to take an active part in the compilation chain.

Thanks Jacob for the review.
</content>
</entry>
<entry>
<title>Added DatabaseFeatures.pattern_lookup_needs_param_pattern.</title>
<updated>2026-03-08T11:08:27Z</updated>
<author>
<name>Tim Graham</name>
<email>timograham@gmail.com</email>
</author>
<published>2026-03-08T11:08:27Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=787166fe27b0e7c7f97505da5766cfa72e76ae25'/>
<id>urn:sha1:787166fe27b0e7c7f97505da5766cfa72e76ae25</id>
<content type='text'>
It's useful on MongoDB.</content>
</entry>
<entry>
<title>Added DatabaseOperations.convert_trunc_expression() hook.</title>
<updated>2026-02-28T15:01:08Z</updated>
<author>
<name>Tim Graham</name>
<email>timograham@gmail.com</email>
</author>
<published>2026-02-17T02:27:35Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=202eca7795710c82cd64a248650afc64f905a17e'/>
<id>urn:sha1:202eca7795710c82cd64a248650afc64f905a17e</id>
<content type='text'>
Needed on MongoDB.
</content>
</entry>
<entry>
<title>Fixed #36946 -- Respected test database name when running tests in parallel on SQLite.</title>
<updated>2026-02-27T22:12:07Z</updated>
<author>
<name>S​age Abdullah</name>
<email>me@laymonage.com</email>
</author>
<published>2026-02-27T22:12:07Z</published>
<link rel='alternate' type='text/html' href='http://cgit.adnoto.dev/django.git/commit/?id=b415cef5d21cd5beac212a833f9f0b7727899f64'/>
<id>urn:sha1:b415cef5d21cd5beac212a833f9f0b7727899f64</id>
<content type='text'>
The "spawn" and "forkserver" multiprocessing modes were affected.</content>
</entry>
</feed>
