* Init CLAUDE.md (#5259)
Signed-off-by: Heng Qian <qianheng@amazon.com>
* Add label to exempt specific PRs from stalled labeling (#5263)
* Implement `reverse` performance optimization (#4775)
Co-authored-by: Jialiang Liang <jiallian@amazon.com>
* Add songkant-aws as maintainer (#5244)
* Move some maintainers from active to Emeritus (#5260)
* Move inactive current maintainers to Emeritus
Signed-off-by: Lantao Jin <ltjin@amazon.com>
* Remove affiliation column for emeritus maintainers
Signed-off-by: Lantao Jin <ltjin@amazon.com>
* formatted
Signed-off-by: Lantao Jin <ltjin@amazon.com>
* Fix formatting in MAINTAINERS.md
Signed-off-by: Simeon Widdis <sawiddis@gmail.com>
Signed-off-by: Simeon Widdis <sawiddis@gmail.com>
---------
Signed-off-by: Lantao Jin <ltjin@amazon.com>
Signed-off-by: Simeon Widdis <sawiddis@gmail.com>
Co-authored-by: Simeon Widdis <sawiddis@gmail.com>
* Add query cancellation support via _tasks/_cancel API for PPL queries (#5254)
* Add query cancellation support via _tasks/_cancel API for PPL queries
Signed-off-by: Sunil Ramchandra Pawar <pawar_sr@apple.com>
* Refactor PPL query cancellation to cooperative model and other PR suggestions.
Signed-off-by: Sunil Ramchandra Pawar <pawar_sr@apple.com>
---------
Signed-off-by: Sunil Ramchandra Pawar <pawar_sr@apple.com>
* Add Calcite native SQL planning in UnifiedQueryPlanner (#5257)
* feat(api): Add Calcite native SQL planning path in UnifiedQueryPlanner
Add SQL support to the unified query API using Calcite's native parser
pipeline (SqlParser → SqlValidator → SqlToRelConverter → RelNode),
bypassing the ANTLR parser used by PPL.
Changes:
- UnifiedQueryPlanner: use PlanningStrategy to dispatch
CalciteNativeStrategy vs CustomVisitorStrategy
- CalciteNativeStrategy: Calcite Planner with try-with-resources
for ANSI SQL
- CustomVisitorStrategy: ANTLR-based path for PPL (and future SQL V2)
- UnifiedQueryContext: SqlParser.Config with Casing.UNCHANGED to
preserve lowercase OpenSearch index names
Signed-off-by: Chen Dai <daichen@amazon.com>
* test(api): Add SQL planner tests and refactor test base for multi-language support
- Refactor UnifiedQueryTestBase with queryType() hook for subclass override
- Add UnifiedSqlQueryPlannerTest covering SELECT, WHERE, GROUP BY, JOIN,
ORDER BY, subquery, case sensitivity, namespaces, and error handling
- Update UnifiedQueryContextTest to verify SQL context creation
Signed-off-by: Chen Dai <daichen@amazon.com>
* perf(benchmarks): Add SQL queries to UnifiedQueryBenchmark
Add language (PPL/SQL) and queryPattern param dimensions for
side-by-side comparison of equivalent queries across both languages.
Remove separate UnifiedSqlQueryBenchmark in favor of unified class.
Signed-off-by: Chen Dai <daichen@amazon.com>
* docs(api): Update README to reflect SQL support in UnifiedQueryPlanner
Signed-off-by: Chen Dai <daichen@amazon.com>
* fix(api): Normalize trailing whitespace in assertPlan comparison
RelOptUtil.toString() appends a trailing newline after the last plan
node, which doesn't match Java text block expectations. Also add
\r\n normalization for Windows CI compatibility, consistent with
the existing pattern in core module tests.
Signed-off-by: Chen Dai <daichen@amazon.com>
---------
Signed-off-by: Chen Dai <daichen@amazon.com>
* [Feature] Support graphLookup with literal value as its start (#5253)
* [Feature] Support graphLookup as top-level PPL command (#5243)
Add support for graphLookup as the first command in a PPL query with
literal start values, instead of requiring piped input from source=.
Syntax:
graphLookup table start="value" edge=from-->to as output
graphLookup table start=("v1", "v2") edge=from-->to as output
Signed-off-by: Heng Qian <qianheng@amazon.com>
* Spotless check
Signed-off-by: Heng Qian <qianheng@amazon.com>
* Ignore child pipe if using start value
Signed-off-by: Heng Qian <qianheng@amazon.com>
* Add graphLookup integration tests per PPL command checklist
- Add explain plan tests in CalciteExplainIT with YAML assertions
- Add v2-unsupported tests in NewAddedCommandsIT
- Add CalcitePPLGraphLookupIT to CalciteNoPushdownIT suite
- Skip graphLookup tests when pushdown is disabled (required by impl)
- Add expected plan YAML files for piped and top-level graphLookup
Signed-off-by: Heng Qian <qianheng@amazon.com>
* Remove brace of start value list
Signed-off-by: Heng Qian <qianheng@amazon.com>
---------
Signed-off-by: Heng Qian <qianheng@amazon.com>
* Apply docs website feedback to ppl functions (#5207)
* apply doc website feedback to ppl functions
Signed-off-by: Ritvi Bhatt <ribhatt@amazon.com>
* take out comments
Signed-off-by: Ritvi Bhatt <ribhatt@amazon.com>
* fix json_append example
Signed-off-by: Ritvi Bhatt <ribhatt@amazon.com>
* fix json_append example
Signed-off-by: Ritvi Bhatt <ribhatt@amazon.com>
* fix links
Signed-off-by: Ritvi Bhatt <ribhatt@amazon.com>
---------
Signed-off-by: Ritvi Bhatt <ribhatt@amazon.com>
Signed-off-by: ritvibhatt <53196324+ritvibhatt@users.noreply.github.com>
* feat(api): Add profiling support to unified query API (#5268)
Add query profiling infrastructure that measures time spent in each
query phase (analyze, optimize, execute, format). Profiling is opt-in
via UnifiedQueryContext.builder().profiling(true) and uses thread-local
context to avoid passing profiling state through every method.
Key changes:
- QueryProfiling/ProfileContext for thread-local profiling lifecycle
- UnifiedQueryContext.measure() API for timing arbitrary phases
- Auto-profiling in UnifiedQueryPlanner (analyze) and compiler (optimize)
- UnifiedQueryTestBase shared test fixture for unified query tests
- Comprehensive profiling tests with non-flaky >= 0 timing assertions
Signed-off-by: Chen Dai <daichen@amazon.com>
* Add UnifiedQueryParser with language-specific implementations (#5274)
Extract parsing logic from UnifiedQueryPlanner into a UnifiedQueryParser
interface with language-specific implementations: PPLQueryParser (returns
UnresolvedPlan) and CalciteSqlQueryParser (returns SqlNode).
UnifiedQueryContext owns the parser instance, created eagerly by the
builder which has direct access to query type and future SQL config.
Each implementation receives only its required dependencies:
PPLQueryParser takes Settings, CalciteSqlQueryParser takes
CalcitePlanContext. UnifiedQueryPlanner.CustomVisitorStrategy now obtains
the parser from the context via the interface type.
Signed-off-by: Chen Dai <daichen@amazon.com>
* Fix flaky TPC-H Q1 test due to bugs in `MatcherUtils.closeTo()` (#5283)
* Fix the flaky tpch Q1
Signed-off-by: Lantao Jin <ltjin@amazon.com>
* Change to ULP-aware to handle floating-point precision differences
Signed-off-by: Lantao Jin <ltjin@amazon.com>
---------
Signed-off-by: Lantao Jin <ltjin@amazon.com>
---------
Signed-off-by: Heng Qian <qianheng@amazon.com>
Signed-off-by: Lantao Jin <ltjin@amazon.com>
Signed-off-by: Simeon Widdis <sawiddis@gmail.com>
Signed-off-by: Sunil Ramchandra Pawar <pawar_sr@apple.com>
Signed-off-by: Chen Dai <daichen@amazon.com>
Signed-off-by: Ritvi Bhatt <ribhatt@amazon.com>
Signed-off-by: ritvibhatt <53196324+ritvibhatt@users.noreply.github.com>
Signed-off-by: Kai Huang <ahkcs@amazon.com>
Co-authored-by: qianheng <qianheng@amazon.com>
Co-authored-by: Simeon Widdis <sawiddis@gmail.com>
Co-authored-by: Jialiang Liang <jiallian@amazon.com>
Co-authored-by: Lantao Jin <ltjin@amazon.com>
Co-authored-by: Sunil Ramchandra Pawar <pawar_sr@apple.com>
Co-authored-by: Chen Dai <daichen@amazon.com>
Co-authored-by: ritvibhatt <53196324+ritvibhatt@users.noreply.github.com>
Description
Related Issues
Check List
--signoffor-s.By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.