In some circumstances MSVC tries to raise it's own internal
exception when we try to raise a GEOSException. This results
in a hard crash of QGIS.
To workaround this, we cautiously try to raise a GEOSException
on msvc builds, catching all other raised exceptions if
throwing the GEOSException triggers them. This at least allows
us to gracefully handle the geos error without crashing QGIS
(although the detailed GEOS error message is not available
when this situation occurs... but that's still better than
a crash!).
If you want to try to find a better fix for this, the
testqgsexpression.cpp test suite will demonstrate the issue.
Without this fix the test will crash on the "line_interpolate_point point"
test.
Refs #14752
- Mark as dirty when renaming a layer/group
- Better approach to mark as dirty when changing CRS
- Better approach to mark as dirty when changing subset string
In case of a WFS GetFeature request,
if BBOX is not a direct child of the Filter element,
it is applyed through an intersects_bbox function in the QgsFeatureRequest filterExpression.
This is not compiled by providers like PostgreSQL, causing the whole filter to be interpreted on QGIS side.
When interpreted on QGIS side, the srsname given in the request is not handled properly as geom_from_gml return a geometry object, projection agnostic.
This result in a very long request returning no results.
This is a workaround for this performance and srs issue in the case the BBOX is direct child of an And operator,
itself at first level in Filter element.
This is a bug fix and huge optimisation for the case we have a And with a BBOX and another condition.
in a layer
This is incredibly inefficient, because selectedFeatures() actually
fetches a full copy of all selected features (including all
attributes and geometry). Instead use selectedFeatureIds(), which
is just a list of numbers.
Add warning note to docs cautioning against this practice.
Fixes massive ui lockup when right clicking on a layer with
selected features in the layer tree