Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ description: This document contains all the available query options
| **enableNullHandling** | Enables advanced null handling. See [Null value support](../null-value-support.md) for more information.(since 0.11.0) | `false` (disabled) |
| **explainPlanVerbose** | Return verbose result for `EXPLAIN` query (since 0.11.0) | `false` (not verbose) |
| **useMultistageEngine** | Use multi-stage engine to execute the query (since 0.11.0) | `false` (use single-stage engine) |
| **partitionPruningPreparationThreshold** | Minimum candidate segments at which the broker prepares partition-pruning predicate IDs once for this query. Overrides `routing.partitionPruningPreparationThreshold` in the table config and `pinot.broker.partition.pruning.preparation.threshold` in cluster config. A negative value disables preparation, not partition pruning. | Table setting, then cluster setting; `32` if unset |
| **sqlOptionsMode** | Request-level policy for options embedded in SQL `SET` or legacy `OPTION(...)`: `ALLOW`, `IGNORE`, or `REJECT`. Supply in REST `queryOptions` or gRPC metadata, not in SQL. See [SQL option policies](#sql-option-policies). | `ALLOW` (SQL options override request options) |
| **useApproximateFunction** | Set `true` to rewrite eligible exact distinct-count and percentile aggregates to SMART variants, or `false` to keep them exact for this query. This overrides the table setting (single-stage only), cluster config, and broker config in both query engines. The broker response sets `approximateFunctionApplied=true` only when a rewrite occurs. See [Approximate aggregate guardrail](../../../reference/configuration-reference/cluster.md#approximate-aggregate-guardrail). | Table, cluster, or broker setting; `false` if unset everywhere |
| **useMSEToFillEmptyResponseSchema** | For single-stage queries that return zero rows, try the multi-stage engine compiler to populate a more accurate empty result schema instead of relying only on table metadata or the default single-stage fallback. This overrides the broker-level `pinot.broker.use.mse.to.fill.empty.response.schema` setting for the query. If the query does not compile in the multi-stage engine, Pinot falls back to the normal empty-response schema behavior. | `false` |
Expand Down
1 change: 1 addition & 0 deletions reference/configuration-reference/broker.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ ConfigurationException: Duplicate key found in /path/to/broker.conf at line 10 a
| pinot.broker.enable.query.fingerprinting | false | When `true`, the broker computes a normalized fingerprint and `queryHash` for queries handled by both the single-stage and multi-stage engines, then propagates `queryHash` to downstream servers or multi-stage workers for observability. This setting controls automatic fingerprinting during normal query execution. |
| pinot.query.multistage.explain.include.segment.plan | false | When `true`, `EXPLAIN PLAN FOR` on the multi-stage engine includes the segment plan by default instead of the logical plan. The per-query `explainAskingServers` query option overrides this setting. |
| pinot.broker.timeoutMs | 10 seconds | Timeout for Broker Query in Milliseconds |
| pinot.broker.partition.pruning.preparation.threshold | 32 | Minimum candidate segments at which the broker prepares partition-pruning predicate IDs once per query. Table `routing.partitionPruningPreparationThreshold` and query `partitionPruningPreparationThreshold` override it, in that order. A negative value disables preparation, not pruning. |
| pinot.broker.min.init.indexed.table.capacity | 128 | Minimum initial capacity of the broker-side `IndexedTable` Pinot uses while reducing group-by results. Increasing this value can reduce rehashing for large group-by result sets, but increases memory usage for smaller queries. This value can be overridden per query with `SET minInitialIndexedTableCapacity = value`. |
| pinot.broker.extraPassiveTimeoutMs | 100 | For multi-stage queries, extra time in milliseconds Pinot adds beyond `timeoutMs` for passive waits between stages, such as waiting for mailbox data from upstream workers. The per-query `extraPassiveTimeoutMs` query option overrides this broker default. |
| pinot.broker.startup.minResourcePercent | 100 | Configuration to consider the broker ServiceStatus as being STARTED if the percent of resources (tables) that are ONLINE for this this broker has crossed the threshold percentage of the total number of tables that it is expected to serve |
Expand Down
1 change: 1 addition & 0 deletions reference/configuration-reference/table.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ Find details on configuring routing [here](../../operate-pinot/tuning/routing.md
| Property | Description |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| segmentPrunerTypes | The list of segment pruners to be enabled. The segment pruner prunes the selected segments based on the query. Supported values: - `partition`: Prunes segments based on the partition metadata stored in zookeeper. By default, there is no pruner. - `time`: Prune segments for queries filtering on `timeColumnName` that do not contain data in the query's time range. |
| partitionPruningPreparationThreshold | Minimum number of candidate segments at which the broker prepares partition-pruning predicate IDs once per query instead of recomputing them per segment. Default: `32`, unless overridden by broker cluster config `pinot.broker.partition.pruning.preparation.threshold`; the query option of the same name takes precedence over both. A negative value disables preparation, not partition pruning. Applies when the `partition` segment pruner is enabled and the partition function supports preparation. |
| instanceSelectorType | The server instances to serve the query based on selected segments. Supported values: - `balanced`: Balances the number of segments served by each selected instance. Default. - `replicaGroup`: Instance selector for replica group routing strategy. |

### Query
Expand Down
Loading