Skip to content
Permalink
Browse files

Merge pull request #42411 from rldhont/vector-xml-extent-dp-has-metadata

[Vector] Use XML Extent even if data provider has metadata
  • Loading branch information
rldhont authored and github-actions committed Mar 31, 2021
1 parent 756d5b3 commit 5e9877b5495786c3c119160887f14063a600b1f0
Showing with 12 additions and 2 deletions.
  1. +1 −1 src/core/qgsvectorlayer.cpp
  2. +11 −1 tests/src/python/test_provider_postgres.py
@@ -838,7 +838,7 @@ QgsRectangle QgsVectorLayer::extent() const
if ( !isSpatial() )
return rect;

if ( !mValidExtent && mLazyExtent && mDataProvider && !mDataProvider->hasMetadata() && mReadExtentFromXml && !mXmlExtent.isNull() )
if ( !mValidExtent && mLazyExtent && mReadExtentFromXml && !mXmlExtent.isNull() )
{
mExtent = mXmlExtent;
mValidExtent = true;
@@ -2044,13 +2044,23 @@ def testReadExtentOnTable(self):
self.assertEqual(vl1.extent(), originalExtent)

# read xml with custom extent with readExtent option. Extent read from
# xml document should NOT be used because we don't have a view or a
# xml document should be used even if we don't have a view or a
# materialized view
vl2 = QgsVectorLayer()
vl2.setReadExtentFromXml(True)
vl2.readLayerXml(elem, QgsReadWriteContext())
self.assertTrue(vl2.isValid())

self.assertEqual(vl2.extent(), customExtent)

# but a force update on extent should allow retrieveing the data
# provider extent
vl2.updateExtents()
vl2.readLayerXml(elem, QgsReadWriteContext())
self.assertEqual(vl2.extent(), customExtent)

vl2.updateExtents(force=True)
vl2.readLayerXml(elem, QgsReadWriteContext())
self.assertEqual(vl2.extent(), originalExtent)

def testDeterminePkey(self):

0 comments on commit 5e9877b

Please sign in to comment.