wiki:TicketQuery

TicketQuery Wiki Macro

The TicketQuery macro lets you display ticket information anywhere that accepts WikiFormatting. The query language used by the [[TicketQuery]] macro is described in the TracQuery page.

Usage

[[TicketQuery]]

Wiki macro listing tickets that match certain criteria.

This macro accepts a comma-separated list of keyed parameters, in the form "key=value".

If the key is the name of a field, the value must use the syntax of a filter specifier as defined in TracQuery#QueryLanguage. Note that this is not the same as the simplified URL syntax used for query: links starting with a ? character. Commas (,) can be included in field values by escaping them with a backslash (\).

Groups of field constraints to be OR-ed together can be separated by a literal or argument.

In addition to filters, several other named parameters can be used to control how the results are presented. All of them are optional.

The format parameter determines how the list of tickets is presented:

  • list -- the default presentation is to list the ticket ID next to the summary, with each ticket on a separate line.
  • compact -- the tickets are presented as a comma-separated list of ticket IDs.
  • count -- only the count of matching tickets is displayed
  • rawcount -- only the count of matching tickets is displayed, not even with a link to the corresponding query (since 1.1.1)
  • table -- a view similar to the custom query view (but without the controls)
  • progress -- a view similar to the milestone progress bars

The max parameter can be used to limit the number of tickets shown (defaults to 0, i.e. no maximum).

The order parameter sets the field used for ordering tickets (defaults to id).

The desc parameter indicates whether the order of the tickets should be reversed (defaults to false).

The group parameter sets the field used for grouping tickets (defaults to not being set).

The groupdesc parameter indicates whether the natural display order of the groups should be reversed (defaults to false).

The verbose parameter can be set to a true value in order to get the description for the listed tickets. For table format only. deprecated in favor of the rows parameter

The rows parameter can be used to specify which field(s) should be viewed as a row, e.g. rows=description|summary

The col parameter can be used to specify which fields should be viewed as columns. For table format only.

For compatibility with Trac 0.10, if there's a last positional parameter given to the macro, it will be used to specify the format. Also, using "&" as a field separator still works (except for order) but is deprecated.

Examples

Example Result Macro
Number of Triage tickets: 31 [[TicketQuery(status=new&milestone=,count)]]
Number of new tickets: 32 [[TicketQuery(status=new,count)]]
Number of reopened tickets: 0 [[TicketQuery(status=reopened,count)]]
Number of assigned tickets: 7 [[TicketQuery(status=assigned,count)]]
Number of invalid tickets: 8 [[TicketQuery(status=closed,resolution=invalid,count)]]
Number of worksforme tickets: 2 [[TicketQuery(status=closed,resolution=worksforme,count)]]
Number of duplicate tickets: 10 [[TicketQuery(status=closed,resolution=duplicate,count)]]
Number of wontfix tickets: 7 [[TicketQuery(status=closed,resolution=wontfix,count)]]
Number of fixed tickets: 94 [[TicketQuery(status=closed,resolution=fixed,count)]]
Number of untriaged tickets (milestone unset): 35 [[TicketQuery(status!=closed,milestone=,count)]]
Total number of tickets: 160 [[TicketQuery(count)]]
Number of tickets reported or owned by current user: 0 [[TicketQuery(reporter=$USER,or,owner=$USER,count)]]
Number of tickets created this month: 8 [[TicketQuery(created=thismonth..,count)]]
Number of closed Firefox tickets: 0 [[TicketQuery(status=closed,keywords~=firefox,count)]]
Number of closed Opera tickets: 0 [[TicketQuery(status=closed,keywords~=opera,count)]]
Number of closed tickets affecting Firefox and Opera: 0 [[TicketQuery(status=closed,keywords~=firefox opera,count)]]
Number of closed tickets affecting Firefox or Opera: 0 [[TicketQuery(status=closed,keywords~=firefox|opera,count)]]
Number of tickets that affect Firefox or are closed and affect Opera: 0 [[TicketQuery(status=closed,keywords~=opera,or,keywords~=firefox,count)]]
Number of closed Firefox tickets that don't affect Opera: 0 [[TicketQuery(status=closed,keywords~=firefox -opera,count)]]
Last 3 modified tickets: #158, #152, #160 [[TicketQuery(max=3,order=modified,desc=1,compact)]]

Details of ticket #1:

[[TicketQuery(id=1,col=id|owner|reporter,rows=summary,table)]]

Ticket Owner Reporter
#1 somebody David A. Riggs
Summary Update Trac Settings

Format: list

[[TicketQuery(version=0.6|0.7&resolution=duplicate)]]

This is displayed as:

No results

[[TicketQuery(id=123)]]

This is displayed as:

#123
brew upgrade / reinstall survex fail

Format: compact

[[TicketQuery(version=0.6|0.7&resolution=duplicate, compact)]]

This is displayed as:

No results

Format: count

[[TicketQuery(version=0.6|0.7&resolution=duplicate, count)]]

This is displayed as:

0

Format: progress

[[TicketQuery(milestone=0.12.8&group=type,format=progress)]]

This is displayed as:

Format: table

You can choose the columns displayed in the table format (format=table) using col=<field>. You can specify multiple fields and the order they are displayed in by placing pipes (|) between the columns:

[[TicketQuery(max=3,status=closed,order=id,desc=1,format=table,col=resolution|summary|owner|reporter)]]

This is displayed as:

Results (1 - 3 of 121)

1 2 3 4 5 6 7 8 9 10 11 →
Ticket Resolution Summary Owner Reporter
#158 fixed Allow suppression of frontsight/backsight 'disagree' warnings for Walls data Olly Betts Joe Walko
#154 fixed [img] heap-buffer-overflow reading a v8 .3d with a non-default separator and no coordinate system Olly Betts Philip Schuchardt
#153 fixed Cavern and Aven should throw a more-helpful error when directory is not writeable Olly Betts Eric C. Landgraf
1 2 3 4 5 6 7 8 9 10 11 →

Full rows

In table format you can specify full rows using rows=<field>:

[[TicketQuery(max=3,status=closed,order=id,desc=1,format=table,col=resolution|summary|owner|reporter,rows=description)]]

This is displayed as:

Results (1 - 3 of 121)

1 2 3 4 5 6 7 8 9 10 11 →
Ticket Resolution Summary Owner Reporter
#158 fixed Allow suppression of frontsight/backsight 'disagree' warnings for Walls data Olly Betts Joe Walko
Description

Walls compass & clino tolerance settings should be honored. If that's not practical, then a method is needed to enable full suppression of frontsight/backsight 'disagree' warnings for Walls data.

Per documentation: "In TYPEAB= and TYPEVB=, the threshold is ignored...Survex uses a threshold based on the specified instrument SDs, and averages foresights and backsights." Also ignored, evidently, are the Walls default tolerances of 5-degrees for compass and clino.

This can result in massive 'spamming' of warnings triggered by compass or clino fs/bs disagreements, ones are within the Walls default or configured tolerances.

The multi-line format used for the warnings/errors log complicates sorting, or other convenient means to discards these fs/bs disagree warnings in order to find other type of warning which may be important.

A large Walls dataset I work with generates 1,323 compass/clino disagree warnings, 60 compass data on plumb shots, and 11 other types of warnings.

#154 fixed [img] heap-buffer-overflow reading a v8 .3d with a non-default separator and no coordinate system Olly Betts Philip Schuchardt
Description

dump3d on the .3d cavern writes for tests/wallsdiving.srv aborts under AddressSanitizer:

==33594==ERROR: AddressSanitizer: heap-buffer-overflow READ of size 6 at 0x602000000120 thread T0

1 memcmp

2 img_read_stream_survey img.c:1400

3 img_for_survex_open_survey img_for_survex.c:46

4 main dump3d.c:92

0x602000000120 is located 0 bytes after 16-byte region allocated by getline_alloc_len img.c:555 from img_read_stream_survey img.c:1387

The title line of that file is "wallsdiving\0\0:" - the writer (img.c:1687) adds the hidden fields whenever the separator isn't '.', which is the case for every Walls import, so the cs field is an empty string. The reader then does

if (memcmp(cs, "+init=", 6) == 0) {

on it, which reads 6 bytes from a 0 length string. The line fits in getline_alloc_len's initial 16 byte buffer, so that runs 2 bytes past the end of the allocation. A .svx with no *cs and the default separator doesn't trip it because the extra fields aren't written at all.

Same shape one level down: with a cs of "+init=e" the p[4] / p[5] checks and the memcmp against "epsg"/"esri" read past the end too.

Seen with the clang ASan build on macOS arm64; the sanitisers CI job may not be reaching dump3d on the Walls tests. Unrelated to #150, found while running the full cavern.tst for that patch.

#153 fixed Cavern and Aven should throw a more-helpful error when directory is not writeable Olly Betts Eric C. Landgraf
Description

I spent more time than I'd like to admit trying to figure out why a walls dataset with no errors was erroring out with error: Couldn’t open file “<FILENAME>.3d” What was not clear is that it could not open it for WRITING, rather than for reading.

Also in unexpected behaviours: if the 3d file does exist but is not writeable, aven will successfully open the *old* file after failing to write one.

1 2 3 4 5 6 7 8 9 10 11 →


See also: TracQuery, TracTickets, TracReports

Last modified 4 months ago Last modified on Jun 11, 2026, 12:38:13 AM
Note: See TracWiki for help on using the wiki.