Skip to main content

Top-level Expression

The top-level expression is the expression that defines the results of the check. The top-level expression must evaluate to a list of records.

In order to prevent overly large query results, NQE automatically rewrites checks whose resulting record's fields' values are not simple. A simple value is defined as a value that is either a basic value or a list of basic values, where a basic value is defined as:

  • A value of a primitive type, like string, number, boolean, or ipAddress, ipSubnet, macAddress, or
  • An enumerated value.

For example, a list of string is a simple value, whereas a list of lists of string is not simple.

Whenever a returned record has a field whose value is not simple, that value is converted to a string. For example, this query:

foreach device in network.devices
select { name: device.name, device: device }

will be rewritten to:

foreach device in network.devices
select { name: device.name, device: toStringTruncate(device) }

since device.name is a simple value (a string), but device is not a simple value. For more information on the behaviour of toStringTruncate, please see toString.