Bug report #13800

Field names that are numbers should be quoted when converting renderers

Added by Guillaume CORNU over 4 years ago. Updated over 1 year ago.

Status:Closed
Priority:Normal
Assignee:-
Category:Symbology
Affected QGIS version:2.12.0 Regression?:No
Operating System: Easy fix?:No
Pull Request or Patch supplied:No Resolution:end of life
Crashes QGIS or corrupts data:No Copied to github as #:21825

Description

When converting from a categorized or graduated renderer to
a rule-based renderer, attribute name that happen to be numbers
should be quoted.
This is not a blocking bug but is very confusing and error prone.
A workaround is to manually change each rule quoting attributes

for example
  • GIVEN a layer with numeric field/column/attribute named "2013"
  • BUILD a graduated renderer upon this field/column/attribute and classify values
  • CONVERT to a rule-based renderer
  • You'll get rules like '2013 > 10 AND 2013 <= 25'
  • It should be ' "2013" > 10 AND "2013" <= 25'
I tracked the origin of this default to convertFromRenderer functions in renderers class
QgsRuleBasedRendererV2* QgsRuleBasedRendererV2::convertFromRenderer( const QgsFeatureRendererV2* renderer )

where we can find lines like
expression = graduatedRenderer->classAttribute() + " >= " + QString::number( range.lowerValue(), 'f' ) + " AND " + \\
             graduatedRenderer->classAttribute() + " <= " + QString::number( range.upperValue(), 'f' );

I unfortunately cannot provide a patch but can suggest to
  • conditionnaly quote classAttribute()
  • or easer introduce a new function safeClassAttribute() that automatically quote the attribute and use it whenever needed

Associated revisions

Revision cb5f7485
Added by Matthias Kuhn over 4 years ago

Quote field names when converting renderers

Fix #13800

History

#1 Updated by Anonymous over 4 years ago

  • Status changed from Open to Closed

#2 Updated by Guillaume CORNU over 4 years ago

  • Status changed from Closed to Reopened

Hello
Thank you for the quick update but it partially solve the problem.
classAttribute() appears in several places in this function and the
change should be also done on those places.
I apologize if the issue was not clear enough.

#3 Updated by Giovanni Manghi over 3 years ago

  • Easy fix? set to No
  • Regression? set to No

#4 Updated by Giovanni Manghi over 1 year ago

  • Resolution set to end of life
  • Status changed from Reopened to Closed

End of life notice: QGIS 2.18 LTR

Source:
http://blog.qgis.org/2019/03/09/end-of-life-notice-qgis-2-18-ltr/

QGIS 3.4 has recently become our new Long Term Release (LTR) version. This is a major step in our history – a long term release version based on the massive updates, library upgrades and improvements that we carried out in the course of the 2.x to 3x upgrade cycle.

We strongly encourage all users who are currently using QGIS 2.18 LTR as their preferred QGIS release to migrate to QGIS 3.4. This new LTR version will receive regular bugfixes for at least one year. It also includes hundreds of new functions, usability improvements, bugfixes, and other goodies. See the relevant changelogs for a good sampling of all the new features that have gone into version 3.4

Most plugins have been either migrated or incorporated into the core QGIS code base.

We strongly discourage the continued use of QGIS 2.18 LTR as it is now officially unsupported, which means we’ll not provide any bug fix releases for it.

You should also note that we intend to close all bug tickets referring to the now obsolete LTR version. Original reporters will receive a notification of the ticket closure and are encouraged to check whether the issue persists in the new LTR, in which case they should reopen the ticket.

If you would like to better understand the QGIS release roadmap, check out our roadmap page! It outlines the schedule for upcoming releases and will help you plan your deployment of QGIS into an operational environment.

The development of QGIS 3.4 LTR has been made possible by the work of hundreds of volunteers, by the investments of companies, professionals, and administrations, and by continuous donations and financial support from many of you. We sincerely thank you all and encourage you to collaborate and support the project even more, for the long term improvement and sustainability of the QGIS project.

Also available in: Atom PDF