Skip to content

Releases: partiql/partiql-lang-kotlin

v1.0.0-rc.3

11 Dec 18:53
b651415
Compare
Choose a tag to compare
v1.0.0-rc.3 Pre-release
Pre-release

This pre-release is characterized by:

  • Added the stable 1.0 grammar and parsing for DML and DDL.
  • Removed deprecated APIs and finalize exisiting APIs from prior release-candidates.
  • Add an extensible and transparent representation of literals which preserves literal syntax across rewrites.
  • Improvements to operator typing such as preserving numeric precisions during arithemetic operations.
  • Converted logical plans to Java, added a plan rewriter, as well as an Operators factory with defaults.

Thank you to all who have contributed!

As always, pre-releases are not meant for production use. If you have feedback on these changes, please open a GitHub Issue, or find our contact information at https://partiql.org/.

See the full list of changes.

v1.0.0-rc.2

05 Nov 06:47
8510a99
Compare
Choose a tag to compare
v1.0.0-rc.2 Pre-release
Pre-release

This pre-release is characterized by the:

  1. Re-introduction of the partiql-lang-kotlin package.
  2. Replacement of the Sprout-generated AST with a handwritten AST
  3. Formalization of PartiQL's error reporting mechanism
  4. Formalization of the PartiQLCompiler's APIs
  5. Addition of a default catalog implementation
  6. Formalization of the PartiQLParser's APIs
  7. Support for parsing multiple statements
  8. The introduction of the Variant type, as well as Datum readers/writers
  9. The introduction of compiler strategies to allow for user-defined rewrites of plan nodes to physical implementations for execution

Thank you very much to our contributors!

As always, pre-releases are not meant for production use. If you have feedback on these changes, please open a GitHub Issue, or find our contact information at https://partiql.org/.

See the full list of changes.

v1.0.0-rc.1

02 Oct 22:40
3221226
Compare
Choose a tag to compare
v1.0.0-rc.1 Pre-release
Pre-release

What's Changed

Read more

v0.14.9

26 Sep 17:12
3a9ef18
Compare
Choose a tag to compare

Changed

  • With full, closed schema, the planner will now give a plan-time warning when it can prove an exclude path will never
    exclude a value (relevant issue -- partiql/partiql-lang#91).

Experimental Changes

  • BREAKING: For the experimental org.partiql.lang.domains of PartiqlLogical, PartiqlLogicalResolved, and PartiqlPhysical,
    the modeling of DML has changed substantially. These changes, while considered breaking changes, are part of an
    experimental area of the PartiQL library and thus do not mandate a major-version bump of this library. Consumers
    of these experimental APIs should be wary of these changes.

Contributors

v0.14.8

19 Aug 23:24
546a126
Compare
Choose a tag to compare

Fixed

  • Case When Branch inference will preserve type constraint for String Type and Decimal Type, if no coercion is required

Contributors

Thank you to all who have contributed!

v0.14.7

05 Aug 16:57
f1d785f
Compare
Choose a tag to compare

Fixed

  • partiql-lang's PartiQLParserBuilder.standard() will use the ANTLR dependency from partiql-parser to
    prevent NoSuchMethodErrors

Contributors

v0.14.6

25 Jul 22:32
6c314d2
Compare
Choose a tag to compare

Added

  • Adds PartiQLValueTextWriter implementation of date, time, and timestamp values
  • Shades ANTLR dependency to avoid dependency conflicts.

Changed

  • Behavioral change: The INTEGER/INT type is now an alias to the INT4 type. Previously the INTEGER type was
    unconstrained which is not SQL-conformant and is causing issues in integrating with other systems. This release makes
    INTEGER an alias for INT4 which is the internal type name. In a later release, we will make INTEGER the default 32-bit
    integer with INT/INT4/INTEGER4 being aliases per other systems. This change only applies to
    org.partiql.parser.PartiQLParser, not the org.partiql.lang.syntax.PartiQLParser.
  • Breaking change: partiql-plan: adds a set quantifier field to SQL set operators UNION, INTERSECT, and EXCEPT
  • partiql-plan: adds a dedicated Rex node for PartiQL bag operators UNION, INTERSECT, and EXCEPT
  • partiql-planner: Adds typing support for set operators
  • partiql-parser: parses non-SFW expressions to be PartiQL OUTER bag operators
  • partiql-ast: fixes missing parens from bag_op when printing using SqlDialect

Fixed

  • Fixed classpath conflict for IsStaticTypeMeta
  • Fixes ANTLR parser grammar file naming.

Contributors

Thank you to all who have contributed!

List of commits: v0.14.5...v0.14.6

v0.14.5

26 Apr 21:13
ab65143
Compare
Choose a tag to compare

Added

  • partiql-ast: adds warning not to implement AstVisitor interface directly. Please extend AstBaseVisitor instead.
  • partiql-plan: adds warning not to implement PlanVisitor interface directly. Please extend PlanBaseVisitor instead.

Changed

  • Change StaticType.AnyOfType's .toString to not perform .flatten()
  • Change modeling of COALESCE and NULLIF to dedicated nodes in logical plan
  • 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.
  • Behavioral change: The COUNT aggregate function now returns INT64.

Deprecated

  • The current SqlBlock, SqlDialect, and SqlLayout are marked as deprecated and will be slightly changed in the next release.
  • Deprecates constructor and properties variableName and caseSensitive of org.partiql.planner.PlanningProblemDetails.UndefinedVariable
    in favor of newly added constructor and properties name and inScopeVariables.

Fixed

  • StaticType.flatten() on an AnyOfType with AnyType will return AnyType
  • Updates the default .sql() method to use a more efficient (internal) printer implementation.
  • Fixes aggregations of attribute references to values of union types. This fix also allows for proper error handling by passing the UnknownAggregateFunction problem to the ProblemCallback. Please note that, with this change, the planner will no longer immediately throw an IllegalStateException for this exact scenario.

Contributors

Thank you to all who have contributed!

List of commits: v0.14.4...v0.14.5

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!