summaryrefslogtreecommitdiff
path: root/django/db/backends/sqlite3
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2025-10-18 21:04:11 +0200
committerGitHub <noreply@github.com>2025-10-18 21:04:11 +0200
commitd506e4a52847ed4fb80754175d76b6b83ff90929 (patch)
tree04fb86a5e8c74229d2dff7430928605b725abc77 /django/db/backends/sqlite3
parent0c487aa3a7b2417481bf48c1e5355c855873e210 (diff)
Fixed #36671 -- Dropped support for SQLite < 3.37.
Diffstat (limited to 'django/db/backends/sqlite3')
-rw-r--r--django/db/backends/sqlite3/features.py23
-rw-r--r--django/db/backends/sqlite3/introspection.py3
-rw-r--r--django/db/backends/sqlite3/schema.py3
3 files changed, 8 insertions, 21 deletions
diff --git a/django/db/backends/sqlite3/features.py b/django/db/backends/sqlite3/features.py
index 143ee1e98b..4fa6ab831b 100644
--- a/django/db/backends/sqlite3/features.py
+++ b/django/db/backends/sqlite3/features.py
@@ -10,7 +10,7 @@ from .base import Database
class DatabaseFeatures(BaseDatabaseFeatures):
- minimum_database_version = (3, 31)
+ minimum_database_version = (3, 37)
test_db_allows_multiple_connections = False
supports_unspecified_pk = True
supports_timezones = False
@@ -26,8 +26,6 @@ class DatabaseFeatures(BaseDatabaseFeatures):
time_cast_precision = 3
can_release_savepoints = True
has_case_insensitive_like = True
- # Is "ALTER TABLE ... DROP COLUMN" supported?
- can_alter_table_drop_column = Database.sqlite_version_info >= (3, 35, 5)
supports_parentheses_in_compound = False
can_defer_constraint_checks = True
supports_over_clause = True
@@ -57,6 +55,9 @@ class DatabaseFeatures(BaseDatabaseFeatures):
insert_test_table_with_defaults = 'INSERT INTO {} ("null") VALUES (1)'
supports_default_keyword_in_insert = False
supports_unlimited_charfield = True
+ can_return_columns_from_insert = True
+ can_return_rows_from_bulk_insert = True
+ can_return_rows_from_update = True
@cached_property
def django_test_skips(self):
@@ -146,8 +147,8 @@ class DatabaseFeatures(BaseDatabaseFeatures):
"""
SQLite has a variable limit per query. The limit can be changed using
the SQLITE_MAX_VARIABLE_NUMBER compile-time option (which defaults to
- 999 in versions < 3.32.0 or 32766 in newer versions) or lowered per
- connection at run-time with setlimit(SQLITE_LIMIT_VARIABLE_NUMBER, N).
+ 32766) or lowered per connection at run-time with
+ setlimit(SQLITE_LIMIT_VARIABLE_NUMBER, N).
"""
return self.connection.connection.getlimit(sqlite3.SQLITE_LIMIT_VARIABLE_NUMBER)
@@ -163,15 +164,3 @@ class DatabaseFeatures(BaseDatabaseFeatures):
can_introspect_json_field = property(operator.attrgetter("supports_json_field"))
has_json_object_function = property(operator.attrgetter("supports_json_field"))
-
- @cached_property
- def can_return_columns_from_insert(self):
- return Database.sqlite_version_info >= (3, 35)
-
- can_return_rows_from_bulk_insert = property(
- operator.attrgetter("can_return_columns_from_insert")
- )
-
- can_return_rows_from_update = property(
- operator.attrgetter("can_return_columns_from_insert")
- )
diff --git a/django/db/backends/sqlite3/introspection.py b/django/db/backends/sqlite3/introspection.py
index 0bbd6f4c59..1404c71e1e 100644
--- a/django/db/backends/sqlite3/introspection.py
+++ b/django/db/backends/sqlite3/introspection.py
@@ -342,8 +342,7 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
"PRAGMA index_list(%s)" % self.connection.ops.quote_name(table_name)
)
for row in cursor.fetchall():
- # SQLite 3.8.9+ has 5 columns, however older versions only give 3
- # columns. Discard last 2 columns if there.
+ # Discard last 2 columns.
number, index, unique = row[:3]
cursor.execute(
"SELECT sql FROM sqlite_master WHERE type='index' AND name=%s",
diff --git a/django/db/backends/sqlite3/schema.py b/django/db/backends/sqlite3/schema.py
index 223a70947b..ee6163c253 100644
--- a/django/db/backends/sqlite3/schema.py
+++ b/django/db/backends/sqlite3/schema.py
@@ -339,10 +339,9 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor):
self.delete_model(field.remote_field.through)
# For explicit "through" M2M fields, do nothing
elif (
- self.connection.features.can_alter_table_drop_column
# Primary keys, unique fields, indexed fields, and foreign keys are
# not supported in ALTER TABLE DROP COLUMN.
- and not field.primary_key
+ not field.primary_key
and not field.unique
and not field.db_index
and not (field.remote_field and field.db_constraint)