Skip to content

Releases: partiql/partiql-lang-kotlin

v0.14.4

14 Mar 22:02
6634bc0
Compare
Choose a tag to compare

Added

  • Added constrained decimal as valid parameter type to functions that take in numeric parameters.
  • Added async version of physical plan evaluator PartiQLCompilerAsync.
    • The following related async APIs have been added:
      • org.partiql.lang.compiler -- PartiQLCompilerAsync, PartiQLCompilerAsyncBuilder, PartiQLCompilerAsyncDefault, PartiQLCompilerPipelineAsync
      • org.partiql.lang.eval -- PartiQLStatementAsync
      • org.partiql.lang.eval.physical -- VariableBindingAsync
      • org.partiql.lang.eval.physical.operators -- AggregateOperatorFactoryAsync, CompiledGroupKeyAsync, CompiledAggregateFunctionAsync, FilterRelationalOperatorFactoryAsync, JoinRelationalOperatorFactoryAsync, LetRelationalOperatorFactoryAsync, LimitRelationalOperatorFactoryAsync, OffsetRelationalOperatorFactoryAsync, ProjectRelationalOperatorFactoryAsync, RelationExpressionAsync, ScanRelationalOperatorFactoryAsync, SortOperatorFactoryAsync, CompiledSortKeyAsync, UnpivotOperatorFactoryAsync, ValueExpressionAsync, WindowRelationalOperatorFactoryAsync, CompiledWindowFunctionAsync
      • org.partiql.lang.eval.physical.window -- NavigationWindowFunctionAsync, WindowFunctionAsync
    • Overall, we see about a 10-20% performance decline in running a single query on the synchronous vs async evaluator
      • JMH benchmarks added to partiql-lang: PartiQLCompilerPipelineBenchmark and PartiQLCompilerPipelineAsyncBenchmark

Changed

  • Function resolution logic: Now the function resolver would match all possible candidate(based on if the argument can be coerced to the Signature parameter type). If there are multiple match it will first attempt to pick the one requires the least cast, then pick the function with the highest precedence.
  • partiql-cli -- experimental version of CLI now uses the async physical plan evaluator

Deprecated

  • As part of the additions to make an async physical plan evaluator, the synchronous physical plan evaluator PartiQLCompiler has been deprecated.
    • The following related APIs have been deprecated
      • org.partiql.lang.compiler -- PartiQLCompiler, PartiQLCompilerBuilder, PartiQLCompilerDefault, PartiQLCompilerPipeline
      • org.partiql.lang.eval -- PartiQLStatement
      • org.partiql.lang.eval.physical -- VariableBinding
      • org.partiql.lang.eval.physical.operators -- AggregateOperatorFactory, CompiledGroupKey, CompiledAggregateFunction, FilterRelationalOperatorFactory, JoinRelationalOperatorFactory, LetRelationalOperatorFactory, LimitRelationalOperatorFactory, OffsetRelationalOperatorFactory, ProjectRelationalOperatorFactory, RelationExpression, ScanRelationalOperatorFactory, SortOperatorFactory, CompiledSortKey, UnpivotOperatorFactory, ValueExpression, WindowRelationalOperatorFactory, CompiledWindowFunction
      • org.partiql.lang.eval.physical.window -- NavigationWindowFunction, WindowFunction

Fixed

  • partiql-ast: SqlDialect will wrap unary ops (NOT, +, -) in parens

Contributors

Thank you to all who have contributed!

List of commits: v0.14.3...v0.14.4

v1.0.0-perf.1

04 Mar 19:36
Compare
Choose a tag to compare
v1.0.0-perf.1 Pre-release
Pre-release

This is a pre-release containing:

  • A new, experimental evaluator under org.partiql.eval.
  • Several breaking changes under org.partiql.plan and org.partiql.types and org.partiql.spi.

Please note that these changes are subject to future breaking changes without warning.

Contributors

Thank you to all who have contributed!

v0.14.3

14 Feb 23:33
Compare
Choose a tag to compare

Fixed

  • Return type of partiql-ast's SqlDialect for defaultReturn to be a SqlBlock rather than Nothing
  • Flatten CASE WHEN branch type in PlanTyper

Contributors

Thank you to all who have contributed!

v0.14.2

26 Jan 21:14
bf048f8
Compare
Choose a tag to compare

Changed

  • Upgrade IonJava dependency to v1.11.1

Contributors

Thank you to all who have contributed!

List of commits: v0.14.1...v0.14.2

v0.13.3

26 Jan 20:43
bf048f8
Compare
Choose a tag to compare
v0.13.3 Pre-release
Pre-release

Changed

  • Upgrade IonJava dependency to v1.11.1

Contributors

Thank you to all who have contributed!

List of commits: v0.13.2-alpha...v0.13.3

v0.12.2

26 Jan 21:05
bf048f8
Compare
Choose a tag to compare
v0.12.2 Pre-release
Pre-release

Changed

  • Upgrade IonJava dependency to v1.11.1

Contributors

Thank you to all who have contributed!

List of commits: v0.12.1-alpha...v0.12.2

v0.2.8

16 Jan 17:12
Compare
Choose a tag to compare

Release v0.2.8

This release adds support for thread interruption of the CompilerPipeline during compilation and evaluation of long-running queries. To consume this capability, you must opt-in by setting interruptible to true in the CompileOptions. The changes ensure that evaluation of long-running scans and joins can be interrupted as well as the compilation of long-running aggregations.

Other Notes

  • The interruption of compilation of aggregations was specifically catered for as there is a bug in the compilation of aggregations that causes premature materialization of the data. Therefore, if you intend on interrupting your queries, it may also be a good idea to interrupt at the compilation phase. You may still interrupt at evaluation.
  • This addition is NOT added in later versions. If you plan on migrating to a later version, these changes are only present in v0.13.1+. To upgrade, please see the CHANGELOG of v0.13.1 which talks about the addition of thread interruption.

Here are the list of commits.

v0.14.1

03 Jan 19:04
Compare
Choose a tag to compare

Added

  • Adds the ability to define a user-defined-function in ConnectorMetadata
  • Move ConnectorMetadata map from PartiQLPlanner to PartiQLPlanner.Session for planner re-use.
    • Deprecates 2 APIs in org.partiql.planner.PartiQLPlannerBuilder in favor of using the ConnectorMetadata map in PartiQLPlanner.Session.

Deprecated

  • See the "Added" section.

Contributors

Thank you to all who have contributed!

List of commits: v0.14.0-alpha...v0.14.1.

v0.14.0-alpha

16 Dec 01:34
67bb008
Compare
Choose a tag to compare
v0.14.0-alpha Pre-release
Pre-release

Release v0.14.0-alpha

Added

  • Adds top-level IR node creation functions.
  • Adds componentN functions (destructuring) to IR nodes via Kotlin data classes
  • Adds public tag field to IR nodes for associating metadata
  • Adds AST Normalization Pass.
  • Adds PartiQLPlanner Interface, which is responsible for translate an AST to a Plan.
  • EXPERIMENTAL Evaluation of EXCLUDE in the EvaluatingCompiler
  • EXPERIMENTAL: Adds support for EXCLUDE in the default SqlDialect.

Changed

  • StaticTypeInferencer and PlanTyper will not raise an error when an expression is inferred to NULL or unionOf(NULL, MISSING). In these cases the StaticTypeInferencer and PlanTyper will still raise the Problem Code ExpressionAlwaysReturnsNullOrMissing but the severity of the problem has been changed to warning. In the case an expression always returns MISSING, problem code ExpressionAlwaysReturnsMissing will be raised, which will have problem severity of error.
  • BREAKING The default integer literal type is now 32-bit; if the literal can not fit in a 32-bit integer, it overflows to 64-bit.
  • BREAKING PartiQLValueType now distinguishes between Arbitrary Precision Decimal and Fixed Precision Decimal.
  • BREAKING Function Signature Changes. Now Function signature has two subclasses, Scalar and Aggregation.
  • BREAKING Plugin Changes. Only return one Connector.Factory, use Kotlin fields. JVM signature remains the same.
  • BREAKING In the produced plan:
    • The new plan is fully resolved and typed.
    • Operators will be converted to function call.
  • Changes the return type of filter_distinct to a list if input collection is list
  • Changes the PartiQLValue collections to implement Iterable rather than Sequence, allowing for multiple consumption.
  • BREAKING Moves PartiQLParserBuilder.standard().build() to be PartiQLParser.default().
  • BREAKING Changed modeling of EXCLUDE in partiql-ast

Deprecated

Fixed

  • Fixes the CLI hanging on invalid queries. See issue #1230.
  • Fixes Timestamp Type parsing issue. Previously Timestamp Type would get parsed to a Time type.
  • Fixes PIVOT parsing to assign the key and value as defined by spec section 14.
  • Fixes the physical plan compiler to return list when DISTINCT used with ORDER BY

Removed

  • BREAKING Removed IR factory in favor of static top-level functions. Change Ast.foo()
    to foo()
  • BREAKING Removed org.partiql.lang.planner.transforms.AstToPlan. Use org.partiql.planner.PartiQLPlanner.
  • BREAKING Removed org.partiql.lang.planner.transforms.PartiQLSchemaInferencer. In order to achieve the same functionality, one would need to use the org.partiql.planner.PartiQLPlanner.
    • To get the inferred type of the query result, one can do: (plan.statement as Statement.Query).root.type

Security

Contributors

Thank you to all who have contributed!

v0.13.2-alpha

30 Sep 00:28
c6bf4ae
Compare
Choose a tag to compare
v0.13.2-alpha Pre-release
Pre-release

Release v0.13.2-alpha

Added

  • Adds overridden toString() method for Sprout-generated code.
  • Adds CURRENT_DATE session variable to PartiQL.g4 and PartiQLParser
  • Adds configurable AST to SQL pretty printer. Usage in Java AstKt.sql(ast) or in Kotlin ast.sql().
  • Support parsing, planning, and evaluation of Bitwise AND operator (&).
    • The Bitwise And Operator only works for integer operands.
    • The operator precedence may change based on the pending operator precedence RFC.
  • EXPERIMENTAL Adds EXCLUDE to parser, ast, plan, and plan schema inferencer

Fixed

  • Fixes typing of scalar subqueries in the PartiQLSchemaInferencer. Note that usage of SELECT * in subqueries
    is not fully supported. Please make sure to handle InferenceExceptions.
  • Fixes schema inferencer behavior for ORDER BY

Contributors

Thank you to all who have contributed!

List of commits: v0.13.1-alpha...v0.13.2-alpha