Brings the branch up to current upstream/main (54 commits since the last
catch-up at opensearch-project#5397, divergence point 513e1b2). Preserves both parents
so commit lineage from main is retained on the feature branch.
### Main commits absorbed (54 since divergence)
Highlights:
- opensearch-project#5419 Register LENGTH/REGEXP_REPLACE/DATE_TRUNC in unified function spec
- opensearch-project#5408 Normalize datetime types for unified query API
- opensearch-project#5414 Gradle wrapper 9.4.1 bump + exclude @ignore classes
- opensearch-project#5399 [BugFix] Scope SQL cursor continuation to original query indices under FGAC
- opensearch-project#5394 [Feature] Support SQL Vector Search
- opensearch-project#5361 Version bump to OpenSearch 3.7 (Jackson 2 → 3 parser API)
- opensearch-project#5360 Define unified SQL language spec with composable extensions
- opensearch-project#5240 [FEATURE] Union command in PPL
- opensearch-project#5266 Initial implementation of report-builder interface
- opensearch-project#5278 isnotnull condition support
- opensearch-project#3922, opensearch-project#4659, opensearch-project#4800, opensearch-project#5099, opensearch-project#5169, opensearch-project#5172, opensearch-project#5175, opensearch-project#5185, opensearch-project#5347, opensearch-project#5370
and other bugfixes
- 34 others (bugfixes, doc updates, infra)
### Conflict resolutions
Seven content conflicts resolved during the merge. Resolution kept the
feature branch's analytics-engine-path semantics where main's changes
would have regressed them.
- api/.../UnifiedQueryContext.java
Blank-line-only conflict in Builder.build(); took main's tighter
formatting (no extra blank).
- core/.../executor/QueryService.java
Main reformatted executeWithCalcite without the
CalciteClassLoaderHelper.withCalciteClassLoader() wrapper. Kept the
feature-branch wrapping — required for analytics-engine classloader
isolation — and the matching import. Same shape applies to
explainWithCalcite which git auto-merged correctly.
- integ-test/build.gradle
Both sides added @Ignore-class exclusions to work around the Gradle
9.4.1 TestEventReporterAsListener ClassCastException. Took the
feature-branch's detailed root-cause comment, kept ASCII ordering of
the JSONRequestIT/JoinIT and SQLFunctionsIT/ShowIT/SourceFieldIT
entries.
- integ-test/.../CalciteEvalCommandIT.java
Feature branch wraps test-data PUTs in
if (!TestUtils.isIndexExist(...)) for idempotency on the
helper-managed-index analytics-engine compatibility run; main has the
unguarded PUTs. Kept feature's idempotency guards for both test_eval
and test_eval_agent.
- legacy/.../RestSqlAction.java
Feature branch added delegateToV2Engine(...) (extracted from the
analytics-engine routing path) and ALSO has handleException /
getRestStatus / getRawErrorCode; main added the latter three in the
same position. Kept feature's delegateToV2Engine, kept one copy of
the helpers, removed the duplicate set that git produced.
- plugin/.../SQLPlugin.java
Both sides expanded the executor import block. Kept the union:
ExecutionEngine + ExecutionEngine.ExplainResponse + QueryType (all
three are referenced in this file).
- plugin/.../transport/TransportPPLQueryAction.java
Main now passes engine extensions to OpenSearchPluginModule via
extensionsHolder.engines(). Feature creates a local pluginSettings
for the unified-query handler. Combined both — kept the
extensions-aware module construction *and* the pluginSettings /
pluginSettingsRef wiring.
EngineExtensionsHolder is a new file from main (opensearch-project#5298) preserved as-is.
### Verification
- ./gradlew :api:compileJava :core:compileJava :legacy:compileJava
:opensearch-sql-plugin:compileJava :integ-test:compileTestJava
passes locally
Signed-off-by: Kai Huang <ahkcs@amazon.com>
Summary
NoSuchFileExceptionin the SQL CLI integration test workflow caused by a Gradle incremental compilation race condition./gradlew cleanafterpublishToMavenLocalso sql-cli resolves dependencies from Maven Local jars instead of stale build outputTest plan
sql-cli-integration-testworkflow passes consistently (no more flakyNoSuchFileExceptionfailures)