v0.9.0-alpha
Pre-release
Pre-release
Breaking Changes
Breaking behavioral changes
In version v.9.0, as a result of deprecating ionValue
property in ExprValue
and introduction of the substitute method ExprValue.toIonValue(ion: IonSystem)
in Kotlin, and ExprValueKt.toIonValue(value: ExprValue, ion: IonSystem)
in Java.
Ion annotation will get elided from the provided Ion values in identity evaluations:
Example
val query = `annotation::1`
/* Prior to v0.9
ExprValue: IonExprValue
ionValue: annotation::1
*/
/* After v0.9
ExprValue: IntExprValue
toIonValue: 1
*/
Other Breaking Changes
- Removes the deprecated V0 AST in the codebase.
- Removes the deprecated MetaContainer in the codebase, removed interfaces and classes include:
- [MetaContainer] Interface
- [MetaContainerImpl]
- [MetaDeserialize]
- [MemoizedMetaDeserializer]
- Removes the deprecated Rewriter/AstWalker/AstVisitor in the code base, removed interfaces and classes include:
- [AstRewriter] Interface & [AstRewriterBase] class
- [AstVisitor] Interface & [AstVisitorBase] class
- [AstWalker] class
- [MetaStrippingRewriter] class
- Removes the deprecated ExprNode and related files in the code base.
- [Parser] API
parseExprNode(source: String): ExprNode
has been removed. - [CompilerPipeline] API
compile(query: ExprNode): Expression
has been removed. - [ExprNode] and [AstNode] have been removed.
- Functions related to conversions between ExprNode and PartiqlAst have been removed.
- [Parser] API
- Removes the deprecated SqlParser and SqlLexer
- Removes the
CallAgg
node from the Logical, LogicalResolved, and Physical plans. - Removes the experimental
PlannerPipeline
and replaces it withPartiQLCompilerPipeline
.
Added
- Adds simple auto-completion to the CLI.
- Adds the IsListParenthesizedMeta meta to aid in differentiating between parenthesized and non-parenthesized lists
- Adds support for HAVING clause in planner
- Adds support for collection aggregation functions in the EvaluatingCompiler and experimental planner
- Adds support for the syntactic sugar of using aggregations functions in place of their collection aggregation function
counterparts (in the experimental planner) - Experimental implementation for window function
Lag
andLead
. - Adds support for EXPLAIN
- Adds continuous performance benchmarking to the CI for existing JMH benchmarks
- Benchmark results can be seen on the project's GitHub Pages site
- Adds the
pipeline
flag to the CLI to provide experimental usage of the PartiQLCompilerPipeline - Added
ExprValue.toIonValue(ion: IonSystem)
in kotlin, andExprValueExtensionKt.toIonValue(value: ExprValue, ion: IonSystem)
in Java to transform oneExprValue
to a correspondingIonValue
. - Added
ExprValue.of(value: IonValue)
method to construct anExprValue
from anIonValue
.
Changed
- Now
CompileOption
usesTypedOpParameter.HONOR_PARAMETERS
as default. - Updates the CLI Shell Highlighter to use the ANTLR generated lexer/parser for highlighting user queries
- PartiQL MISSING in Ion representation now becomes ion null with annotation of
$missing
, instead of$partiql_missing
- PartiQL BAG in Ion representation now becomes ion list with annotation of
$bag
, instead of$partiql_bag
- PartiQL DATE in Ion representation now becomes ion timestamp with annotation of
$date
, instead of$partiql_date
- PartiQL TIME in Ion representation now becomes ion struct with annotation of
$time
, instead of$partiql_time
- Simplifies the aggregation operator in the experimental planner by removing the use of metas
- Increases the performance of the PartiQLParser by changing the parsing strategy
- The PartiQLParser now attempts to parse queries using the SLL Prediction Mode set by ANTLR
- If unable to parse via SLL Prediction Mode, it attempts to parse using the slower LL Prediction Mode
- Modifications have also been made to the ANTLR grammar to increase the speed of parsing joined table references
- Updates how the PartiQLParser handles parameter indexes to remove the double-pass while lexing
- Changes the expected
Property
's ofTOKEN_INFO
to useProperty.TOKEN_DESCRIPTION
instead ofProperty.TOKEN_TYPE
Deprecated
- Marks the GroupKeyReferencesVisitorTransform as deprecated. There is no functionally equivalent class.
- Marks
ionValue
property inExprValue
interface as deprecated. The functional equivalent method isExprValue.toIonValue(ion: IonSystem)
in kotlin, andExprValueKt.toIonValue(value: ExprValue, ion: IonSystem)
in Java. - Marks
Lexer
,Token
,TokenType
,SourcePosition
, andSourceSpan
as deprecated. These will be removed without
any replacement. - Marks approximately 60
ErrorCode
's as deprecated. These will be removed without any replacement. - Marks
Property.TOKEN_TYPE
as deprecated. Please useProperty.TOKEN_DESCRIPTION
.
Fixed
- Fixes the ThreadInterruptedTests by modifying the time to interrupt parses. Also adds better exception exposure to
facilitate debugging.