Bug report #19441
Layers with 80+ rule-based symbology do not render
|Affected QGIS version:||3.3(master)||Regression?:||No|
|Operating System:||Easy fix?:||No|
|Pull Request or Patch supplied:||Yes||Resolution:||fixed/implemented|
|Crashes QGIS or corrupts data:||No||Copied to github as #:||27269|
When a layer has less than 81 rule-based symbology, it renders without issues.
When a layer has reached more than 80 rule-based symbology, the layer is not rendered in the canvas.
This is tested in both master (fedora 28) and 3.2.0 (windows).
#6 Updated by Alessandro Pasotti about 2 years ago
Doing some progresses here, (with some help from Even) we've identified the source of the issue which is in sqlite library limits.
See https://github.com/oniony/TMSU/wiki/Troubleshooting for the error "parser stack overflow" (bison related)
There is another error when the tree depth is too high: "Expression tree is too large (maximum depth 1000)" according to https://www.sqlite.org/limits.html, "The maximum number of bytes in the text of an SQL statement is limited to SQLITE_MAX_SQL_LENGTH which defaults to 1000000"
Unfortunately the solution doesn't seem to be trivial.
#11 Updated by Igor Evdokimov about 2 years ago
Tested the patch also. It works now, but not great for my task. Very slow.
I have >4000 categories. With category-based symbology all works fine.
But we need to make hatched selection of polygons. Even standard hatches/line pattern
(diagonal, cross, etc.) will be enough, but not simple "color fill", as it is now in QGis.
So I had to implement this with rule-based symbology using <is_selected()> function
on map features. With this workaround on ~60 rules all works fine also, but on 4000 - very slow.
So I think I have to write feature request to make full-featured instrument
of "selection pattern" tuning (as it is in style editor, for example).