---
title: Settings and Parameters
description: You can configure the Query service using cluster-level query
  settings, node-level query settings, and request-level query parameters.
pubDate: 2026-08-17T09:53:44.266Z
antora:
  editUrl: https://github.com/couchbase/docs-server/edit/release/7.2/modules/settings/pages/query-settings.adoc
  xref: xref:7.2@server:settings:query-settings.adoc[]
---

[Consult the llms.txt file for a full list of contents](/llms.txt)
[View original HTML](/server/7.2/settings/query-settings.html)

# Settings and Parameters

> You can configure the Query service using cluster-level query settings, node-level query settings, and request-level query parameters. 

There are three ways of configuring the Query service. You can specify cluster-level settings for all nodes running the Query service in the cluster. You can specify node-level settings for a single node running the Query service. You can also specify parameters for individual requests. Cluster-level query settings, node-level query settings, and request-level parameters must be set and used in different ways.

__Table 1\. Comparison of Query Settings and Parameters__
|                                  | Setting Per         | Set By                                | Set On      | Set Via                                                                     |
| -------------------------------- | ------------------- | ------------------------------------- | ----------- | --------------------------------------------------------------------------- |
| **Cluster-level query settings** | Cluster             | The administrator at the system level | Server side | The CLI, cURL statements, or the UI                                         |
| **Node-level query settings**    | Service Node        | The administrator at the system level | Server side | cURL statements                                                             |
| **Request-level parameters**     | Request (statement) | Each user                             | Client side | cbq command-line parameters, cURL statements, client programming, or the UI |

> [!NOTE]
> Cluster-level settings and node-level settings are collectively referred to as _service-level settings_.

## [](#query-setting-levels-and-equivalents)Query Setting Levels and Equivalents

Some query settings are cluster-level, node-level, or request-level only, while some apply to more than one level with slightly different names.

If a cluster-level setting has an equivalent node-level setting, then changing the cluster-level setting overwrites the node-level setting for all Query nodes in the cluster.

You can change a node-level setting for a single node to be different to the equivalent cluster-level setting. Changing the node-level setting does not affect the equivalent cluster-level setting. However, you should note that the node-level setting may be overwritten by subsequent changes at the cluster-level. In particular, specifying query settings via the CLI or the UI makes changes at the cluster-level.

If a request-level parameter has an equivalent node-level setting, the node-level setting _usually_ acts as the default for the request-level parameter, as described in the tables below. Setting a request-level parameter overrides the equivalent node-level setting.

Furthermore, for numeric values, if a request-level parameter has an equivalent node-level setting, the node-level setting dictates the upper-bound value of the request-level parameter. For example, if the node-level `timeout` is set to 500, then the request-level parameter cannot be set to 501 or any value higher.

__Table 2\. Single-Level Settings__
| Cluster-Level Only Settings                                                                                             | Node-Level Only Settings                                                                                                                                                                                                                                                                                                                                                                      | Request-Level Only Parameters                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [queryTmpSpaceDir](#queryTmpSpaceDir) [queryTmpSpaceSize](#queryTmpSpaceSize) [queryCurlWhitelist](#queryCurlWhitelist) | [auto-prepare](#auto-prepare) [completed](#completed) [cpuprofile](#cpuprofile) [debug](#debug) [distribute](#distribute) [functions-limit](#functions-limit) [keep-alive-length](#keep-alive-length) [max-index-api](#max-index-api) [memprofile](#memprofile) [mutexprofile](#mutexprofile) [plus-servicers](#plus-servicers) [request-size-cap](#request-size-cap) [servicers](#servicers) | [args](#args) [auto\_execute](#auto%5Fexecute) [client\_context\_id](#client%5Fcontext%5Fid) [compression](#compression) [creds](#creds) [durability\_level](#durability%5Flevel) [encoded\_plan](#encoded%5Fplan) (deprecated) [encoding](#encoding) [format](#format) [kvtimeout](#kvtimeout) [metrics](#metrics) [namespace](#namespace) [prepared](#prepared) [preserve\_expiry](#preserve%5Fexpiry) [query\_context](#query%5Fcontext) [readonly](#readonly) [scan\_consistency](#scan%5Fconsistency) [scan\_vector](#scan%5Fvector) [scan\_vectors](#scan%5Fvectors) [scan\_wait](#scan%5Fwait) [signature](#signature) [statement](#statement) [txid](#txid) [txstmtnum](#txstmtnum) [tximplicit](#tximplicit) [txdata](#txdata) [use\_fts](#use%5Ffts) [$<_identifier_\>](#identifier) |

__Table 3\. Settings for Cluster-Level and Node-Level__
| Cluster-Level Name                                                                                                                                                                                                                                                                                                                                                          | Node-Level Name                                                                                                                                                                                                                                                                                       | Request-Level Name |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
| [queryCleanupClientAttempts](#queryCleanupClientAttempts) [queryCleanupLostAttempts](#queryCleanupLostAttempts) [queryCleanupWindow](#queryCleanupWindow) [queryCompletedLimit](#queryCompletedLimit) [queryCompletedThreshold](#queryCompletedThreshold) [queryLogLevel](#queryLogLevel) [queryN1QLFeatCtrl](#queryN1QLFeatCtrl) [queryPreparedLimit](#queryPreparedLimit) | [cleanupclientattempts](#cleanupclientattempts) [cleanuplostattempts](#cleanuplostattempts) [cleanupwindow](#cleanupwindow) [completed-limit](#completed-limit) [completed-threshold](#completed-threshold) [loglevel](#loglevel) [n1ql-feat-ctrl](#n1ql-feat-ctrl) [prepared-limit](#prepared-limit) | N/A                |

__Table 4\. Settings for Node-Level and Request-Level__
| Cluster-Level Name | Node-Level Name                                                                                             | Request-Level Name                                                                                                  |
| ------------------ | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| N/A                | [atrcollection](#atrcollection-srv) [controls](#controls-srv) [pretty](#pretty-srv) [profile](#profile-srv) | [atrcollection](#atrcollection%5Freq) [controls](#controls%5Freq) [pretty](#pretty%5Freq) [profile](#profile%5Freq) |

__Table 5\. Settings for Cluster-Level, Node-Level, and Request-Level__
| Cluster-Level Name                                                                                                                                                                                                                                                                                                        | Node-Level Name                                                                                                                                                                                                                                                                 | Request-Level Name                                                                                                                                                                                                                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [queryMaxParallelism](#queryMaxParallelism) [queryMemoryQuota](#queryMemoryQuota) [queryNumAtrs](#queryNumAtrs) [queryPipelineBatch](#queryPipelineBatch) [queryPipelineCap](#queryPipelineCap) [queryScanCap](#queryScanCap) [queryTimeout](#queryTimeout) [queryTxTimeout](#queryTxTimeout) [queryUseCBO](#queryUseCBO) | [max-parallelism](#max-parallelism-srv) [memory-quota](#memory-quota-srv) [numatrs](#numatrs-srv) [pipeline-batch](#pipeline-batch-srv) [pipeline-cap](#pipeline-cap-srv) [scan-cap](#scan-cap-srv) [timeout](#timeout-srv) [txtimeout](#txtimeout-srv) [use-cbo](#use-cbo-srv) | [max\_parallelism](#max%5Fparallelism%5Freq) [memory\_quota](#memory%5Fquota%5Freq) [numatrs](#numatrs%5Freq) (for future use) [pipeline\_batch](#pipeline%5Fbatch%5Freq) [pipeline\_cap](#pipeline%5Fcap%5Freq) [scan\_cap](#scan%5Fcap%5Freq) [timeout](#timeout%5Freq) [txtimeout](#txtimeout%5Freq) [use\_cbo](#use%5Fcbo%5Freq) |

## [](#cluster-level-query-settings)Cluster-Level Query Settings

To set a cluster-level query setting, use the [Query Settings REST API](../rest-api/rest-cluster-query-settings.md) (`/settings/querySettings` endpoint) with a cURL statement, or the [Advanced Query Settings](../manage/manage-settings/general-settings.md#query-settings) in the Couchbase Web Console. You can also set all of the cluster-level query settings using the [setting-query](../cli/cbcli/couchbase-cli-setting-query.md) command.

The table below contains details of all cluster-level query settings.

__Table 6\. Cluster-Level Query Settings__
| Name                                      | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | Schema                                               |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| **queryCleanupClientAttempts** _optional_ | When enabled, the Query service preferentially aims to clean up just transactions that it has created, leaving transactions for the distributed cleanup process only when it is forced to. The [node-level](#cleanupclientattempts) cleanupclientattempts setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. **Default** : true **Example** : false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | boolean                                              |
| **queryCleanupLostAttempts** _optional_   | When enabled, the Query service takes part in the distributed cleanup process, and cleans up expired transactions created by any client. The [node-level](#cleanuplostattempts) cleanuplostattempts setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. **Default** : true **Example** : false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | boolean                                              |
| **queryCleanupWindow** _optional_         | Specifies how frequently the Query service checks its subset of [active transaction records](../learn/data/transactions.md#additional-storage-use) for cleanup. Decreasing this setting causes expiration transactions to be found more swiftly, with the tradeoff of increasing the number of reads per second used for the scanning process. The value for this setting is a string. Its format includes an amount and a mandatory unit, e.g. 10ms (10 milliseconds) or 0.5s (half a second). Valid units are: ns (nanoseconds) us (microseconds) ms (milliseconds) s (seconds) m (minutes) h (hours) The [node-level](#cleanupwindow) cleanupwindow setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. **Default** : "60s" **Example** : "30s"                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | string (duration)                                    |
| **queryCompletedLimit** _optional_        | Sets the number of requests to be logged in the completed requests catalog. As new completed requests are added, old ones are removed. Increase this when the completed request keyspace is not big enough to track the slow requests, such as when you want a larger sample of slow requests. Refer to [Configure the Completed Requests](../manage/monitor/monitoring-n1ql-query.md#sys-completed-config) for more information and examples. The [node-level](#completed-limit) completed-limit setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. **Default** : 4000 **Example** : 7000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | integer (int32)                                      |
| **queryCompletedThreshold** _optional_    | A duration in milliseconds. All completed queries lasting longer than this threshold are logged in the completed requests catalog. Specify 0 to track all requests, independent of duration. Specify any negative number to track none. Refer to [Configure the Completed Requests](../manage/monitor/monitoring-n1ql-query.md#sys-completed-config) for more information and examples. The [node-level](#completed-threshold) completed-threshold setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. **Default** : 1000 **Example** : 7000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | integer (int32)                                      |
| **queryLogLevel** _optional_              | Log level used in the logger. All values, in descending order of data: DEBUG — For developers. Writes everything. TRACE — For developers. Less info than DEBUG. INFO — For admin & customers. Lists warnings & errors. WARN — For admin. Only abnormal items. ERROR — For admin. Only errors to be fixed. SEVERE — For admin. Major items, like crashes. NONE — Doesn't write anything. The [node-level](#loglevel) loglevel setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. **Default** : "INFO" **Example** : "DEBUG"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | enum (DEBUG, TRACE, INFO, WARN, ERROR, SEVERE, NONE) |
| **queryMaxParallelism** _optional_        | Specifies the maximum parallelism for queries on all Query nodes in the cluster. If the value is zero or negative, the maximum parallelism is restricted to the number of allowed cores. Similarly, if the value is greater than the number of allowed cores, the maximum parallelism is restricted to the number of allowed cores. (The number of allowed cores is the same as the number of logical CPUs. In Community Edition, the number of allowed cores cannot be greater than 4\. In Enterprise Edition, there is no limit to the number of allowed cores.) The [node-level](#max-parallelism-srv) max-parallelism setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. In addition, there is a [request-level](#max%5Fparallelism%5Freq) max\_parallelism parameter. If a request includes this parameter, it will be capped by the node-level max-parallelism setting. To enable queries to run in parallel, you must specify the cluster-level queryMaxParallelism parameter, or specify the node-level max-parallelism parameter on all Query nodes. Refer to [Max Parallelism](../n1ql/n1ql-language-reference/index-partitioning.md#max-parallelism) for more information. **Default** : 1 **Example** : 0 | integer (int32)                                      |
| **queryMemoryQuota** _optional_           | Specifies the maximum amount of memory a request may use on any Query node in the cluster, in MB. This parameter enforces a ceiling on the memory used for the tracked documents required for processing a request. It does not take into account any other memory that might be used to process a request, such as the stack, the operators, or some intermediate values. Within a transaction, this setting enforces the memory quota for the transaction by tracking the delta table and the transaction log (approximately). The [node-level](#memory-quota-srv) memory-quota setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. In addition, there is a [request-level](#memory%5Fquota%5Freq) memory\_quota parameter. If a request includes this parameter, it will be capped by the node-level memory-quota setting. **Default** : 0 **Example** : 4                                                                                                                                                                                                                                                                                                                                                          | integer (int32)                                      |
| **queryN1QLFeatCtrl** _optional_          | SQL++ feature control. This setting is provided for technical support only. The [node-level](#n1ql-feat-ctrl) n1ql-feat-ctrl setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | integer (int32)                                      |
| **queryNumAtrs** _optional_               | Specifies the total number of [active transaction records](../learn/data/transactions.md#additional-storage-use) for all Query nodes in the cluster. The [node-level](#numatrs-srv) numatrs setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. **Default** : 1024 **Minimum value (exclusive)** : 0 **Example** : 512                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | integer (int32)                                      |
| **queryPipelineBatch** _optional_         | Controls the number of items execution operators can batch for Fetch from the KV. The [node-level](#pipeline-batch-srv) pipeline-batch setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. In addition, the [request-level](#pipeline%5Fbatch%5Freq) pipeline\_batch parameter specifies this property per request. The minimum of that and the node-level pipeline-batch setting is applied. **Default** : 16 **Example** : 64                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | integer (int32)                                      |
| **queryPipelineCap** _optional_           | Maximum number of items each execution operator can buffer between various operators. The [node-level](#pipeline-cap-srv) pipeline-cap setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. In addition, the [request-level](#pipeline%5Fcap%5Freq) pipeline\_cap parameter specifies this property per request. The minimum of that and the node-level pipeline-cap setting is applied. **Default** : 512 **Example** : 1024                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | integer (int32)                                      |
| **queryPreparedLimit** _optional_         | Maximum number of prepared statements in the cache. When this cache reaches the limit, the least recently used prepared statements will be discarded as new prepared statements are created. The [node-level](#prepared-limit) prepared-limit setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. **Default** : 16384 **Example** : 65536                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | integer (int32)                                      |
| **queryScanCap** _optional_               | Maximum buffered channel size between the indexer client and the query service for index scans. This parameter controls when to use scan backfill. Use 0 or a negative number to disable. Smaller values reduce GC, while larger values reduce indexer backfill. The [node-level](#scan-cap-srv) scan-cap setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. In addition, the [request-level](#scan%5Fcap%5Freq) scan\_cap parameter specifies this property per request. The minimum of that and the node-level scan-cap setting is applied. **Default** : 512 **Example** : 1024                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | integer (int32)                                      |
| **queryTimeout** _optional_               | Maximum time to spend on the request before timing out (ns). The value for this setting is an integer, representing a duration in nanoseconds. It must not be delimited by quotes, and must not include a unit. Specify 0 (the default value) or a negative integer to disable. When disabled, no timeout is applied and the request runs for however long it takes. The [node-level](#timeout-srv) timeout setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. In addition, the [request-level](#timeout%5Freq) timeout parameter specifies this property per request. The minimum of that and the node-level timeout setting is applied. **Default** : 0 **Example** : 500000000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | integer (int64)                                      |
| **queryTxTimeout** _optional_             | Maximum time to spend on a transaction before timing out. This setting only applies to requests containing the BEGIN TRANSACTION statement, or to requests where the [tximplicit](#tximplicit) parameter is set. For all other requests, it is ignored. The value for this setting is a string. Its format includes an amount and a mandatory unit, e.g. 10ms (10 milliseconds) or 0.5s (half a second). Valid units are: ns (nanoseconds) us (microseconds) ms (milliseconds) s (seconds) m (minutes) h (hours) Specify 0ms (the default value) to disable. When disabled, no timeout is applied and the transaction runs for however long it takes. The [node-level](#txtimeout-srv) txtimeout setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. In addition, there is a [request-level](#txtimeout%5Freq) txtimeout parameter. If a request includes this parameter, it will be capped by the node-level txtimeout setting. **Default** : "0ms" **Example** : "0.5s"                                                                                                                                                                                                                                              | string (duration)                                    |
| **queryTmpSpaceDir** _optional_           | The path to which the indexer writes temporary backfill files, to store any transient data during query processing. The specified path must already exist. Only absolute paths are allowed. The default path is var/lib/couchbase/tmp within the Couchbase Server installation directory. **Example** : "/opt/couchbase/var/lib/couchbase/tmp"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | string                                               |
| **queryTmpSpaceSize** _optional_          | The maximum size of temporary backfill files (MB). Setting the size to 0 disables backfill. Setting the size to \-1 means the size is unlimited. The maximum size is limited only by the available disk space. **Default** : 5120 **Example** : 2048                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | integer (int32)                                      |
| **queryUseCBO** _optional_                | Specifies whether the cost-based optimizer is enabled. The [node-level](#use-cbo-srv) use-cbo setting specifies this property for a single node. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. In addition, the [request-level](#use%5Fcbo%5Freq) use\_cbo parameter specifies this property per request. If a request does not include this parameter, the node-level setting is used, which defaults to true. **Default** : true **Example** : false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | boolean                                              |
| **queryCurlWhitelist** _optional_         | An object which determines which URLs may be accessed by the CURL() function.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | [Access](#%5Faccess)                                 |

**Access**

| Name                            | Description                                                                                                                                                                                                                                                                                                                                                                                                                                             | Schema           |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
| **all\_access** _required_      | Defines whether the user has access to all URLs, or only URLs specified by the access list. This field set must be set to false to enable the allowed\_urls and disallowed\_urls fields. Setting this field to true enables access to all endpoints. **Default** : false                                                                                                                                                                                | boolean          |
| **allowed\_urls** _optional_    | An array of strings, each of which is a URL to which you wish to grant access. Each URL is a prefix match. The CURL() function will allow any URL that starts with this value. For example, if you wish to allow access to all Google APIs, add the URL https://maps.googleapis.com to the array. To allow complete access to localhost, use http://localhost. Note that each URL must include the port, protocol, and all other components of the URL. | < string > array |
| **disallowed\_urls** _optional_ | An array of strings, each of which is a URL that will be restricted for all roles. Each URL is a prefix match. The CURL() function will disallow any URL that starts with this value. If both allowed\_urls and disallowed\_urls fields are populated, the disallowed\_urls field takes precedence over allowed\_urls. Note that each URL must include the port, protocol, and all other components of the URL.                                         | < string > array |

## [](#service-level-query-settings)Node-Level Query Settings

To set a node-level query setting, use the [Admin REST API](../n1ql/n1ql-rest-api/admin.md) (`/admin/settings` endpoint) with a cURL statement. These settings cannot be set by `cbq`.

To see a list of the current Query Settings, while the Query Service is running, enter:

```sh
curl http://localhost:8093/admin/settings -u user:pword
```

This will output the entire list of node-level query settings:

```json
{
  "atrcollection": "",
  "auto-prepare": false,
  "cleanupclientattempts": true,
  "cleanuplostattempts": true,
  "cleanupwindow": "1m0s",
  "completed": {
    "aborted": null,
    "threshold": 1000
  },
  "completed-limit": 4000,
  "completed-threshold": 1000,
  "controls": false,
  "cpuprofile": "",
  "debug": false,
  "functions-limit": 16384,
  "keep-alive-length": 16384,
  "loglevel": "INFO",
  "max-index-api": 4,
  "max-parallelism": 1,
  "memory-quota": 0,
  "memprofile": "",
  "mutexprofile": false,
  "n1ql-feat-ctrl": 76,
  "numatrs": 1024,
  "pipeline-batch": 16,
  "pipeline-cap": 512,
  "plus-servicers": 16,
  "prepared-limit": 16384,
  "pretty": false,
  "profile": "off",
  "request-size-cap": 67108864,
  "scan-cap": 512,
  "servicers": 4,
  "timeout": 0,
  "txtimeout": "0s",
  "use-cbo": true
}
```

To output to a file for editing multiple settings at a single time, add the `-o filename` option. For example:

```sh
curl http://localhost:8093/admin/settings -u user:pword -o ./query_settings.json
```

The table below contains details of all node-level query settings.

__Table 7\. Node-Level Query Settings__
| Name                                 | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Schema                                               |
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| **atrcollection** _optional_         | Specifies the collection where [active transaction records](../learn/data/transactions.md#additional-storage-use) are stored. The collection must be present. If not specified, the active transaction record is stored in the default collection in the default scope in the bucket containing the first mutated document within the transaction. The value must be a string in the form "bucket.scope.collection" or "namespace:bucket.scope.collection". If any part of the path contains a special character, that part of the path must be delimited in backticks \`\`. The [request-level](#atrcollection%5Freq) atrcollection parameter specifies this property per request. If a request does not include this parameter, the node-level atrcollection setting will be used. **Default** : "" **Example** : "default:\`travel-sample\`.transaction.test"                                                                                                                                                                                                                                                                                                                                                                                                                                                            | string                                               |
| **auto-prepare** _optional_          | Specifies whether the query engine should create a prepared statement every time a N1QL request is submitted, whether the PREPARE statement is included or not. Refer to [Auto-Prepare](../n1ql/n1ql-language-reference/prepare.md#auto-prepare) for more information. **Default** : false **Example** : true                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | boolean                                              |
| **cleanupclientattempts** _optional_ | When enabled, the Query service preferentially aims to clean up just transactions that it has created, leaving transactions for the distributed cleanup process only when it is forced to. The [cluster-level](#queryCleanupClientAttempts) queryCleanupClientAttempts setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. **Default** : true **Example** : false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | boolean                                              |
| **cleanuplostattempts** _optional_   | When enabled, the Query service takes part in the distributed cleanup process, and cleans up expired transactions created by any client. The [cluster-level](#queryCleanupLostAttempts) queryCleanupLostAttempts setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. **Default** : true **Example** : false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | boolean                                              |
| **cleanupwindow** _optional_         | Specifies how frequently the Query service checks its subset of [active transaction records](../learn/data/transactions.md#additional-storage-use) for cleanup. Decreasing this setting causes expiration transactions to be found more swiftly, with the tradeoff of increasing the number of reads per second used for the scanning process. The value for this setting is a string. Its format includes an amount and a mandatory unit, e.g. 10ms (10 milliseconds) or 0.5s (half a second). Valid units are: ns (nanoseconds) us (microseconds) ms (milliseconds) s (seconds) m (minutes) h (hours) The [cluster-level](#queryCleanupWindow) queryCleanupWindow setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. **Default** : "60s" **Example** : "30s"                                                                                                                                                                                                                                                                                                                                                                                                                                          | string (duration)                                    |
| **completed** _optional_             | A nested object that sets the parameters for the completed requests catalog. All completed requests that match these parameters are tracked in the completed requests catalog. Refer to [Configure the Completed Requests](../manage/monitor/monitoring-n1ql-query.md#sys-completed-config) for more information and examples. **Example** : { "user" : "marco", "error" : 12003 }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | [Logging parameters](#%5Flogging%5Fparameters)       |
| **completed-limit** _optional_       | Sets the number of requests to be logged in the completed requests catalog. As new completed requests are added, old ones are removed. Increase this when the completed request keyspace is not big enough to track the slow requests, such as when you want a larger sample of slow requests. Refer to [Configure the Completed Requests](../manage/monitor/monitoring-n1ql-query.md#sys-completed-config) for more information and examples. The [cluster-level](#queryCompletedLimit) queryCompletedLimit setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. **Default** : 4000 **Example** : 7000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | integer (int32)                                      |
| **completed-threshold** _optional_   | A duration in milliseconds. All completed queries lasting longer than this threshold are logged in the completed requests catalog. Specify 0 to track all requests, independent of duration. Specify any negative number to track none. Refer to [Configure the Completed Requests](../manage/monitor/monitoring-n1ql-query.md#sys-completed-config) for more information and examples. The [cluster-level](#queryCompletedThreshold) queryCompletedThreshold setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. **Default** : 1000 **Example** : 7000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | integer (int32)                                      |
| **controls** _optional_              | Specifies if there should be a controls section returned with the request results. When set to true, the query response document includes a controls section with runtime information provided along with the request, such as positional and named parameters or settings. If the request qualifies for caching, these values will also be cached in the completed\_requests system keyspace. The [request-level](#controls%5Freq) controls parameter specifies this property per request. If a request does not include this parameter, the node-level controls setting will be used. **Default** : false **Example** : true                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | boolean                                              |
| **cpuprofile** _optional_            | The absolute path and filename to write the CPU profile to a local file. The output file includes a controls section and performance measurements, such as memory allocation and garbage collection, to pinpoint bottlenecks and ways to improve your code execution. To stop cpuprofile, run with the empty setting of "". If cpuprofile is left running too long, it can slow the system down as its file size increases. **Default** : "" **Example** : "/tmp/info.txt"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | string                                               |
| **debug** _optional_                 | Use debug mode. When set to true, extra logging is provided. **Default** : false **Example** : true                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | boolean                                              |
| **distribute** _optional_            | This field is only available with the POST method. When specified alongside other settings, this field instructs the node that is processing the request to cascade those settings to all other query nodes. The actual value of this field is ignored. **Example** : true                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | boolean                                              |
| **functions-limit** _optional_       | Maximum number of user-defined functions. **Default** : 16384 **Example** : 7000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | integer (int32)                                      |
| **keep-alive-length** _optional_     | Maximum size of buffered result. **Default** : 16384 **Example** : 7000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | integer (int32)                                      |
| **loglevel** _optional_              | Log level used in the logger. All values, in descending order of data: DEBUG — For developers. Writes everything. TRACE — For developers. Less info than DEBUG. INFO — For admin & customers. Lists warnings & errors. WARN — For admin. Only abnormal items. ERROR — For admin. Only errors to be fixed. SEVERE — For admin. Major items, like crashes. NONE — Doesn't write anything. The [cluster-level](#queryLogLevel) queryLogLevel setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. **Default** : "INFO" **Example** : "DEBUG"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | enum (DEBUG, TRACE, INFO, WARN, ERROR, SEVERE, NONE) |
| **max-index-api** _optional_         | Max index API. This setting is provided for technical support only.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | integer (int32)                                      |
| **max-parallelism** _optional_       | Specifies the maximum parallelism for queries on this node. If the value is zero or negative, the maximum parallelism is restricted to the number of allowed cores. Similarly, if the value is greater than the number of allowed cores, the maximum parallelism is restricted to the number of allowed cores. (The number of allowed cores is the same as the number of logical CPUs. In Community Edition, the number of allowed cores cannot be greater than 4\. In Enterprise Edition, there is no limit to the number of allowed cores.) The [cluster-level](#queryMaxParallelism) queryMaxParallelism setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. In addition, there is a [request-level](#max%5Fparallelism%5Freq) max\_parallelism parameter. If a request includes this parameter, it will be capped by the node-level max-parallelism setting. To enable queries to run in parallel, you must specify the cluster-level queryMaxParallelism parameter, or specify the node-level max-parallelism parameter on all Query nodes. Refer to [Max Parallelism](../n1ql/n1ql-language-reference/index-partitioning.md#max-parallelism) for more information. **Default** : 1 **Example** : 0 | integer (int32)                                      |
| **memory-quota** _optional_          | Specifies the maximum amount of memory a request may use on this node, in MB. Note that the overall node memory quota is this setting multiplied by the [node-level](#servicers) servicers setting. Specify 0 (the default value) to disable. When disabled, there is no quota. This parameter enforces a ceiling on the memory used for the tracked documents required for processing a request. It does not take into account any other memory that might be used to process a request, such as the stack, the operators, or some intermediate values. Within a transaction, this setting enforces the memory quota for the transaction by tracking the delta table and the transaction log (approximately). The [cluster-level](#queryMemoryQuota) queryMemoryQuota setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. In addition, the [request-level](#memory%5Fquota%5Freq) memory\_quota parameter specifies this property per request. If a request includes this parameter, it will be capped by the node-level memory-quota setting. **Default** : 0 **Example** : 4                                                                                                                          | integer (int32)                                      |
| **memprofile** _optional_            | Filename to write the diagnostic memory usage log. To stop memprofile, run with the empty setting of "". If memprofile is left running too long, it can slow the system down as its file size increases. **Default** : "" **Example** : "/tmp/memory-usage.log"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | string                                               |
| **mutexprofile** _optional_          | Mutex profile. This setting is provided for technical support only. **Default** : false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | boolean                                              |
| **n1ql-feat-ctrl** _optional_        | SQL++ feature control. This setting is provided for technical support only. The [cluster-level](#queryN1QLFeatCtrl) queryN1QLFeatCtrl setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. **Default** : 76                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | integer (int32)                                      |
| **numatrs** _optional_               | Specifies the total number of [active transaction records](../learn/data/transactions.md#additional-storage-use). The [cluster-level](#queryNumAtrs) queryNumAtrs setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | string                                               |
| **pipeline-batch** _optional_        | Controls the number of items execution operators can batch for Fetch from the KV. The [cluster-level](#queryPipelineBatch) queryPipelineBatch setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. In addition, the [request-level](#pipeline%5Fbatch%5Freq) pipeline\_batch parameter specifies this property per request. The minimum of that and the node-level pipeline-batch setting is applied. **Default** : 16 **Example** : 64                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | integer (int32)                                      |
| **pipeline-cap** _optional_          | Maximum number of items each execution operator can buffer between various operators. The [cluster-level](#queryPipelineCap) queryPipelineCap setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. In addition, the [request-level](#pipeline%5Fcap%5Freq) pipeline\_cap parameter specifies this property per request. The minimum of that and the node-level pipeline-cap setting is applied. **Default** : 512 **Example** : 1024                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | integer (int32)                                      |
| **plus-servicers** _optional_        | The number of service threads for transactions where the scan consistency is request\_plus or at\_plus. The default is 16 times the number of logical cores. **Example** : 16                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | integer (int32)                                      |
| **prepared-limit** _optional_        | Maximum number of prepared statements in the cache. When this cache reaches the limit, the least recently used prepared statements will be discarded as new prepared statements are created. The [cluster-level](#queryPreparedLimit) queryPreparedLimit setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. **Default** : 16384 **Example** : 65536                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | integer (int32)                                      |
| **pretty** _optional_                | Specifies whether query results are returned in pretty format. The [request-level](#pretty%5Freq) pretty parameter specifies this property per request. If a request does not include this parameter, the node-level setting is used, which defaults to false. **Default** : false **Example** : true                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | boolean                                              |
| **profile** _optional_               | Specifies if there should be a profile section returned with the request results. The valid values are: off — No profiling information is added to the query response. phases — The query response includes a profile section with stats and details about various phases of the query plan and execution. Three phase times will be included in the system:active\_requests and system:completed\_requests monitoring keyspaces. timings — Besides the phase times, the profile section of the query response document will include a full query plan with timing and information about the number of processed documents at each phase. This information will be included in the system:active\_requests and system:completed\_requests keyspaces. If profile is not set as one of the above values, then the profile setting does not change. Refer to [Monitoring and Profiling Details](../manage/monitor/monitoring-n1ql-query.md#monitor-profile-details) for more information and examples. The [request-level](#profile%5Freq) profile parameter specifies this property per request. If a request does not include this parameter, the node-level profile setting will be used. **Default** : "off" **Example** : "phases"                                                                                        | enum (off, phases, timings)                          |
| **request-size-cap** _optional_      | Maximum size of a request. **Default** : 67108864 **Example** : 70000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | integer (int32)                                      |
| **scan-cap** _optional_              | Maximum buffered channel size between the indexer client and the query service for index scans. This parameter controls when to use scan backfill. Use 0 or a negative number to disable. Smaller values reduce GC, while larger values reduce indexer backfill. The [cluster-level](#queryScanCap) queryScanCap setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. In addition, the [request-level](#scan%5Fcap%5Freq) scan\_cap parameter specifies this property per request. The minimum of that and the node-level scan-cap setting is applied. **Default** : 512 **Example** : 1024                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | integer (int32)                                      |
| **servicers** _optional_             | The number of service threads for the query. The default is 4 times the number of cores on the query node. **Default** : 32 **Example** : 8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | integer (int32)                                      |
| **timeout** _optional_               | Maximum time to spend on the request before timing out (ns). The value for this setting is an integer, representing a duration in nanoseconds. It must not be delimited by quotes, and must not include a unit. Specify 0 (the default value) or a negative integer to disable. When disabled, no timeout is applied and the request runs for however long it takes. The [cluster-level](#queryTimeout) queryTimeout setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. In addition, the [request-level](#timeout%5Freq) timeout parameter specifies this property per request. The minimum of that and the node-level timeout setting is applied. **Default** : 0 **Example** : 500000000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | integer (int64)                                      |
| **txtimeout** _optional_             | Maximum time to spend on a transaction before timing out (ns). This setting only applies to requests containing the BEGIN TRANSACTION statement, or to requests where the [tximplicit](#tximplicit) parameter is set. For all other requests, it is ignored. The value for this setting is an integer, representing a duration in nanoseconds. It must not be delimited by quotes, and must not include a unit. Specify 0 (the default value) to disable. When disabled, no timeout is applied and the transaction runs for however long it takes. The [cluster-level](#queryTxTimeout) queryTxTimeout setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. In addition, the [request-level](#txtimeout%5Freq) txtimeout parameter specifies this property per request. The minimum of that and the node-level txtimeout setting is applied. **Default** : 0 **Example** : 500000000                                                                                                                                                                                                                                                                                                                      | integer (int64)                                      |
| **use-cbo** _optional_               | Specifies whether the cost-based optimizer is enabled. The [cluster-level](#queryUseCBO) queryUseCBO setting specifies this property for the whole cluster. When you change the cluster-level setting, the node-level setting is over-written for all nodes in the cluster. In addition, the [request-level](#use%5Fcbo%5Freq) use\_cbo parameter specifies this property per request. If a request does not include this parameter, the node-level setting is used, which defaults to true. **Default** : true **Example** : false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | boolean                                              |

**Logging parameters**

| Name                     | Description                                                                                                                                                                                                                                                | Schema          |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- |
| **aborted** _optional_   | If true, all requests that generate a panic are logged. **Example** : true                                                                                                                                                                                 | boolean         |
| **client** _optional_    | The IP address of the client. If specified, all completed requests from this IP address are logged. **Default** : "" **Example** : "172.1.2.3"                                                                                                             | string          |
| **context** _optional_   | The opaque ID or context provided by the client. If specified, all completed requests with this client context ID are logged. Refer to the [request-level](#client%5Fcontext%5Fid) client\_context\_id parameter for more information.                     | string          |
| **error** _optional_     | An error number. If specified, all completed queries returning this error number are logged. **Example** : 12003                                                                                                                                           | integer (int32) |
| **tag** _optional_       | A unique string which tags a set of qualifiers. Refer to [Configure the Completed Requests](../manage/monitor/monitoring-n1ql-query.md#sys-completed-config) for more information. **Default** : "" **Example** : "both\_user\_and\_error"                 | string          |
| **threshold** _optional_ | A duration in milliseconds. If specified, all completed queries lasting longer than this threshold are logged. This is another way of specifying the [node-level](#completed-threshold) completed-threshold setting. **Default** : 1000 **Example** : 7000 | integer (int32) |
| **user** _optional_      | A user name, as given in the request credentials. If specified, all completed queries with this user name are logged. **Default** : "" **Example** : "marco"                                                                                               | string          |

## [](#section%5Fnnj%5Fsjk%5Fk1b)Request-Level Parameters

To set a request-level parameter, use the [Query Service REST API](../n1ql/n1ql-rest-api/index.md) (`/query/service` endpoint) with a cURL statement, or the [cbq](../tools/cbq-shell.md) command, or a client program. You can also set request-level parameters using the [Run-Time Preferences](../tools/query-workbench.md#query-preferences) window in the Query Workbench.

While `cbq` is a sandbox to test code on your local machine, your production query settings are set with the cURL commands on your server.

* CBQ Shell
* REST API

To set request-level parameters in `cbq`, use the `\SET` command. The parameter name must be prefixed by a hyphen.

```sqlpp
\SET -timeout "30m";
\SET -pretty true;
\SET -max_parallelism 3;
SELECT * FROM "world" AS hello;
```

To set request-level parameters with the REST API, specify the parameters in the request body or the query URI.

```sh
curl http://localhost:8093/admin/settings -u Administrator:password \
  -d 'statement=SELECT * FROM "world" AS hello;
    & timeout=30m
    & pretty=true
    & max_parallelism=3'
```

The table below contains details of all request-level parameters, along with examples.

__Table 8\. Request-Level Parameters__
| Name                               | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | Schema                                                                 |
| ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| **args** _optional_                | Applicable if the statement has 1 or more positional parameters. An array of JSON values, one for each positional parameter in the statement. Note that positional parameters apply to prepared also. Refer to [Named Parameters and Positional Parameters](#section%5Fsrh%5Ftlm%5Fn1b) for details. **Example** : \[ "LAX", 6 \]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | < object > array                                                       |
| **atrcollection** _optional_       | Specifies the collection where the [active transaction record](../learn/data/transactions.md#active-transaction-record-entries) (ATR) is stored. The collection must be present. If not specified, the ATR is stored in the default collection in the default scope in the bucket containing the first mutated document within the transaction. The value must be a string in the form "bucket.scope.collection" or "namespace:bucket.scope.collection". If any part of the path contains a special character, that part of the path must be delimited in backticks \`\`. The [node-level](#atrcollection-srv) atrcollection setting specifies the default for this parameter for a single node. The request-level parameter overrides the node-level setting. **Example** : "default:\`travel-sample\`.transaction.test"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | string                                                                 |
| **auto\_execute** _optional_       | Specifies that prepared statements should be executed automatically as soon as they are created. This saves you from having to make two separate requests in cases where you want to prepare a statement and execute it immediately. Refer to [Auto-Execute](../n1ql/n1ql-language-reference/prepare.md#auto-execute) for more information. **Default** : false **Example** : true                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | boolean                                                                |
| **client\_context\_id** _optional_ | A piece of data supplied by the client that is echoed in the response, if present. SQL++ is agnostic about the content of this parameter; it is just echoed in the response. Maximum allowed size is 64 characters; all others will be cut. If it contains an escape character / or quote ", it will be rejected as error code 1110.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | string                                                                 |
| **compression** _optional_         | Compression format to use for response data on the wire. Values are case-insensitive. **Default** : "NONE" **Example** : "zip"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | enum (ZIP, RLE, LZMA, LZO, NONE)                                       |
| **controls** _optional_            | Specifies if there should be a controls section returned with the request results. When set to true, the query response document includes a controls section with runtime information provided along with the request, such as positional and named parameters or settings. If the request qualifies for caching, these values will also be cached in the completed\_requests system keyspace. The [node-level](#controls-srv) controls setting specifies the default for this parameter for a single node. The request-level parameter overrides the node-level setting. **Example** : true                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | boolean                                                                |
| **creds** _optional_               | Specifies the login credentials. The Query API supports two types of identity: local (or bucket) and admin. The format is an identity and password. You can specify credentials for multiple identities. If credentials are supplied in the request header, then HTTP Basic Authentication takes precedence and creds is ignored. **Example** : \[ { "user" : "local:bucket-name", "pass" : "password" }, { "user" : "admin:admin-name", "pass" : "password" } \]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | < [Credentials](#%5Fcredentials) \> array                              |
| **durability\_level** _optional_   | The level of [durability](../learn/data/durability.md) for mutations produced by the request. If the request contains a BEGIN TRANSACTION statement, or a DML statement with the [tximplicit](#tximplicit) parameter set to true, the durability level is specified for all mutations within that transaction. Durability is also supported for non-transactional DML statements. In this case, the kvtimeout parameter is used as the durability timeout. If not specified, the default durability level is "majority". Set the durability level to "none" or "" to specify no durability. **Default** : "majority" **Example** : "none"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | enum ("", none, majority, majorityAndPersistActive, persistToMajority) |
| **encoded\_plan** _optional_       | In Couchbase Server 6.5 and later, this parameter is ignored and has no effect. It is included for compatibility with previous versions of Couchbase Server.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | string                                                                 |
| **encoding** _optional_            | Desired character encoding for the query results. Only possible value is UTF-8 and is case-insensitive. **Default** : "UTF-8"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | string                                                                 |
| **format** _optional_              | Desired format for the query results. Values are case-insensitive. **Default** : "JSON" **Example** : "XML"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | enum (JSON, XML, CSV, TSV)                                             |
| **kvtimeout** _optional_           | The maximum time to wait for a KV operation before timing out. Only applies to statements within a transaction, or to non-transactional statements when the durability\_level is set. The value for this parameter is a string. Its format includes an amount and a mandatory unit, e.g. 10ms (10 milliseconds) or 0.5s (half a second). Valid units are: ns (nanoseconds) us (microseconds) ms (milliseconds) s (seconds) m (minutes) h (hours) Specify a duration of 0 or a negative duration to disable. When disabled, no timeout is applied and the KV operation runs for however long it takes. **Default** : "2.5s" **Example** : "10ms"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | string                                                                 |
| **max\_parallelism** _optional_    | Specifies the maximum parallelism for the query. The [node-level](#max-parallelism-srv) max-parallelism setting specifies the ceiling for this parameter for a single node. If the request-level parameter is zero or negative, the parallelism for the query is set to the node-level setting. If the request-level parameter is greater than zero and less than the node-level setting, the request-level parameter overrides the node-level setting. If the request-level parameter is greater than the node-level setting, the parallelism for the query is set to the node-level setting. In addition, the [cluster-level](#queryMaxParallelism) queryMaxParallelism setting specifies the ceiling for this parameter for the whole cluster. When you change the cluster-level setting, the node-level setting is overwritten for all nodes in the cluster. To enable queries to run in parallel, you must specify the cluster-level queryMaxParallelism parameter, or specify the node-level max-parallelism parameter on all Query nodes. The default value is the same as the number of partitions of the index selected for the query. **Example** : 3                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | integer (int32)                                                        |
| **memory\_quota** _optional_       | Specifies the maximum amount of memory the request may use, in MB. Specify 0 (the default value) to disable. When disabled, there is no quota. This parameter enforces a ceiling on the memory used for the tracked documents required for processing a request. It does not take into account any other memory that might be used to process a request, such as the stack, the operators, or some intermediate values. Within a transaction, this setting enforces the memory quota for the transaction by tracking the delta table and the transaction log (approximately). The [node-level](#memory-quota-srv) memory-quota setting specifies the ceiling for this parameter for a single node. If the node-level setting is zero (the default), the request-level parameter overrides the node-level setting. If the node-level setting is greater than zero, the request-level parameter is capped by the node-level setting. In addition, the [cluster-level](#queryMemoryQuota) queryMemoryQuota setting specifies the ceiling for this parameter for the whole cluster. When you change the cluster-level setting, the node-level setting is overwritten for all nodes in the cluster. **Default** : 0 **Example** : 4                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | integer (int32)                                                        |
| **metrics** _optional_             | Specifies that metrics should be returned with query results. **Default** : true **Example** : false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | boolean                                                                |
| **namespace** _optional_           | Specifies the namespace to use. Currently, only the default namespace is available. **Example** : "default"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | string                                                                 |
| **numatrs** _optional_             | Reserved for future use. This parameter is ignored and has no effect.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | integer (int32)                                                        |
| **pipeline\_batch** _optional_     | Controls the number of items execution operators can batch for Fetch from the KV. The [node-level](#pipeline-batch-srv) pipeline-batch setting specifies the default for this parameter for a single node. The request-level parameter overrides the node-level setting, but only if it is lower than the node-level setting. In addition, the [cluster-level](#queryPipelineBatch) queryPipelineBatch setting specifies the default for this parameter for the whole cluster. When you change the cluster-level setting, the node-level setting is overwritten for all nodes in the cluster. **Example** : 64                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | integer (int32)                                                        |
| **pipeline\_cap** _optional_       | Maximum number of items each execution operator can buffer between various operators. The [node-level](#pipeline-cap-srv) pipeline-cap setting specifies the default for this parameter for a single node. The request-level parameter overrides the node-level setting, but only if it is lower than the node-level setting. In addition, the [cluster-level](#queryPipelineCap) queryPipelineCap setting specifies the default for this parameter for the whole cluster. When you change the cluster-level setting, the node-level setting is overwritten for all nodes in the cluster. **Example** : 1024                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | integer (int32)                                                        |
| **prepared** _optional_            | _Required_ if statement not provided. The name of the prepared SQL++ statement to be executed. Refer to [EXECUTE](../n1ql/n1ql-language-reference/execute.md) for examples. If both prepared and statement are present and non-empty, an error is returned. **Example** : "\[127.0.0.1:8091\]pricy\_hotel"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | string                                                                 |
| **preserve\_expiry** _optional_    | Specifies whether documents should keep their current expiration setting when modified by a DML statement. If true, documents will keep any existing expiration setting when modified by a DML statement. If the DML statement explicitly specifies the document expiration, the statement overrides this parameter, and the expiration is changed. If false, document expiration is set to 0 when modified by a DML statement, unless the DML statement explicitly specifies the document expiration. Not supported for statements in a transaction. **Default** : false **Example** : true                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | boolean                                                                |
| **pretty** _optional_              | Specifies the query results returned in pretty format. The [node-level](#pretty-srv) pretty setting specifies the default for this parameter for a single node. The request-level parameter overrides the node-level setting. **Example** : false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | boolean                                                                |
| **profile** _optional_             | Specifies if there should be a profile section returned with the request results. The valid values are: off No profiling information is added to the query response. phases The query response includes a profile section with stats and details about various phases of the query plan and execution. Three phase times will be included in the system:active\_requests and system:completed\_requests monitoring keyspaces. timings Besides the phase times, the profile section of the query response document will include a full query plan with timing and information about the number of processed documents at each phase. This information will be included in the system:active\_requests and system:completed\_requests keyspaces. If profile is not set as one of the above values, then the profile setting does not change. The [node-level](#profile-srv) profile setting specifies the default for this parameter for a single node. The request-level parameter overrides the node-level setting. **Example** : "phases"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | enum (off, phases, timings)                                            |
| **query\_context** _optional_      | Specifies the namespace, bucket, and scope used to resolve partial keyspace references within the request. The query context may be a _full path_, containing namespace, bucket, and scope; or a _relative path_, containing just the bucket and scope. Currently, only the default namespace is available. If the namespace name is omitted, the default namespace in the current session is used. **Default** : "default:" **Example** : "default:travel-sample.inventory"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | string                                                                 |
| **readonly** _optional_            | Controls whether a query can change a resulting recordset. If readonly is true, then the following statements are not allowed: CREATE INDEX DROP INDEX INSERT MERGE UPDATE UPSERT When using GET requests, it's best to set readonly to true. **Default** : false **Example** : true                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | boolean                                                                |
| **scan\_cap** _optional_           | Maximum buffered channel size between the indexer client and the query service for index scans. This parameter controls when to use scan backfill. Use 0 or a negative number to disable. Smaller values reduce GC, while larger values reduce indexer backfill. The [node-level](#scan-cap-srv) scan-cap setting specifies the default for this parameter for a single node. The request-level parameter overrides the node-level setting, but only if it is lower than the node-level setting. In addition, the [cluster-level](#queryScanCap) queryScanCap setting specifies the default for this parameter for the whole cluster. When you change the cluster-level setting, the node-level setting is overwritten for all nodes in the cluster. **Example** : 1024                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | integer (int32)                                                        |
| **scan\_consistency** _optional_   | Specifies the consistency guarantee or constraint for index scanning. The valid values are: not\_bounded No timestamp vector is used in the index scan. This is the fastest mode, because it avoids the costs of obtaining the vector and waiting for the index to catch up to the vector. at\_plus This implements bounded consistency. The request includes a scan\_vector parameter and value, which is used as a lower bound. This can be used to implement read-your-own-writes (RYOW). request\_plus This implements strong consistency per request. Before processing the request, a current vector is obtained. The vector is used as a lower bound for the statements in the request. If there are DML statements in the request, RYOW is also applied within the request. If request\_plus is specified in a query that runs during a failover of an index node, the query waits until the rebalance operation completes and the index data has rebalanced before returning a result. statement\_plus This implements strong consistency per statement. Before processing each statement, a current vector is obtained and used as a lower bound for that statement. Values are case-insensitive. For multi-statement requests, the default behavior is RYOW within each request. If you want to disable RYOW within a request, add a separate request\_consistency parameter that can be set to not\_bounded. If the request contains a BEGIN TRANSACTION statement, or a DML statement with the [tximplicit](#tximplicit) parameter set to true, then this parameter sets the transactional scan consistency. Refer to [Transactional Scan Consistency](#transactional-scan-consistency) for details. **Default** : "not\_bounded" **Example** : "at\_plus" | enum (not\_bounded, at\_plus, request\_plus, statement\_plus)          |
| **scan\_vector** _optional_        | _Required_ if scan\_consistency is at\_plus and scan\_vectors not provided. Specify the lower bound vector timestamp for one keyspace when using at\_plus scan consistency. Scan vectors are built of two-element \[value, guard\] entries: value: a vBucket's sequence number (a JSON number) guard: a vBucket's UUID (a string) Scan vectors have two forms: **Full scan vector**: an array of \[value, guard\] entries, giving an entry for every vBucket in the system. **Sparse scan vectors**: an object providing entries for specific vBuckets, mapping a vBucket number (a string) to each \[value, guard\] entry. Note that scan\_vector can only be used if the query uses at most one keyspace; if it is used for a query referencing more than one keyspace, the query will fail with an error. For queries referencing multiple keyspaces, use scan\_vectors. **Example** : { "5" : \[ 5409393, "VB5ID" \], "19" : \[ 47574574, "VB19ID" \] }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | object                                                                 |
| **scan\_vectors** _optional_       | _Required_ if scan\_consistency is at\_plus and scan\_vector not provided. A map from keyspace names to scan vectors. See scan\_vector. The scan vectors can be Full or Sparse.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | object                                                                 |
| **scan\_wait** _optional_          | Can be supplied with scan\_consistency values of request\_plus, statement\_plus and at\_plus. Specifies the maximum time the client is willing to wait for an index to catch up to the vector timestamp in the request. Specifies how much time the client is willing to wait for the indexer to satisfy the required scan\_consistency and scan\_vector criteria. After receiving the scan request, if the indexer is unable to catch up within the scan\_wait time and initiate the scan, the indexer aborts with an error and the scan fails. Its format includes an amount and a mandatory unit, e.g. 10ms (10 milliseconds) or 0.5s (half a second). Valid units are: ns (nanoseconds) us (microseconds) ms (milliseconds) s (seconds) m (minutes) h (hours) Specify 0 or a negative integer to disable. **Default** : "" **Example** : "30m"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | string (duration)                                                      |
| **signature** _optional_           | Include a header for the results schema in the response. **Default** : true **Example** : false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | boolean                                                                |
| **statement** _optional_           | _Required_ if prepared not provided. Any valid SQL++ statement for a POST request, or a read-only SQL++ statement (SELECT, EXPLAIN) for a GET request. If both prepared and statement are present and non-empty, an error is returned. When specifying the request parameters as form data, the statement may not contain an unescaped semicolon (;). If it does, the Query Service responds with error 1040\. To avoid this, either URL-encode the semicolon as %3B, or just omit the semicolon if possible. This restriction does not apply when specifying the request parameters in JSON format. **Example** : "SELECT \* FROM \`travel-sample\`.inventory.hotel LIMIT 1"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | string                                                                 |
| **timeout** _optional_             | Maximum time to spend on the request before timing out. The value for this parameter is a string. Its format includes an amount and a mandatory unit, e.g. 10ms (10 milliseconds) or 0.5s (half a second). Valid units are: ns (nanoseconds) us (microseconds) ms (milliseconds) s (seconds) m (minutes) h (hours) Specify a duration of 0 or a negative duration to disable. When disabled, no timeout is applied and the request runs for however long it takes. If [txid](#txid) or [tximplicit](#tximplicit) is set, this parameter is ignored. The request inherits the remaining time of the transaction as timeout. The [node-level](#timeout-srv) timeout setting specifies the default for this parameter for a single node. The request-level parameter overrides the node-level setting. However, if the node-level setting is greater than 0, the timeout for the query is limited to the node-level setting. In addition, the [cluster-level](#queryTimeout) queryTimeout setting specifies the default for this parameter for the whole cluster. When you change the cluster-level setting, the node-level setting is overwritten for all nodes in the cluster. **Example** : "30m"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | string (duration)                                                      |
| **txdata** _optional_              | Transaction data. For internal use only.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | object                                                                 |
| **txid** _optional_                | _Required_ for statements within a transaction. Transaction ID. Specifies the transaction to which a statement belongs. For use with DML statements within a transaction, rollbacks, and commits. The transaction ID should be the same as the transaction ID generated by the BEGIN TRANSACTION statement. The transaction must be active and non-expired. **Example** : "d81d9b4a-b758-4f98-b007-87ba262d3a51"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | string (UUID)                                                          |
| **tximplicit** _optional_          | Specifies that a DML statement is a singleton transaction. When this parameter is true, the Query service starts a transaction and executes the statement. If execution is successful, the Query service commits the transaction; otherwise the transaction is rolled back. The statement may not be part of an ongoing transaction. If the [txid](#txid) request-level parameter is set, the tximplicit parameter is ignored. **Default** : false **Example** : true                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | boolean                                                                |
| **txstmtnum** _optional_           | Transaction statement number. The transaction statement number must be a positive integer, and must be higher than any previous transaction statement numbers in the transaction. If the transaction statement number is lower than the transaction statement number for any previous statement, an error is generated. **Example** : 10                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | integer (int32)                                                        |
| **txtimeout** _optional_           | Maximum time to spend on a transaction before timing out. Only applies to BEGIN TRANSACTION statements, or DML statements for which [tximplicit](#tximplicit) is set. For other statements, it is ignored. Within a transaction, the request-level [timeout](#timeout%5Freq) parameter is ignored. The transaction timeout clock starts when the BEGIN WORK statement is successful. Once the transaction timeout is reached, no statement is allowed to continue in the transaction. The value for this parameter is a string. Its format includes an amount and a mandatory unit, e.g. 10ms (10 milliseconds) or 0.5s (half a second). Valid units are: ns (nanoseconds) us (microseconds) ms (milliseconds) s (seconds) m (minutes) h (hours) Specify a duration of 0 to disable. When disabled, the request-level timeout is set to the default. The [node-level](#txtimeout-srv) txtimeout setting specifies the default for this parameter for a single node. The request-level parameter overrides the node-level setting. However, if the node-level setting is greater than 0, the transaction timeout for the query is limited to the node-level setting. In addition, the [cluster-level](#queryTxTimeout) queryTxTimeout setting specifies the default for this parameter for the whole cluster. When you change the cluster-level setting, the node-level setting is overwritten for all nodes in the cluster. The default is "15s" for cbq files or scripts, "2m" for interactive cbq sessions or redirected input. **Example** : "30m"                                                                                                                                                                                                                   | string (duration)                                                      |
| **use\_cbo** _optional_            | Specifies whether the cost-based optimizer is enabled. The [node-level](#use-cbo-srv) use-cbo setting specifies the default for this parameter for a single node. The request-level parameter overrides the node-level setting. In addition, the [cluster-level](#queryUseCBO) queryUseCBO setting specifies the default for this parameter for the whole cluster. When you change the cluster-level setting, the node-level setting is overwritten for all nodes in the cluster. **Example** : true                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | boolean                                                                |
| **use\_fts** _optional_            | [ENTERPRISE EDITION](https://www.couchbase.com/products/editions) Specifies that the query should use a full-text index. If the query contains a USING FTS hint, that takes priority over this parameter. If the query does not contain a USING FTS hint, and this parameter is set to true, all full-text indexes are considered for the query. If a qualified full-text index is available, it is selected for the query. If none of the available full-text indexes are qualified, the available GSI indexes are considered instead. Refer to [Flex Indexes](../n1ql/n1ql-language-reference/flex-indexes.md) for more information. **Default** : false **Example** : true                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | boolean                                                                |
| **$<identifier>** _optional_       | Applicable if the statement has 1 or more named parameters. The name of a named parameter consists of two parts: The $ character An identifier that starts with an alpha character followed by one or more alphanumeric characters. The value of the named parameter is any JSON value. Named parameters apply to prepared also. Refer to [Named Parameters and Positional Parameters](#section%5Fsrh%5Ftlm%5Fn1b) for details.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | string (any JSON value)                                                |

**Credentials**

| Name                | Description                                                                                                                      | Schema |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------ |
| **user** _optional_ | An identity for authentication. Note that bucket names may be prefixed with local:, and admin names may be prefixed with admin:. | string |
| **pass** _optional_ | A password for authentication.                                                                                                   | string |

##### Transactional Scan Consistency

If the request contains a `BEGIN TRANSACTION` statement, or a DML statement with the [tximplicit](#tximplicit) parameter set to `true`, then the [scan\_consistency](#scan%5Fconsistency) parameter sets the _transactional scan consistency_. If you specify a transactional scan consistency of `request_plus`, `statement_plus`, or `at_plus`, or if you specify no transactional scan consistency, the transactional scan consistency is set to `request_plus`; otherwise, the transactional scan consistency is set as specified.

__Table 9\. Transactional scan consistency__
| Scan consistency at start of transaction | Transactional scan consistency |
| ---------------------------------------- | ------------------------------ |
| Not set                                  | request\_plus                  |
| not\_bounded                             | not\_bounded                   |
| request\_plus statement\_plus at\_plus   | request\_plus                  |

Any DML statements within the transaction that have no scan consistency set will inherit from the transactional scan consistency. Individual DML statements within the transaction may override the transactional scan consistency. If you specify a scan consistency of `not_bounded` for a statement within the transaction, the scan consistency for the statement is set as specified. When you specify a scan consistency of `request_plus`, `statement_plus`, or `at_plus` for a statement within the transaction, the scan consistency for the statement is set to `request_plus`.

However, `request_plus` consistency is not supported for statements using a full-text index. If any statement within the transaction uses a full-text index, by means of the SEARCH function or the Flex Index feature, the scan consistency is set to `not_bounded` for the duration of the full-text search.

__Table 10\. Overriding the transactional scan consistency__
| Scan consistency for statement within transaction | Inherited scan consistency                                        |
| ------------------------------------------------- | ----------------------------------------------------------------- |
| Not set                                           | Transactional scan consistency(not\_bounded for full-text search) |
| not\_bounded                                      | not\_bounded                                                      |
| request\_plus statement\_plus at\_plus            | request\_plus(not\_bounded for full-text search)                  |

## [](#section%5Fsrh%5Ftlm%5Fn1b)Named Parameters and Positional Parameters

_Named parameters_ use a [variable name](#identifier) to define the value of each parameter, while numbered and unnumbered _positional parameters_ use a [list of arguments](#args) to define the value of each parameter by position. Requests which use named parameters and positional parameters should contain the appropriate placeholders, as summarized in the table below.

To try the examples in this section, set the query context to the `inventory` scope in the travel sample dataset. For more information, see [Query Context](../n1ql/n1ql-intro/queriesandresults.md#query-context).

__Table 11\. Named Parameters and Positional Parameters__
| Arguments                                                                        | Statement                                                                                                                           |
| -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| Named Parameters \\SET -$country "France"; **(1)** **(2)** \\SET -$altitude 500; | SELECT COUNT(\*) FROM airport WHERE country = $country AND geo.alt > $altitude;                                                     |
| Positional Parameters \\SET -args \["France", 500\]; **(1)** **(2)** **(3)**     | SELECT COUNT(\*) FROM airport WHERE country = $1 AND geo.alt > $2; SELECT COUNT(\*) FROM airport WHERE country = ? AND geo.alt > ?; |

## [](#related-links)Related Links

* For more details about the SQL++ REST API, refer to [Query Service REST API](../n1ql/n1ql-rest-api/index.md).
* For more details about the Admin REST API, refer to [Admin REST API](../n1ql/n1ql-rest-api/admin.md).
* For more details about the Query Settings API, refer to [Cluster Query Settings API](../rest-api/rest-cluster-query-settings.md).
* For more details about API content and settings, refer to [REST API reference](../rest-api/rest-intro.md).