diff options
| author | Tim Graham <timograham@gmail.com> | 2014-10-30 13:52:42 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-10-30 13:52:42 -0400 |
| commit | 57e40551e41eaf31ff96672beea9b1f732f2e331 (patch) | |
| tree | 667d9b8fe92b0965f8999f894bcd3221964ab130 /django | |
| parent | eb4f6de980c5148ba48d4ed67f31cca27dd132a8 (diff) | |
Fixed #23152 -- Added support for transactional Spatialite metadata initialization.
Thanks Doug Goldstein for the initial patch.
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/gis/db/backends/spatialite/base.py | 8 | ||||
| -rw-r--r-- | django/contrib/gis/db/backends/spatialite/creation.py | 3 |
2 files changed, 10 insertions, 1 deletions
diff --git a/django/contrib/gis/db/backends/spatialite/base.py b/django/contrib/gis/db/backends/spatialite/base.py index 571d37cec9..db6895814a 100644 --- a/django/contrib/gis/db/backends/spatialite/base.py +++ b/django/contrib/gis/db/backends/spatialite/base.py @@ -13,6 +13,7 @@ from django.contrib.gis.db.backends.spatialite.introspection import SpatiaLiteIn from django.contrib.gis.db.backends.spatialite.operations import SpatiaLiteOperations from django.contrib.gis.db.backends.spatialite.schema import SpatialiteSchemaEditor from django.utils import six +from django.utils.functional import cached_property class DatabaseFeatures(BaseSpatialFeatures, SQLiteDatabaseFeatures): @@ -20,6 +21,13 @@ class DatabaseFeatures(BaseSpatialFeatures, SQLiteDatabaseFeatures): # SpatiaLite can only count vertices in LineStrings supports_num_points_poly = False + @cached_property + def supports_initspatialmetadata_with_transactions(self): + # SpatiaLite 4.1+ support initializing all metadata in one transaction + # which can result in a significant performance improvement when + # creating the database. + return self.connection.ops.spatial_version >= (4, 1, 0) + class DatabaseWrapper(SQLiteDatabaseWrapper): SchemaEditorClass = SpatialiteSchemaEditor diff --git a/django/contrib/gis/db/backends/spatialite/creation.py b/django/contrib/gis/db/backends/spatialite/creation.py index 1592ae50b9..54f4cd0b89 100644 --- a/django/contrib/gis/db/backends/spatialite/creation.py +++ b/django/contrib/gis/db/backends/spatialite/creation.py @@ -36,4 +36,5 @@ class SpatiaLiteCreation(DatabaseCreation): Creates the spatial metadata tables. """ cur = self.connection._cursor() - cur.execute("SELECT InitSpatialMetaData()") + arg = "1" if self.connection.features.supports_initspatialmetadata_with_transactions else "" + cur.execute("SELECT InitSpatialMetaData(%s)" % arg) |
