This issue has been created
 
 
Release Notes Application / cid:jira-generated-image-avatar-b9bb660e-b83c-48b8-bea6-38b4e90d2f02 RN-87 Open

Version range filters in getChanges compare versions as strings

 
View issue   ·   Add comment
 

Issue created

 
cid:jira-generated-image-avatar-1cc7bed2-4ba2-45d0-9af1-d52ba21375de Vincent Massol created this issue on 31/Aug/26 18:03
 
Summary: Version range filters in getChanges compare versions as strings
Issue Type: cid:jira-generated-image-avatar-b9bb660e-b83c-48b8-bea6-38b4e90d2f02 Bug
Affects Versions: 2.0
Assignee: Unassigned
Components: Application
Created: 31/Aug/26 18:03
Priority: cid:jira-generated-image-static-major-49ff9dda-11c0-422a-b989-a424947c8ebe Major
Reporter: Vincent Massol
Description:

Problem

The getChanges macro accepts comparison prefixes on its versions parameter (>=, <=, >, <). Code/Change/GetChangesMacro turns these into plain SQL comparisons against entries.version:

#set ($discard = $clauses.add("${class}.${name} >= :${name}${foreach.count}"))

EntryClass.version is a DBListClass with multiSelect=0, i.e. a StringProperty stored in a VARCHAR column. The comparison is therefore lexicographic, not version-aware.

Consequence

A report silently returns a wrong, quietly truncated list of changes — it renders successfully, so nothing signals the problem:

  • versions=">=9.0" excludes every 10.x-17.x release note (because "10.0" < "9.0" as strings).
  • versions="<=10.0" excludes 2.0.

The outcome additionally depends on the database collation.

Notes

RN-72 fixed these operators at the boundary level (the equal case is now included) but the comparison semantics were never addressed. A fix needs either a normalised sortable value stored alongside the version (zero-padded), or the range comparison done after the query.

Found by a review of the code base; the versions operators are covered by GetChangesMacroPageTest, which asserts the generated XWQL but not the ordering semantics.