FrankChen021 opened a new pull request, #20578:
URL: https://github.com/apache/druid/pull/20578

   ### Description
   
   Follow-up to #20555. Replaces #20556, which was closed while #20555 was 
under review.
   
   Migrates the SQL query context parameters documented in 
`sql-query-context.md` to typed `QueryContextParameter` descriptors.
   
   - Declares descriptors for SQL planner, MSQ and Dart parameters in 
`QueryContextParameters`. Field names follow the keys, e.g. `plannerStrategy` → 
`PLANNER_STRATEGY`, `inSubQueryThreshold` → `IN_SUB_QUERY_THRESHOLD`.
   - Replaces raw-string reads in `PlannerContext`, `PlannerConfig`, the 
planner rules, MSQ and Dart with descriptor-backed reads.
   - Generates the corresponding rows in `sql-query-context.md` from the 
descriptors.
   - Adds `QueryContexts.PlannerStrategy` (`COUPLED`, `DECOUPLED`) and makes 
`plannerStrategy` an enum parameter.
   - Renames the `Visibility.INTERNAL` level added in #20555 to `SYSTEM`, which 
says more plainly that Druid sets these values itself. `Visibility` has not 
been released yet.
   
   Existing parameter names and defaults are unchanged.
   
   #### Deprecations
   
   The replaced key and default constants are kept as `@Deprecated(since = 
"39.0.0", forRemoval = true)` with a link to the descriptor: 
`PlannerContext.CTX_*`/`DEFAULT_*`, `PlannerContext.getJoinAlgorithm(...)`, 
`PlannerConfig.CTX_KEY_*`, 
`ReverseLookupRule.CTX_THRESHOLD`/`DEFAULT_THRESHOLD`, 
`CalciteRulesManager.BLOAT_PROPERTY`/`DEFAULT_BLOAT`, 
`SketchQueryContext.CTX_FINALIZE_OUTER_SKETCHES`/`DEFAULT_FINALIZE_OUTER_SKETCHES`,
 the matching `QueryContexts` keys, 
`QueryContexts.NATIVE_QUERY_SQL_PLANNING_MODE_COUPLED`/`DECOUPLED`, and 
`BaseQuery.QUERY_ID`/`SUB_QUERY_ID`/`SQL_QUERY_ID`.
   
   #### Behavior changes
   
   - `plannerStrategy` and `druid.sql.planner.nativeQuerySqlPlanningMode` 
accept values in any case, e.g. `decoupled`. An unknown value is now rejected 
instead of silently falling back to `COUPLED`.
   - `PlannerConfig.getNativeQuerySqlPlanningMode()` and 
`PlannerConfig.Builder.nativeQuerySqlPlanningMode(...)` use 
`QueryContexts.PlannerStrategy` instead of `String`.
   - Integer and long parameters (`maxNumericInFilters`, 
`sqlReverseLookupThreshold`, `sqlPlannerBloat`, `sqlOuterLimit`, 
`maxPlanningTimeMs`) reject values that aren't exact integers, such as `1.5`, 
and values out of range, instead of truncating them, as in #20555.
   - `PlannerContext` used one generated ID for the planner and a different one 
in the context when no `sqlQueryId` was given. It now uses the same ID.
   
   This PR and the remaining query context migration both touch 
`QueryContextParameters` and `QueryContexts`; whichever merges second will be 
rebased.
   
   <hr>
   
   This PR has:
   
   - [x] been self-reviewed.
   - [x] added documentation for new or modified features or behaviors.
   - [x] added Javadocs for most classes and all non-trivial methods. Linked 
related entities via Javadoc links.
   - [x] added unit tests or modified existing tests to cover new code paths, 
ensuring the threshold for [code 
coverage](https://github.com/apache/druid/blob/master/dev/code-review/code-coverage.md)
 is met.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to