Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Take advantage of pre-computed static expression nodes when determining
the referenced fields of an expression Avoids some cases where use of various expression functions which normally trigger all attributes to be requested, yet can be pre-computed during prepare stages, cause non-provider fields to be listed in the referenced columns and accordingly prevent expression compilation. Notably this can occur when using an expression like: aggregate( .... , filter:= "some_child_field"=attribute(@atlas_feature, 'some_atlas_field_name') ) where the whole attribute(@atlas_feature....) part is a constant static value and can be compiled down to a trivial, index-friendly "some_child_field"=### filter for the aggregate provider request. Ultimately giving a big performance boost to the atlas!
- Loading branch information
Showing
with
169 additions
and 0 deletions.
- +33 −0 python/core/auto_generated/expression/qgsexpression.sip.in
- +20 −0 python/core/auto_generated/expression/qgsexpressionnode.sip.in
- +24 −0 src/core/expression/qgsexpression.h
- +14 −0 src/core/expression/qgsexpressionnode.h
- +18 −0 src/core/expression/qgsexpressionnodeimpl.cpp
- +60 −0 tests/src/core/testqgsexpression.cpp