diff --git a/trac/ticket/query.py b/trac/ticket/query.py
index 49485f6..390d53f 100644
--- a/trac/ticket/query.py
+++ b/trac/ticket/query.py
@@ -61,6 +61,12 @@ class OrderRule(object):
         self.name = name
         self.desc = desc
         
+        if name is not None and not isinstance(name,basestring):
+            raise ValueError('Incorrect type for name: %s' % type(name))
+        
+        if desc is not None and not isinstance(desc,bool):
+            raise ValueError('Incorrect type for desc: %s' % type(desc))
+        
     def __str__(self):
         if self.desc:
             return "-%s" % self.name
@@ -108,7 +114,7 @@ class Query(object):
     clause_re = re.compile(r'(?P<clause>\d+)_(?P<field>.+)$')
 
     def __init__(self, env, report=None, constraints=None, cols=None,
-                 order=None, group=None, groupdesc=0, verbose=0,
+                 orders=None, group=None, groupdesc=0, verbose=0,
                  rows=None, page=None, max=None, format=None):
         self.env = env
         self.id = report # if not None, it's the corresponding saved query
@@ -116,7 +122,7 @@ class Query(object):
         if isinstance(constraints, dict):
             constraints = [constraints]
         self.constraints = constraints
-        self.order = order
+        self.orders = orders
         self.group = group
         self.groupdesc = groupdesc
         self.format = format
@@ -166,14 +172,16 @@ class Query(object):
         self.cols = [c for c in cols or [] if c in field_names or 
                      c == 'id']
         self.rows = [c for c in rows if c in field_names]
-        if not self.order or (self.order.name != 'id' and self.order.name not in field_names):
-            default_order = QueryModule(self.env).default_order
-            default_order = OrderRule.from_string(self.env, default_order)
-            if default_order and (default_order.name == 'id' or default_order.name in field_names):
-                self.order = default_order
+        # Only support a single order rule at the moment, see #10178
+        if not self.orders or ('id' not in [o.name for o in self.orders] and self.orders[0].name not in field_names):
+            default_orders = QueryModule(self.env).default_orders
+            default_orders = [OrderRule.from_string(self.env, o) for o in default_orders]
+            # Only support a single order rule at the moment, see #10178
+            if default_orders and (default_orders[0].name == 'id' or default_orders[0].name in field_names):
+                self.orders = default_orders[:1]
             else:
                 # Fall back to 'priority' on invalid config
-                self.order = OrderRule(self.env)
+                self.orders = [OrderRule(self.env)]
         
         # Handle empty string as a request to not group the result
         if self.group == '':
@@ -216,7 +224,7 @@ class Query(object):
         constraints = [{}]
         cols = []
         report = None
-        order = None
+        orders = []
         def as_str(s):
             if isinstance(s, unicode):
                 return s.encode('utf-8')
@@ -257,15 +265,17 @@ class Query(object):
             elif field == 'report':
                 report = processed_values[0]
             elif field == 'order':
-                order = OrderRule.from_string(env, processed_values[0])
+                orders.extend(OrderRule.from_string(env, value)
+                              for value in processed_values)
             else:
                 constraints[-1].setdefault(synonyms.get(field, field), 
                                            []).extend(processed_values)
         constraints = filter(None, constraints)
         report = kw.pop('report', report)
         # Handle legacy way of defining order
-        legacy_order = OrderRule(env, kw.pop('order', None), as_bool(kw.pop('desc', None))) 
-        return cls(env, report, constraints=constraints, cols=cols, order=order or legacy_order, **kw)
+        legacy_order = OrderRule(env, kw.pop('order', None), as_bool(kw.pop('desc', None)))
+        
+        return cls(env, report, constraints=constraints, cols=cols, orders=orders or [legacy_order], **kw)
 
     def get_columns(self):
         if not self.cols:
@@ -308,8 +318,9 @@ class Query(object):
         # Use the columns defined in the config
         if cols:
             # Make sure the column we order by is visible.
-            if self.order and self.order.name not in cols:
-                cols.append(self.order.name)
+            for o in self.orders or []:
+                if o.name not in cols:
+                    cols.append(o.name)
     
             # Make sure to not show the column we group on.            
             if self.group in cols:
@@ -346,11 +357,12 @@ class Query(object):
             cols = cols[:7]
             
             # Make sure the column we order by is visible.
-            if self.order.name not in cols and self.order.name != self.group:
-                if len(cols) < 7:
-                    cols.append(self.order.name)
-                else:
-                    cols[-1] = self.order.name
+            order_names = [o.name for o in self.orders]
+            if set(order_names) - set(cols) - set([self.group]):
+                del cols[-1] 
+                for name in order_names:
+                    if name not in cols and name != self.group:
+                        cols.append(name)
         
         return cols
 
@@ -441,13 +453,13 @@ class Query(object):
         cursor.close()
         return results
 
-    def get_href(self, href, id=None, order=None, format=None,
+    def get_href(self, href, id=None, orders=None, format=None,
                  max=None, page=None):
         """Create a link corresponding to this query.
 
         :param href: the `Href` object used to build the URL
         :param id: optionally set or override the report `id`
-        :param order: optionally override the order parameter of the query
+        :param orders: optionally override the orders parameter of the query
         :param format: optionally override the format of the query
         :param max: optionally override the max items per page
         :param page: optionally specify which page of results (defaults to
@@ -466,8 +478,8 @@ class Query(object):
 
         if id is None:
             id = self.id
-        if order is None:
-            order = self.order
+        if orders is None:
+            orders = self.orders
         if max is None:
             max = self.max
         if page is None:
@@ -493,7 +505,7 @@ class Query(object):
         
         return href.query(constraints,
                           report=id,
-                          order=str(order) if order else None,
+                          order=[str(o) for o in orders if o],
                           group=self.group or "",
                           groupdesc=self.groupdesc and 1 or None,
                           col=cols,
@@ -519,6 +531,8 @@ class Query(object):
             tzinfo = req.tz
         self.get_columns()
         db = self.env.get_db_cnx()
+        
+        order_names = [o.name for o in self.orders]
 
         enum_columns = ('resolution', 'priority', 'severity')
         # Build the list of actual columns to query
@@ -531,7 +545,7 @@ class Query(object):
             add_cols(self.group)
         if self.rows:
             add_cols('reporter', *self.rows)
-        add_cols('status', 'priority', 'time', 'changetime', self.order.name)
+        add_cols('status', 'priority', 'time', 'changetime', *order_names)
         cols.extend([c for c in self.constraint_cols if not c in cols])
 
         custom_fields = [f['name'] for f in self.fields if 'custom' in f]
@@ -552,14 +566,14 @@ class Query(object):
 
         # Join with the enum table for proper sorting
         for col in [c for c in enum_columns
-                    if c == self.order.name or c == self.group or c == 'priority']:
+                    if c in order_names or c == self.group or c == 'priority']:
             sql.append("\n  LEFT OUTER JOIN enum AS %s ON "
                        "(%s.type='%s' AND %s.name=%s)"
                        % (col, col, col, col, col))
 
         # Join with the version/milestone tables for proper sorting
         for col in [c for c in ['milestone', 'version']
-                    if c == self.order.name or c == self.group]:
+                    if c in order_names or c == self.group]:
             sql.append("\n  LEFT OUTER JOIN %s ON (%s.name=%s)"
                        % (col, col, col))
 
@@ -710,8 +724,8 @@ class Query(object):
                            (','.join([str(id) for id in cached_ids])))
             
         sql.append("\nORDER BY ")
-        order_cols = [(self.order.name, self.order.desc)]
-        if self.group and self.group != self.order.name:
+        order_cols = [(o.name, o.desc) for o in self.orders]
+        if self.group and self.group not in order_names:
             order_cols.insert(0, (self.group, self.groupdesc))
 
         for name, desc in order_cols:
@@ -743,11 +757,16 @@ class Query(object):
                            % (desc, desc, col, desc))
             else:
                 sql.append("%s%s" % (col, desc))
-            if name == self.group and not name == self.order.name:
-                sql.append(",")
-        if self.order.name != 'id':
+            sql.append(",")
+        if order_cols:
+            del sql[-1]
+        if 'id' not in order_names:
             sql.append(",t.id")  
 
+        print "\n"
+        for i in range(len(sql)):
+            self.env.log.info("sql[%d] = |%s|", i, sql[i])
+            print "sql[%d] = |%s|" % (i, sql[i])
         if errors:
             raise QueryValueError(errors)
         return "".join(sql), args
@@ -807,8 +826,9 @@ class Query(object):
         headers = [{
             'name': col, 'label': labels.get(col, _('Ticket')),
             'wikify': col in wikify,
-            'href': self.get_href(context.href, order=OrderRule(self.env, col,
-                                                                col == self.order.name and not self.order.desc))
+            'href': self.get_href(context.href,
+                                  orders=[OrderRule(self.env, col,
+                                                    filter(None, [col == o.name and o.desc for o in self.orders]) is [])])
         } for col in cols]
 
         fields = {'id': {'type': 'id', 'label': _("Ticket")}}
@@ -924,8 +944,8 @@ class QueryModule(Component):
         Default is to let trac calculate this internally.
         (''since 0.12.3'')""")
     
-    default_order = Option('query', 'default_order',
-        default='priority',
+    default_orders = ListOption('query', 'default_orders',
+        default=['priority'],
         doc="""The default order to use for queries.
         (''since 0.12.3'')""")
     
@@ -1011,6 +1031,9 @@ class QueryModule(Component):
         # we need to re-insert it here.            
         if cols and 'id' not in cols: 
             cols.insert(0, 'id')
+        orders = args.get('order', [])
+        if isinstance(orders, basestring):
+            orders = [orders]
         rows = args.get('row', [])
         if isinstance(rows, basestring):
             rows = [rows]
@@ -1020,7 +1043,7 @@ class QueryModule(Component):
             max = 0 # unlimited unless specified explicitly
         query = Query(self.env, req.args.get('report'),
                       constraints, cols,
-                      OrderRule.from_string(self.env, args.get('order')),
+                      [OrderRule.from_string(self.env, o) for o in orders],
                       args.get('group'),
                       'groupdesc' in args, 'verbose' in args,
                       rows,
@@ -1343,10 +1366,11 @@ class TicketQueryMacro(WikiMacroBase):
             if m:
                 kw = arg[:m.end() - 1].strip()
                 value = arg[m.end():]
-                if kw in ('max', 'format', 'col'):
+                if kw in ('order', 'max', 'format', 'col'):
                     kwargs[kw] = value
-                elif kw == 'order':
-                    kwargs[kw] = OrderRule.from_string(env, value)
+                # TODO: Check if this is ok
+                #elif kw == 'order':
+                #    kwargs[kw] = [OrderRule.from_string(env, value)]
                 else:
                     clauses[-1][kw] = value
             elif arg.strip() == 'or':
@@ -1358,7 +1382,9 @@ class TicketQueryMacro(WikiMacroBase):
         if len(argv) > 0 and not 'format' in kwargs: # 0.10 compatibility hack
             kwargs['format'] = argv[0]
         if 'order' not in kwargs:
-            kwargs['order'] = OrderRule(env, 'id')
+            # TOOD: Check if this is ok
+            #kwargs['order'] = [OrderRule(env, 'id')]
+            kwargs['order'] = 'id'
         if 'max' not in kwargs:
             kwargs['max'] = '0' # unlimited by default
 
diff --git a/trac/ticket/templates/query_results.html b/trac/ticket/templates/query_results.html
index 5ebf755..232bf34 100644
--- a/trac/ticket/templates/query_results.html
+++ b/trac/ticket/templates/query_results.html
@@ -31,10 +31,10 @@
   <py:def function="column_headers()">
     <tr class="trac-columns">
       <th py:for="header in headers"
-          class="$header.name${query.order.name == header.name and (query.order.desc and ' desc' or ' asc') or ''}">
+          class="$header.name${query.orders[0].name == header.name and (query.orders[0].desc and ' desc' or ' asc') or ''}">
         <?python asc = _('(ascending)'); desc = _('(descending)') ?>
         <a title="${_('Sort by %(col)s %(direction)s', col=header.label,
-                      direction=(query.order.name == header.name and query.order.desc and desc or asc))}"
+                      direction=(query.orders[0].name == header.name and query.orders[0].desc and desc or asc))}"
            href="$header.href">${header.label}</a>
       </th>
     </tr>
diff --git a/trac/ticket/tests/query.py b/trac/ticket/tests/query.py
index dab1629..ebfa90d 100644
--- a/trac/ticket/tests/query.py
+++ b/trac/ticket/tests/query.py
@@ -39,7 +39,7 @@ class QueryTestCase(unittest.TestCase):
         self.env.reset_db()
 
     def test_all_ordered_by_id(self):
-        query = Query(self.env, order=OrderRule(self.env, 'id'))
+        query = Query(self.env, orders=[OrderRule(self.env, 'id')])
         sql, args = query.get_sql()
         self.assertEqualSQL(sql,
 """SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS type,t.status AS status,t.priority AS priority,t.milestone AS milestone,t.time AS time,t.changetime AS changetime,priority.value AS priority_value
@@ -50,7 +50,7 @@ ORDER BY COALESCE(t.id,0)=0,t.id""")
         tickets = query.execute(self.req)
 
     def test_all_ordered_by_id_desc(self):
-        query = Query(self.env, order=OrderRule(self.env, 'id', True))
+        query = Query(self.env, orders=[OrderRule(self.env, 'id', True)])
         sql, args = query.get_sql()
         self.assertEqualSQL(sql,
 """SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS type,t.status AS status,t.priority AS priority,t.milestone AS milestone,t.time AS time,t.changetime AS changetime,priority.value AS priority_value
@@ -61,7 +61,7 @@ ORDER BY COALESCE(t.id,0)=0 DESC,t.id DESC""")
         tickets = query.execute(self.req)
 
     def test_all_ordered_by_id_verbose(self):
-        query = Query(self.env, order=OrderRule(self.env, 'id'), verbose=1)
+        query = Query(self.env, orders=[OrderRule(self.env, 'id')], verbose=1)
         sql, args = query.get_sql()
         self.assertEqualSQL(sql,
 """SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS type,t.status AS status,t.priority AS priority,t.milestone AS milestone,t.reporter AS reporter,t.description AS description,t.time AS time,t.changetime AS changetime,priority.value AS priority_value
@@ -95,7 +95,7 @@ ORDER BY COALESCE(priority.value,'')='',%(cast_priority)s,t.id""" % {
         tickets = query.execute(self.req)
 
     def test_all_ordered_by_priority_desc(self):
-        query = Query(self.env, order=OrderRule(self.env, None, True)) # priority is default order
+        query = Query(self.env, orders=[OrderRule(self.env, None, True)]) # priority is default order
         sql, args = query.get_sql()
         self.assertEqualSQL(sql,
 """SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS type,t.status AS status,t.priority AS priority,t.milestone AS milestone,t.time AS time,t.changetime AS changetime,priority.value AS priority_value
@@ -107,7 +107,7 @@ ORDER BY COALESCE(priority.value,'')='' DESC,%(cast_priority)s DESC,t.id""" % {
         tickets = query.execute(self.req)
 
     def test_all_ordered_by_version(self):
-        query = Query(self.env, order=OrderRule(self.env, 'version'))
+        query = Query(self.env, orders=[OrderRule(self.env, 'version')])
         sql, args = query.get_sql()
         self.assertEqualSQL(sql,
 """SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS type,t.status AS status,t.priority AS priority,t.version AS version,t.time AS time,t.changetime AS changetime,priority.value AS priority_value
@@ -119,7 +119,7 @@ ORDER BY COALESCE(t.version,'')='',COALESCE(version.time,0)=0,version.time,t.ver
         tickets = query.execute(self.req)
 
     def test_all_ordered_by_version_desc(self):
-        query = Query(self.env, order=OrderRule(self.env, 'version', True))
+        query = Query(self.env, orders=[OrderRule(self.env, 'version', True)])
         sql, args = query.get_sql()
         self.assertEqualSQL(sql,
 """SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS type,t.status AS status,t.priority AS priority,t.version AS version,t.time AS time,t.changetime AS changetime,priority.value AS priority_value
@@ -143,7 +143,7 @@ ORDER BY COALESCE(t.id,0)=0,t.id""")
         tickets = query.execute(self.req)
 
     def test_all_grouped_by_milestone(self):
-        query = Query(self.env, order=OrderRule(self.env, 'id'), group='milestone')
+        query = Query(self.env, orders=[OrderRule(self.env, 'id')], group='milestone')
         sql, args = query.get_sql()
         self.assertEqualSQL(sql,
 """SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS type,t.status AS status,t.priority AS priority,t.component AS component,t.milestone AS milestone,t.time AS time,t.changetime AS changetime,priority.value AS priority_value
@@ -155,7 +155,7 @@ ORDER BY COALESCE(t.milestone,'')='',COALESCE(milestone.completed,0)=0,milestone
         tickets = query.execute(self.req)
 
     def test_all_grouped_by_milestone_desc(self):
-        query = Query(self.env, order=OrderRule(self.env, 'id'), group='milestone', groupdesc=1)
+        query = Query(self.env, orders=[OrderRule(self.env, 'id')], group='milestone', groupdesc=1)
         sql, args = query.get_sql()
         self.assertEqualSQL(sql,
 """SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS type,t.status AS status,t.priority AS priority,t.component AS component,t.milestone AS milestone,t.time AS time,t.changetime AS changetime,priority.value AS priority_value
@@ -268,7 +268,7 @@ ORDER BY COALESCE(t.id,0)=0,t.id""" % ((foo,) * 6))
 
     def test_grouped_by_custom_field(self):
         self.env.config.set('ticket-custom', 'foo', 'text')
-        query = Query(self.env, group='foo', order=OrderRule(self.env, 'id'))
+        query = Query(self.env, group='foo', orders=[OrderRule(self.env, 'id')])
         sql, args = query.get_sql()
         foo = self.db.quote('foo')
         self.assertEqualSQL(sql,
@@ -505,7 +505,7 @@ ORDER BY COALESCE(t.id,0)=0,t.id""")
     
     def test_default_group_no_config_with_request(self):
         self.env.config.remove('query', 'default_group')
-        query = Query(self.env, order=OrderRule(self.env, 'summary'))
+        query = Query(self.env, orders=[OrderRule(self.env, 'summary')])
         sql, args = query.get_sql()
         self.assertEqualSQL(sql,
 """SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS type,t.status AS status,t.priority AS priority,t.milestone AS milestone,t.time AS time,t.changetime AS changetime,priority.value AS priority_value
@@ -529,7 +529,7 @@ ORDER BY COALESCE(priority.value,'')='',CAST(priority.value AS integer),t.id""")
         
     def test_default_group_with_config_with_request(self):
         self.env.config.set('query', 'default_group', 'type')
-        query = Query(self.env, order=OrderRule(self.env, 'summary'))
+        query = Query(self.env, orders=[OrderRule(self.env, 'summary')])
         sql, args = query.get_sql()
         self.assertEqualSQL(sql,
 """SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.status AS status,t.priority AS priority,t.milestone AS milestone,t.component AS component,t.type AS type,t.time AS time,t.changetime AS changetime,priority.value AS priority_value
@@ -553,9 +553,9 @@ ORDER BY COALESCE(t.time,0)=0,t.time,COALESCE(priority.value,'')='',CAST(priorit
         tickets = query.execute(self.req)
         self.env.config.remove('query', 'default_group')
     
-    def test_default_order_no_config_with_request(self):
-        self.env.config.remove('query', 'default_order')
-        query = Query(self.env, order=OrderRule(self.env, 'summary'))
+    def test_default_orders_no_config_with_request(self):
+        self.env.config.remove('query', 'default_orders')
+        query = Query(self.env, orders=[OrderRule(self.env, 'summary')])
         sql, args = query.get_sql()
         self.assertEqualSQL(sql,
 """SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS type,t.status AS status,t.priority AS priority,t.milestone AS milestone,t.time AS time,t.changetime AS changetime,priority.value AS priority_value
@@ -565,8 +565,8 @@ ORDER BY COALESCE(t.summary,'')='',t.summary,t.id""")
         self.assertEqual([], args)
         tickets = query.execute(self.req)
     
-    def test_default_order_no_config_no_request(self):
-        self.env.config.remove('query', 'default_order')
+    def test_default_orders_no_config_no_request(self):
+        self.env.config.remove('query', 'default_orders')
         query = Query(self.env)
         sql, args = query.get_sql()
         self.assertEqualSQL(sql,
@@ -577,9 +577,9 @@ ORDER BY COALESCE(priority.value,'')='',CAST(priority.value AS integer),t.id""")
         self.assertEqual([], args)
         tickets = query.execute(self.req)
         
-    def test_default_order_with_config_with_request(self):
-        self.env.config.set('query', 'default_order', 'type')
-        query = Query(self.env, order=OrderRule(self.env, 'summary'))
+    def test_default_orders_with_config_with_request(self):
+        self.env.config.set('query', 'default_orders', 'type')
+        query = Query(self.env, orders=[OrderRule(self.env, 'summary')])
         sql, args = query.get_sql()
         self.assertEqualSQL(sql,
 """SELECT t.id AS id,t.summary AS summary,t.owner AS owner,t.type AS type,t.status AS status,t.priority AS priority,t.milestone AS milestone,t.time AS time,t.changetime AS changetime,priority.value AS priority_value
@@ -588,10 +588,10 @@ FROM ticket AS t
 ORDER BY COALESCE(t.summary,'')='',t.summary,t.id""")
         self.assertEqual([], args)
         tickets = query.execute(self.req)
-        self.env.config.remove('query', 'default_order')
+        self.env.config.remove('query', 'default_orders')
         
-    def test_default_order_with_config_no_request(self): 
-        self.env.config.set('query', 'default_order', 'time')
+    def test_default_orders_with_config_no_request(self): 
+        self.env.config.set('query', 'default_orders', 'time')
         query = Query(self.env)
         sql, args = query.get_sql()
         self.assertEqualSQL(sql,
@@ -601,7 +601,7 @@ FROM ticket AS t
 ORDER BY COALESCE(t.time,0)=0,t.time,t.id""")
         self.assertEqual([], args)
         tickets = query.execute(self.req)
-        self.env.config.remove('query', 'default_order')
+        self.env.config.remove('query', 'default_orders')
         
         
     def test_default_cols_with_config_no_request(self): 
@@ -712,35 +712,35 @@ class TicketQueryMacroTestCase(unittest.TestCase):
     def test_owner_and_milestone(self):
         self.assertQueryIs('owner=joe, milestone=milestone1',
                            'owner=joe&milestone=milestone1',
-                           dict(col='status|summary', max='0', order=OrderRule(self.env, 'id')),
+                           dict(col='status|summary', max='0', order=[OrderRule(self.env, 'id')]),
                            'list')
 
     def test_owner_or_milestone(self):
         self.assertQueryIs('owner=joe, or, milestone=milestone1',
                            'owner=joe&or&milestone=milestone1',
-                           dict(col='status|summary', max='0', order=OrderRule(self.env, 'id')),
+                           dict(col='status|summary', max='0', order=[OrderRule(self.env, 'id')]),
                            'list')
     
     def test_format_arguments(self):
         self.assertQueryIs('owner=joe, milestone=milestone1, col=component|severity, max=15, order=component, format=compact',
                            'owner=joe&milestone=milestone1',
-                           dict(col='status|summary|component|severity', max='15', order=OrderRule(self.env, 'component')),
+                           dict(col='status|summary|component|severity', max='15', order=[OrderRule(self.env, 'component')]),
                            'compact')
         self.assertQueryIs('owner=joe, milestone=milestone1, col=id|summary|component, max=30, order=component, format=table',
                            'owner=joe&milestone=milestone1',
-                           dict(col='id|summary|component', max='30', order=OrderRule(self.env, 'component')),
+                           dict(col='id|summary|component', max='30', order=[OrderRule(self.env, 'component')]),
                            'table')
 
     def test_special_char_escaping(self):
         self.assertQueryIs(r'owner=joe|jack, milestone=this\&that\|here\,now',
                            r'owner=joe|jack&milestone=this\&that\|here,now',
-                           dict(col='status|summary', max='0', order=OrderRule(self.env, 'id')),
+                           dict(col='status|summary', max='0', order=[OrderRule(self.env, 'id')]),
                            'list')
         
     def test_order_by_component_desc(self):
         self.assertQueryIs('owner=joe, milestone=milestone1, col=id|summary|component, max=30, order=-component',
                            'owner=joe&milestone=milestone1',
-                           dict(col='status|summary|id|summary|component', max='30', order=OrderRule(self.env, 'component', True)),
+                           dict(col='status|summary|id|summary|component', max='30', order=[OrderRule(self.env, 'component', True)]),
                            'list')
         
 

