Skip to content

Commit

Permalink
Merge pull request #42411 from rldhont/vector-xml-extent-dp-has-metadata
Browse files Browse the repository at this point in the history
[Vector] Use XML Extent even if data provider has metadata
  • Loading branch information
rldhont committed Mar 31, 2021
2 parents a4c4764 + b681de9 commit 05d10e0
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/core/vector/qgsvectorlayer.cpp
Expand Up @@ -846,7 +846,7 @@ QgsRectangle QgsVectorLayer::extent() const
if ( !isSpatial() )
return rect;

if ( !mValidExtent && mLazyExtent && mDataProvider && !mDataProvider->hasMetadata() && mReadExtentFromXml && !mXmlExtent.isNull() )
if ( !mValidExtent && mLazyExtent && mReadExtentFromXml && !mXmlExtent.isNull() )
{
updateExtent( mXmlExtent );
mValidExtent = true;
Expand Down
12 changes: 11 additions & 1 deletion tests/src/python/test_provider_postgres.py
Expand Up @@ -2046,13 +2046,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):
Expand Down

0 comments on commit 05d10e0

Please sign in to comment.