Compatible with OpenSearch and OpenSearch Dashboards version 3.6.0
- Support bi-directional graph traversal command
graphlookup(#5138) - Support
graphlookupwith literal value as its start, enabling top-level PPL command usage withoutsource=(#5253) - Add
mvexpandcommand to expand multivalue fields into separate rows with optional limit parameter (#5144) - Add
fieldformatcommand to set display format of field values using eval expressions (#5080) - Implement PPL
convertcommand with 5 conversion functions: auto, num, rmcomma, rmunit, none (#5157) - Add grammar bundle generation API for PPL language features to support client-side autocomplete (#5162)
- Add PPL search result highlighting via the
highlightAPI parameter with support for simple and rich OpenSearch Dashboards formats (#5234) - Change
graphlookupoutput format from list to map to preserve column name information in struct results (#5227) - Fix multisearch UDT type loss through UNION by preserving UDT types in
leastRestrictive()(#5154)
- Add Calcite native SQL planning path in
UnifiedQueryPlannerusing Calcite's parser pipeline (#5257) - Add auto-extract mode for
spathcommand returning flattened key-value map when path is omitted (#5140) - Add
nomvcommand to convert multivalue fields into single values delimited by newline (#5130) - Add query cancellation support via
_tasks/_cancelAPI for PPL queries (#5254) - Optimize
reversecommand performance by eliminating expensive ROW_NUMBER() window function with context-aware three-tier logic (#4775) - Improve resource monitor error messages to include memory usage details and configuration guidance (#5129)
- Support
LAST/FIRST/TAKEaggregations on TEXT type, script pushdown, alias handling, and LIMIT pushdown to TopHits (#5091) - Update
graphlookupsyntax to support directional edge notation (-->and<->) (#5209) - Support creating and updating Prometheus rules and Alertmanager silences via direct query resources API (#5228)
- Add
containsoperator to PPLwhereclauses for case-insensitive substring matching (#5219) - Bump ANTLR version from 4.7.1 to 4.13.2 across all modules (#5159)
- Support PPL queries with trailing pipes and empty pipes in command sequences (#5161)
- Make SQL plugin aware of FIPS build parameter for proper BouncyCastle dependency scoping (#5155)
- Preserve head/TopK semantics for sort-expression pushdown to prevent returning more rows than requested (#5135)
- Return null instead of error for double overflow to Infinity in arithmetic operations (#5202)
- Return actual null from
JSON_EXTRACTfor missing or null paths instead of the string "null" (#5196) - Fix MAP path resolution for
top/rare,join,lookup, andstreamstatscommands (#5206) - Fix MAP path resolution for symbol-based PPL commands by pre-materializing dotted paths (#5198)
- Fix PIT (Point in Time) resource leaks in v2 query engine for explain, early close, and cursor close scenarios (#5221)
- Fix fallback error handling to show original Calcite error instead of V2's generic message (#5133)
- Fix memory leak caused by
ExecutionEnginerecreated per query appending to global function registry (#5222) - Fix path navigation on map columns for
spathcommand by removing unconditional alias wrapping (#5149) - Fix pitest dependency resolution by decoupling plugin version from runtime version (#5143)
- Fix typo: rename
renameClasuetorenameClausein ANTLR grammar files (#5252) - Fix
isnotnull()not being pushed down when combined with multiple!=conditions (#5238)
- Add
gradle.propertiesfile to build SQL with FIPS-140-3 crypto standard by default (#5231)
- Add ahkcs as maintainer (#5223)
- Add songkant-aws as maintainer (#5244)
- Revert dynamic column support for
spathcommand in preparation for map-based extract-all mode (#5139) - Fix bc-fips jar hell by marking dependency as compileOnly since OpenSearch core now provides it by default (#5158)
- Add CLAUDE.md with project overview, build commands, architecture, and development guidelines (#5259)