Skip to content

v0.9.0-alpha

Pre-release
Pre-release
Compare
Choose a tag to compare
@RCHowell RCHowell released this 21 Dec 20:48
· 7 commits to ExprValue-equals since this release
692d442

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.
  • Removes the deprecated SqlParser and SqlLexer
  • Removes the CallAgg node from the Logical, LogicalResolved, and Physical plans.
  • Removes the experimental PlannerPipeline and replaces it with PartiQLCompilerPipeline.

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 and Lead.
  • 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, and ExprValueExtensionKt.toIonValue(value: ExprValue, ion: IonSystem) in Java to transform one ExprValue to a corresponding IonValue.
  • Added ExprValue.of(value: IonValue) method to construct an ExprValue from an IonValue.

Changed

  • Now CompileOption uses TypedOpParameter.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 of TOKEN_INFO to use Property.TOKEN_DESCRIPTION instead of Property.TOKEN_TYPE

Deprecated

  • Marks the GroupKeyReferencesVisitorTransform as deprecated. There is no functionally equivalent class.
  • Marks ionValue property in ExprValue interface as deprecated. The functional equivalent method is ExprValue.toIonValue(ion: IonSystem) in kotlin, and ExprValueKt.toIonValue(value: ExprValue, ion: IonSystem) in Java.
  • Marks Lexer, Token, TokenType, SourcePosition, and SourceSpan 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 use Property.TOKEN_DESCRIPTION.

Fixed

  • Fixes the ThreadInterruptedTests by modifying the time to interrupt parses. Also adds better exception exposure to
    facilitate debugging.