add test for postgres hasSpatialIndex

This commit is contained in:
Denis Rouzaud 2021-01-15 07:37:29 +01:00
parent 89101c51e3
commit fa8a45a1c2
3 changed files with 32 additions and 0 deletions

View File

@ -31,6 +31,7 @@ from qgis.core import (
QgsVectorLayer,
QgsVectorLayerExporter,
QgsFeatureRequest,
QgsFeatureSource,
QgsFeature,
QgsFieldConstraints,
QgsDataProvider,
@ -2515,6 +2516,20 @@ class TestPyQgsPostgresProvider(unittest.TestCase, ProviderTestCase):
'username': 'my username',
})
def testHasSpatialIndex(self):
for layer_name in ('hspi_table', 'hspi_materialized_view'):
columns = {'geom_without_index': QgsFeatureSource.SpatialIndexNotPresent, 'geom_with_index': QgsFeatureSource.SpatialIndexPresent}
for (geometry_column, spatial_index) in columns.items():
conn = 'service=\'qgis_test\''
if 'QGIS_PGTEST_DB' in os.environ:
conn = os.environ['QGIS_PGTEST_DB']
vl = QgsVectorLayer(
conn +
' sslmode=disable key=\'id\' srid=4326 type=\'Polygon\' table="qgis_test"."{n}" ({c}) sql='.format(n=layer_name, c=geometry_column),
'test', 'postgres')
self.assertTrue(vl.isValid())
self.assertEqual(vl.hasSpatialIndex(), spatial_index)
class TestPyQgsPostgresProviderCompoundKey(unittest.TestCase, ProviderTestCase):

View File

@ -16,6 +16,7 @@ SCRIPTS="
tests/testdata/provider/testdata_pg_json.sql
tests/testdata/provider/testdata_pg_pointcloud.sql
tests/testdata/provider/testdata_pg_bigint_pk.sql
tests/testdata/provider/testdata_pg_hasspatialindex.sql
"
SCRIPTS12="

View File

@ -0,0 +1,16 @@
--CREATE SCHEMA IF NOT EXISTS qgis_test;
DROP TABLE IF EXISTS qgis_test.hspi_table;
CREATE TABLE qgis_test.hspi_table
(
id serial PRIMARY KEY,
geom_without_index geometry(Polygon,4326),
geom_with_index geometry(Polygon,4326)
);
CREATE INDEX hspi_index_1 ON qgis_test.hspi_table USING GIST (geom_with_index);
CREATE MATERIALIZED view qgis_test.hspi_materialized_view AS SELECT * FROM qgis_test.hspi_table;
CREATE INDEX hspi_index_2 ON qgis_test.hspi_materialized_view USING GIST (geom_with_index);