Modify ↓
#12402 closed defect (fixed)
Query system doesn't respect order of ticket types
Reported by: | Jun Omae | Owned by: | Jun Omae |
---|---|---|---|
Priority: | normal | Milestone: | 1.0.11 |
Component: | query system | Version: | |
Severity: | normal | Keywords: | |
Cc: | Branch: | ||
Release Notes: |
Query system now sorts by |
||
API Changes: | |||
Internal Changes: |
Description (last modified by )
The following query is generated from query:?owner=admin&order=type
. The ticket types are defined in enum
table and have the order.
However, the query doesn't sort by enum.value
. If resolution
, priority
and severity
, it sorts by enum.value
.
SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS type,t.status AS st atus,t.priority AS priority,t.milestone AS milestone,t.time AS time,t.changetime AS changetime,t.reporter AS reporter,priority.value AS priority_value FROM ticket AS t LEFT OUTER JOIN enum AS priority ON (priority.type='priority' AND priority.name=priority) WHERE ((COALESCE(t.reporter,'')=%s)) ORDER BY COALESCE(t.type,'')='',t.type,t.id
Attachments (0)
Change History (5)
comment:1 by , 9 years ago
Description: | modified (diff) |
---|
comment:2 by , 9 years ago
Owner: | set to |
---|---|
Status: | new → assigned |
comment:3 by , 9 years ago
Release Notes: | modified (diff) |
---|---|
Resolution: | → fixed |
Status: | assigned → closed |
comment:4 by , 9 years ago
This refactoring might simplify the expression a little bit:
-
trac/ticket/query.py
diff --git a/trac/ticket/query.py b/trac/ticket/query.py index 039ca18..a4b4335 100644
a b class Query(object): 436 436 enum_columns = [col for col in ('resolution', 'priority', 'severity', 437 437 'type') 438 438 if col not in custom_fields and 439 (col == 'priority' or col == self.order or 440 col == self.group)] 439 col in ('priority', self.order, self.group)] 441 440 joined_columns = [col for col in ('milestone', 'version') 442 441 if col not in custom_fields and 443 (col == self.order or col ==self.group)]442 col in (self.order, self.group)] 444 443 # 31 is max of joins in SQLite 32-bit 445 444 use_joins = (len(set(cols) & custom_fields) + 446 445 len(enum_columns) + len(joined_columns)) <= 31
Note:
See TracTickets
for help on using tickets.
Proposed changes in log:jomae.git@t12402.