wiki:TicketQuery

Version 2 (modified by trac, 5 months ago) ( diff )

--

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: 1 [[TicketQuery(status=new&milestone=,count)]]
Number of new tickets: 230 [[TicketQuery(status=new,count)]]
Number of reopened tickets: 4 [[TicketQuery(status=reopened,count)]]
Number of assigned tickets: 2 [[TicketQuery(status=assigned,count)]]
Number of invalid tickets: 145 [[TicketQuery(status=closed,resolution=invalid,count)]]
Number of worksforme tickets: 84 [[TicketQuery(status=closed,resolution=worksforme,count)]]
Number of duplicate tickets: 159 [[TicketQuery(status=closed,resolution=duplicate,count)]]
Number of wontfix tickets: 104 [[TicketQuery(status=closed,resolution=wontfix,count)]]
Number of fixed tickets: 873 [[TicketQuery(status=closed,resolution=fixed,count)]]
Number of untriaged tickets (milestone unset): 1 [[TicketQuery(status!=closed,milestone=,count)]]
Total number of tickets: 1608 [[TicketQuery(count)]]
Number of tickets reported or owned by current user: 1 [[TicketQuery(reporter=$USER,or,owner=$USER,count)]]
Number of tickets created this month: 4 [[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: #1832, #1831 [[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 jhering Christian Franke
Summary smartmontools build fails on QNX

Format: list

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

This is displayed as:

No results

[[TicketQuery(id=123)]]

This is displayed as:

#123
Option DEVISCAN does not work on OpenBSD >= 4.8

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 1365)

1 2 3 4 5 6 7 8 9 10 11
Ticket Resolution Summary Owner Reporter
#1831 worksforme No JSON support for "Auto Offline data collection on/off support" Alexander Shaduri
#1830 fixed error message for missing argument segfaults (musl libc) Christian Franke ncopa
#1828 duplicate smartctl -x creates new NVMe errors rzsn
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 1365)

1 2 3 4 5 6 7 8 9 10 11
Ticket Resolution Summary Owner Reporter
#1831 worksforme No JSON support for "Auto Offline data collection on/off support" Alexander Shaduri
Description

Hi,

It looks like in JSON/ATA output, no corresponding keys are present for "Auto Offline data collection on/off support" / "No Auto Offline data collection support".

GSmartControl uses these to check if it's supported or not, so that it can enable the appropriate checkbox.

If this is something that is problematic and/or useless on modern drives, please let me know and I'll remove this functionality from GSmartControl.

Thanks!

#1830 fixed error message for missing argument segfaults (musl libc) Christian Franke ncopa
Description

running any of: smartctl -l, smartctl -t, smartctl -P, smartctl -v, smartctl -b and smartctl -f results in segfault on Alpine Linux (using musl libc).

Backtrace:

Program received signal SIGSEGV, Segmentation fault.
parse_options (print_type_only=@0x7fffffffa556: false, nvmeopts=..., scsiopts=..., ataopts=..., 
    type=@0x7fffffffa538: 0x0, argv=0x7fffffffe668, argc=2) at smartctl.cpp:1173
1173	      if (arg[1] == '-' && optchar != 'h') {

Downstream report: https://gitlab.alpinelinux.org/alpine/aports/-/issues/15948

#1828 duplicate smartctl -x creates new NVMe errors rzsn
Description

I was given a drive to check the condition, but errors kept increasing. After a while I actually noticed that the errors increased by 1 by each smartctl -x call (I was repeatedly checking the state of the ssd while ext4 lazy inode init was doing its job after formatting the partition).

Since the errors are not about failure, but rather a malformed command, could be done something in smartctl in order to prevent such things happening?

My expectation: an error checking tool shall not generate errors while doing so.

I see multiple reasons why to fix this - if somebody calls smartctl repetitively, the errors increase but its not actually representing any error condition of the drive.

If somebody would call smartctl too aggressively, then actual errors might get lost. (if the nvme error log is a circular buffer which afaik is, 64 entries on mine).

There was a #1222 ticket about something similar? Smartd should ignore non-error entries from NVMe Error Information log

But hiding is one thing.. while making actual errors is something NOT desireable.

So the drive in question is a WD SN640 nvme:

=== START OF INFORMATION SECTION ===
Model Number:                       WUS4BB076D7P3E3
Serial Number:                      ********
Firmware Version:                   R111000L
PCI Vendor/Subsystem ID:            0x1b96
IEEE OUI Identifier:                0x0014ee
Total NVM Capacity:                 7,681,501,126,656 [7.68 TB]
Unallocated NVM Capacity:           0
Controller ID:                      0
NVMe Version:                       1.3
Number of Namespaces:               1
Namespace 1 Size/Capacity:          7,681,501,126,656 [7.68 TB]
Namespace 1 Formatted LBA Size:     4096
Namespace 1 IEEE EUI-64:            0014ee 83066cbb80
Local Time is:                      Tue Apr 30 20:30:15 2024 CEST
Firmware Updates (0x19):            4 Slots, Slot 1 R/O, no Reset required
Optional Admin Commands (0x001f):   Security Format Frmw_DL NS_Mngmt Self_Test
Optional NVM Commands (0x005e):     Wr_Unc DS_Mngmt Wr_Zero Sav/Sel_Feat Timestmp
Log Page Attributes (0x03):         S/H_per_NS Cmd_Eff_Lg
Warning  Comp. Temp. Threshold:     70 Celsius
Critical Comp. Temp. Threshold:     80 Celsius
Namespace 1 Features (0x02):        NA_Fields

Current state at end of smartctl -x call:

Error Information (NVMe Log 0x01, 16 of 256 entries)
Num   ErrCount  SQId   CmdId  Status  PELoc          LBA  NSID    VS  Message
  0         12     0  0xd009  0xc004      -            0     1     -  Invalid Field in Command
  1         11     0  0xc008  0xc004      -            0     1     -  Invalid Field in Command
  2         10     0  0xa00b  0xc004      -            0     1     -  Invalid Field in Command
  3          9     0  0x900a  0xc004      -            0     1     -  Invalid Field in Command
  4          8     0  0x8009  0xc004      -            0     1     -  Invalid Field in Command
  5          7     0  0xa00e  0xc004      -            0     1     -  Invalid Field in Command
  6          6     0  0x900d  0xc004      -            0     1     -  Invalid Field in Command
  7          5     0  0x7008  0xc004      -            0     1     -  Invalid Field in Command
  8          4     0  0x800c  0xc004      -            0     1     -  Invalid Field in Command
  9          3     0  0x600c  0xc004      -            0     1     -  Invalid Field in Command
 10          2     0  0x100a  0xc004      -            0     1     -  Invalid Field in Command
 11          1     0  0x300e  0xc004  0x028            0     0     -  Invalid Field in Command

And using nvme-cli error-log, i see that all these errors (except the oldest) are of this kind:

.................
 Entry[ 0]
.................
error_count     : 12
sqid            : 0
cmdid           : 0xd009
status_field    : 0x6002(Invalid Field in Command: A reserved coded value or an unsupported value in a defined field)
phase_tag       : 0
parm_err_loc    : 0xffff
lba             : 0
nsid            : 0x1
vs              : 0
trtype          : The transport type is not indicated or the error is not transport related.
csi             : 0
opcode          : 0
cs              : 0
trtype_spec_info: 0
log_page_version: 0

How can we trace this to an exact query which smartctl does?

1 2 3 4 5 6 7 8 9 10 11


See also: TracQuery, TracTickets, TracReports

Note: See TracWiki for help on using the wiki.