Edgewall Software

Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#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 enum.value rather than ticket.type for order=type.

API Changes:
Internal Changes:

Description (last modified by Jun Omae)

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 Jun Omae, 6 years ago

Description: modified (diff)

comment:2 by Jun Omae, 6 years ago

Owner: set to Jun Omae
Status: newassigned

Proposed changes in log:jomae.git@t12402.

comment:3 by Jun Omae, 6 years ago

Release Notes: modified (diff)
Resolution: fixed
Status: assignedclosed

Committed in [14705] and merged to trunk in [14706].

comment:4 by Ryan J Ollos, 6 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):  
    436436        enum_columns = [col for col in ('resolution', 'priority', 'severity',
    437437                                        'type')
    438438                            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)]
    441440        joined_columns = [col for col in ('milestone', 'version')
    442441                              if col not in custom_fields and
    443                                  (col == self.order or col == self.group)]
     442                                 col in (self.order, self.group)]
    444443        # 31 is max of joins in SQLite 32-bit
    445444        use_joins = (len(set(cols) & custom_fields) +
    446445                     len(enum_columns) + len(joined_columns)) <= 31

comment:5 by Jun Omae, 6 years ago

Thanks. Applied in [14713-14714].

Modify Ticket

Change Properties
Set your email in Preferences
as closed The owner will remain Jun Omae.
The resolution will be deleted. Next status will be 'reopened'.
to The owner will be changed from Jun Omae to the specified user.

Add Comment

E-mail address and name can be saved in the Preferences .
Note: See TracTickets for help on using tickets.