Ensure that features added to a memory provider (and returned when
fetching features from a memory provider) always have the correct
number of attributes present.
Fixes many random behavior bugs when working with memory providers.
are transparently padded out with NULL attributes to the required fields
length
Currently the behavior is inconsistent - some providers reject these
features, others pad them out, and worse -- some add them with
missing attributes (memory provider), causing ALL sorts of flow-on,
difficult to debug issues.
Since netcdf, and possibly other gdal drivers, use layer uris
of the format NETCDF:"/tmp/test.nc":var1 we can't safely
remove or reformat these quotations.
- add a clone() method to filters, and always search using the
clone instead of the original filter
- add a prepare() method to filters, which is always run in the
main thread and can be used to prepare the filter for safe
background execution (e.g. creating feature iterators in advance)
- don't use QtConcurrent to perform searches in background threads,
since it is not safe to use with QObjects
- instead manually create threads and ensure that cloned objects
are always moved to the thread that they will run in, to ensure
that they correctly have thread affinity with the thread in which
they are executed
to an empty expression
This causes issues in lots of places - e.g. a field constraint
is always set to the first field in a layer, and cannot be
removed.
I've looked at all calls to setField and without exception
they should accept that setting the field to an empty string
results in an empty expression.
Fixes#14325
Avoiding the very high constrast pure black results in cartographically
more pleasing styles, so it's nice to do this by default.
This should result in nicer looking maps being created in QGIS
when users don't do any manual style tweaks.
But always prefer case-exact matches for parameter names. Turns
out the grass provider requires use of parameters with the same
name but different case, so we need to be able to handle this.
This fixes an unreported bug that without detecting an
invalid input when using a comma as a decimal separator
silently converts the entered value to NULL.
Since locale support in QGIS is in its early stages
we convert commas to dots within the validator,
this is common practice in almost all web applications
where you can enter a comma instead of a dot and
the conversion appears while you digit.
This comes with brand new tests for QgsFieldValidator.
Bonus: small fix in sipify.