Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
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[bot] committed Mar 31, 2021
1 parent 66c8ec6 commit ad01e0d
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() )
{
mExtent = 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 ad01e0d

Please sign in to comment.