From 778f4556a8db472544888040de77391f5474a55e Mon Sep 17 00:00:00 2001 From: discord9 Date: Fri, 16 Oct 2026 04:48:32 +0000 Subject: [PATCH] feat: unify query options across SQL, HTTP and gRPC (#9494) Isolated rebase verification of PR #9494. Preserve the reviewed net change; original PR branch remains untouched. Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com> --- docs/how-to/query-options.md | 18 +++ src/datanode/src/region_server.rs | 18 ++- src/datanode/src/tests.rs | 5 +- src/flow/src/batching_mode/frontend_client.rs | 53 ++++--- src/frontend/src/instance.rs | 15 ++ src/frontend/src/instance/grpc.rs | 16 +- src/operator/src/statement.rs | 12 +- src/operator/src/statement/set.rs | 66 ++++++--- src/operator/src/statement/show.rs | 9 ++ src/query/src/datafusion.rs | 56 +------ src/query/src/dist_plan/analyzer.rs | 16 +- src/query/src/optimizer/constant_term.rs | 2 +- src/query/src/planner.rs | 74 ++++++---- src/query/src/query_engine.rs | 2 +- .../src/query_engine/default_serializer.rs | 17 ++- src/query/src/query_engine/state.rs | 60 +++++++- src/query/src/sql.rs | 87 ++++++++++- src/servers/src/grpc/flight.rs | 1 + src/servers/src/grpc/greptime_handler.rs | 1 + src/servers/src/hint_headers.rs | 55 +++++++ src/servers/src/http.rs | 17 +-- src/servers/src/http/hints.rs | 41 +++++- src/servers/src/http/read_preference.rs | 7 +- src/servers/src/mysql/federated.rs | 65 +++++++- src/servers/src/postgres/handler.rs | 22 ++- src/session/src/context.rs | 139 +++++++++++++++++- src/session/src/lib.rs | 1 + src/session/src/query_options.rs | 116 +++++++++++++++ src/sql/src/ast.rs | 34 +++++ tests/cases/standalone/common/basic.result | 10 +- 30 files changed, 855 insertions(+), 180 deletions(-) create mode 100644 docs/how-to/query-options.md create mode 100644 src/session/src/query_options.rs diff --git a/docs/how-to/query-options.md b/docs/how-to/query-options.md new file mode 100644 index 00000000000..3fdaa55979d --- /dev/null +++ b/docs/how-to/query-options.md @@ -0,0 +1,18 @@ +# Query options + +Query options adjust selected behavior for a connection or request; they are not server-wide settings or resource-pool controls. + +| Canonical option | SQL aliases | Values | +| --- | --- | --- | +| `query.parallelism` | `query_parallelism`, `query.parallelism` | Integer `1`–`1024`; server default `0` means automatic CPU-based parallelism. This is not a resource-pool limit. | +| `query.allow_query_fallback` | `query_fallback`, `allow_query_fallback`, `query.allow_query_fallback` (legacy `ALLOW_QUERY_FALLBACK` syntax / `query_fallback` hint also work) | `true` or `false` | +| `query.enable_remote_dynamic_filter_pushdown` | canonical name | `true` or `false` | +| `datafusion.optimizer.*` | canonical name | Keys, types, defaults, and validation come from the linked DataFusion version (for example, numeric `max_passes` and Boolean `filter_null_join_keys`). | + +Use `SET query_parallelism = 4` or `SET query.parallelism TO 4`; `SHOW VARIABLES query.parallelism` works in MySQL and PostgreSQL, which also accepts `SHOW query.parallelism`. `SHOW VARIABLES