Skip to content

Releases: partiql/partiql-lang-kotlin

v0.10.0-alpha

06 May 00:38
c6b9c7f
Compare
Choose a tag to compare
v0.10.0-alpha Pre-release
Pre-release

Added

  • Added numeric builtins ABS, SQRT, EXP, LN, POW, MOD.
  • Added standard SQL built-in functions POSITION, OVERLAY, LENGTH, BIT_LENGTH, OCTET_LENGTH, CARDINALITY,
    an additional builtin TEXT_REPLACE, and standard SQL aggregations on booleans EVERY, ANY, SOME.
  • Breaking Added coercion of SQL-style subquery to a single value, as defined in SQL for
    subqueries occurring in a single-value context and outlined in Chapter 9 of the PartiQL specification.
    This is backward incompatible with the prior behavior (which left the computed collection as is),
    but brings it in conformance with the specification.
  • Added partiql-plan package which contains experimental PartiQL Plan data structures.
  • Initializes SPI Framework under partiql-spi.
  • Models experimental Schema with constraints.
    With this change, we're introducing Tuple and Collection constraints to be able to model the shape of data as
    constraints.
  • Introduces the PartiQLSchemaInferencer and PlannerSession
    • The PlannerSession describes the current session and is used by the PartiQLSchemaInferencer.
    • The PartiQLSchemaInferencer provides a function, infer, to aid in inferring the output StaticType of a
      PartiQL Query. See the KDoc for more information and examples.
  • Adds back ability to convert an IonDatagram to an ExprValue using of(value: IonValue): ExprValue and newFromIonValue(value: IonValue): ExprValue
  • Adds support for SQL's CURRENT_USER in the AST, EvaluatingCompiler, experimental planner implementation, and Schema Inferencer.
    • Adds the AST node session_attribute.
    • Adds the function EvaluationSession.Builder::user() to add the CURRENT_USER to the EvaluationSession
  • Adds support for parsing and planning of INSERT INTO .. AS <alias> ... ON CONFLICT DO [UPDATE|REPLACE] EXCLUDED WHERE <expr>
  • Adds the statement.dml and dml_operation node to the experimental PartiQL Physical Plan.

Changed

  • Deprecates the project level opt-in annotation PartiQLExperimental and split it into feature level. ExperimentalPartiQLCompilerPipeline and ExperimentalWindowFunctions.
  • Breaking: Moves StaticType to partiql-types.
    • All references to static types need to modify their imports accordingly. For example,
      org.partiql.lang.types.IntType is now org.partiql.types.IntType.
    • Please modify existing dependencies accordingly. You may need to add dependency org.partiql:partiql-types:0.10.0.
    • Also, several methods within StaticType have been moved to a utility class within partiql-lang-kotln. See the below list:
      1. org.partiql.lang.types.StaticType.fromExprValueType -> org.partiql.lang.types.StaticTypeUtils.staticTypeFromExprValueType
      2. org.partiql.lang.types.StaticType.fromExprValue -> org.partiql.lang.types.StaticTypeUtils.staticTypeFromExprValue
      3. org.partiql.lang.types.StaticType.isInstance -> org.partiql.lang.types.StaticTypeUtils.isInstance
      4. org.partiql.lang.types.StaticType.isComparableTo -> org.partiql.lang.types.StaticTypeUtils.areStaticTypesComparable
      5. org.partiql.lang.types.StaticType.isSubTypeOf -> org.partiql.lang.types.StaticTypeUtils.isSubTypeOf
      6. org.partiql.lang.types.StaticType.typeDomain -> org.partiql.lang.types.StaticTypeUtils.getTypeDomain
      7. org.partiql.lang.types.SingleType.getRuntimeType -> org.partiql.lang.types.StaticTypeUtils.getRuntimeType
      8. org.partiql.lang.types.StringType.StringLengthConstraint.matches -> org.partiql.lang.types.StaticTypeUtils.stringLengthConstraintMatches
  • Breaking: Removes deprecated ionSystem() function from PartiQLCompilerBuilder and PartiQLParserBuilder
  • Breaking: Adds a new property as_alias to the insert AST node.
  • Breaking: Adds new property condition to the AST nodes of do_replace and do_update
  • Breaking: Adds target_alias property to the dml_insert, dml_replace, and dml_update nodes within the
    Logical and Logical Resolved plans
  • Breaking: Adds condition property to the dml_replace and dml_update nodes within the
    Logical and Logical Resolved plans

Deprecated

  • ExprValueFactory interface marked as deprecated. Equivalent ExprValue construction methods are implemented in the ExprValue interface as static methods.

Fixed

  • Javadoc jar now contains dokka docs (was broken by gradle commit from 0.9.0)
  • ANTLR (PartiQL.g4, PartiQLTokens.g4) and PIG (org/partiql/type-domains/partiql.ion) sources
    are back to being distributed with the jar.
  • CLI no longer terminates on user errors in submitted PartiQL (when printing out the AST with !!)
    and no longer prints out stack traces upon user errors.
  • Constrained Decimal matching logic.
  • Parsing INSERT statements with aliases no longer loses the original table name. Closes #1043.
  • Parsing INSERT statements with the legacy ON CONFLICT clause is no longer valid. Similarly, parsing the legacy INSERT
    statement with the up-to-date ON CONFLICT clause is no longer valid. Closes #1063.

Removed

  • The deprecated IonValue property in ExprValue interface is now removed.
  • Removed partiql-extensions to partiql-cli org.partiql.cli.functions
  • Removed IonSystem from PartiQLParserBuilder
  • Breaking: Removes node statement.dml_query from the experimental PartiQL Physical Plan. Please see the added
    statement.dml and dml_operation nodes.

Security

  • None

Commits: v0.9.4-alpha...v0.10.0-alpha

v0.9.4-alpha

21 Apr 19:05
265d679
Compare
Choose a tag to compare
v0.9.4-alpha Pre-release
Pre-release

Release v0.9.4-alpha

This release reverts changes in the previous release v0.9.3-alpha because the previous version contains the following breaking changes:

  • StaticType move from partiql-lang to partiql-types.
  • Deprecated ionSystem() function has been removed from PartiQLCompilerBuilder and PartiQLParserBuilder.

List of commits: v0.9.3-alpha...v0.9.4-alpha

v0.9.3-alpha

13 Apr 21:23
5e7ccd1
Compare
Choose a tag to compare
v0.9.3-alpha Pre-release
Pre-release

Release v0.9.3-alpha

Please note:

Although this version is versioned as patch on v0.9.2-alpha (the previous version) it still contains the following breaking changes PartiQL maintainers are working to rectify this issue and will update the release notes:

  • StaticType move from partiql-lang to partiql-types.
  • Deprecated ionSystem() function has been removed from PartiQLCompilerBuilder and PartiQLParserBuilder.

Added

  • Added numeric builtins ABS, SQRT, EXP, LN, POW, MOD.
  • Added standard SQL built-in functions POSITION, OVERLAY, LENGTH, BIT_LENGTH, OCTET_LENGTH, CARDINALITY,
    an additional builtin TEXT_REPLACE, and standard SQL aggregations on booleans EVERY, ANY, SOME.
  • Breaking Added coercion of SQL-style subquery to a single value, as defined in SQL for
    subqueries occurring in a single-value context and outlined in Chapter 9 of the PartiQL specification.
    This is backward incompatible with the prior behavior (which left the computed collection as is),
    but brings it in conformance with the specification.
  • Added partiql-plan package which contains experimental PartiQL Plan data structures.
  • Initializes SPI Framework under partiql-spi.
  • Models experimental Schema with constraints.
    With this change, we're introducing Tuple and Collection constraints to be able to model the shape of data as
    constraints.
  • Introduces the PartiQLSchemaInferencer and PlannerSession
    • The PlannerSession describes the current session and is used by the PartiQLSchemaInferencer.
    • The PartiQLSchemaInferencer provides a function, infer, to aid in inferring the output StaticType of a
      PartiQL Query. See the KDoc for more information and examples.

Changed

  • Deprecates the project level opt-in annotation PartiQLExperimental and split it into feature level. ExperimentalPartiQLCompilerPipeline and ExperimentalWindowFunctions.
  • Breaking: Moves StaticType to partiql-types.
    • All references to static types need to modify their imports accordingly. For example,
      org.partiql.lang.types.IntType is now org.partiql.types.IntType.
    • Please modify existing dependencies accordingly. You may need to add dependency org.partiql:partiql-types:0.10.0.
    • Also, several methods within StaticType have been moved to a utility class within partiql-lang-kotln. See the below list:
      1. org.partiql.lang.types.StaticType.fromExprValueType -> org.partiql.lang.types.StaticTypeUtils.staticTypeFromExprValueType
      2. org.partiql.lang.types.StaticType.fromExprValue -> org.partiql.lang.types.StaticTypeUtils.staticTypeFromExprValue
      3. org.partiql.lang.types.StaticType.isInstance -> org.partiql.lang.types.StaticTypeUtils.isInstance
      4. org.partiql.lang.types.StaticType.isComparableTo -> org.partiql.lang.types.StaticTypeUtils.areStaticTypesComparable
      5. org.partiql.lang.types.StaticType.isSubTypeOf -> org.partiql.lang.types.StaticTypeUtils.isSubTypeOf
      6. org.partiql.lang.types.StaticType.typeDomain -> org.partiql.lang.types.StaticTypeUtils.getTypeDomain
      7. org.partiql.lang.types.SingleType.getRuntimeType -> org.partiql.lang.types.StaticTypeUtils.getRuntimeType
      8. org.partiql.lang.types.StringType.StringLengthConstraint.matches -> org.partiql.lang.types.StaticTypeUtils.stringLengthConstraintMatches
  • Breaking: Removes deprecated ionSystem() function from PartiQLCompilerBuilder and PartiQLParserBuilder

Deprecated

  • ExprValueFactory interface marked as deprecated. Equivalent ExprValue construction methods are implemented in the ExprValue interface as static methods.

Fixed

  • Javadoc jar now contains dokka docs (was broken by gradle commit from 0.9.0)

  • ANTLR (PartiQL.g4, PartiQLTokens.g4) and PIG (org/partiql/type-domains/partiql.ion) sources
    are back to being distributed with the jar.

  • CLI no longer terminates on user errors in submitted PartiQL (when printing out the AST with !!)
    and no longer prints out stack traces upon user errors.

  • Constrained Decimal matching logic.

Removed

  • The deprecated IonValue property in ExprValue interface is now removed.
  • Removed partiql-extensions to partiql-cli org.partiql.cli.functions
  • Removed IonSystem from PartiQLParserBuilder

Security

List of commits: v0.9.2-alpha...v0.9.3-alpha

v0.9.2-alpha

23 Jan 18:17
f3b92a8
Compare
Choose a tag to compare
v0.9.2-alpha Pre-release
Pre-release

This version is a minor version with no breaking changes.

Release v0.9.2-alpha

Features

  • Integrates Pico CLI to create a better CLI experience
  • Adds support for shebangs (allowing for executable PartiQL files)

Fixes

  • Fixes list/bag ExprValue creation in plan evaluator
  • Fixes gradle build issues

List of commits: v0.9.1-alpha...v0.9.2-alpha

v0.9.1-alpha

04 Jan 23:53
Compare
Choose a tag to compare
v0.9.1-alpha Pre-release
Pre-release

This version is a minor version with no breaking changes.

Added

  • Makes the following PartiQLCompilerBuilder functions public:
    • customOperatorFactories
    • customFunctions
    • customProcedures
    • customTypes

List of commits: v0.9.0-alpha...v0.9.1-alpha

v0.9.0-alpha

21 Dec 20:48
692d442
Compare
Choose a tag to compare
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.
  • 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.

v0.8.2-alpha

29 Nov 19:35
Compare
Choose a tag to compare
v0.8.2-alpha Pre-release
Pre-release

Description

This is a minor version release, v0.8.2-alpha.

Added

  • Adds simple auto-completion to the CLI.

Changed

  • 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

List of commits: v0.8.1-alpha...v0.8.2-alpha.

v0.8.1-alpha

28 Oct 23:06
Compare
Choose a tag to compare
v0.8.1-alpha Pre-release
Pre-release

Description

This is a minor version release, v0.8.1-alpha.

Added

  • Extends statement redaction to support INSERT/REPLACE/UPSERT INTO.

List of commits: v0.8.0-alpha...v0.8.1-alpha

v0.8.0-alpha

18 Oct 19:50
d8bcf1f
Compare
Choose a tag to compare
v0.8.0-alpha Pre-release
Pre-release

Description

This is a major version release for v0.8.0-alpha.

Breaking Changes

  • Replaced union, intersect, except IR nodes with common bag_op IR node
  • Renamed PassResult to PlannerPassResult for clarity. (This is part of the experimental query planner API.)
  • Removed [ExprValueType.typeNames] as needed by the future work of legacy parser removal and OTS

Added

  • CHANGELOG.md with back-filling of the previous releases to the change log to provide more visibility on unreleased
    changes and make the release process easier by using the unreleased section of change log. The CONTRIBUTING.md
    has also been updated to ensure this is part of the process.
  • backward-incompatiblity and dependency questions are added to the project's PR process to provide more context
    on the changes that include these and the alternatives that have been considered.
  • README.md badges for GitHub Actions status, codecov, and license
  • An experimental (pending #15) embedding of a subset of
    the GPML (Graph Pattern Matching Language) graph query, as a new expression
    form <expr> MATCH <gpml_pattern>, which can be used as a bag-of-structs data source in the FROM clause.
    The use within the grammar is based on the assumption of a new graph data type being added to the
    specification of data types within PartiQL, and should be considered experimental until the semantics of the graph
    data type are specified.
    • basic and abbreviated node and edge patterns (section 4.1 of the GPML paper)
    • concatenated path patterns (section 4.2 of the GPML paper)
    • path variables (section 4.2 of the GPML paper)
    • graph patterns (i.e., comma separated path patterns) (section 4.3 of the GPML paper)
    • parenthesized patterns (section 4.4 of the GPML paper)
    • path quantifiers (section 4.4 of the GPML paper)
    • restrictors and selector (section 5.1 of the GPML paper)
    • pre-filters and post-filters (section 5.2 of the GPML paper)
  • Added EvaluatonSession.context: A string-keyed map of arbitrary values which provides a way to make
    session state such as current user and transaction details available to custom [ExprFunction] implementations
    and custom physical operator implementations.
  • Replaces union, intersect, except IR nodes with common bag_op IR node
  • Add support for CallAgg in Type Inferencer.
  • A GitHub Workflow to automatically sync the docs directory with the GitHub Wiki
  • Introduces the PartiQLParser, an implementation of Parser using ANTLR
    • Matches the functionality of the existing SqlParser
    • Now catches a StackOverflowError and throws a ParserException
    • Support for DQL, DDL, DML, GPML, and EXEC
    • Handles consistency and precedence issues seen in SqlParser
  • Parsing of INSERT DML with ON CONFLICT DO REPLACE EXCLUDED based on RFC-0011
  • Adds a subset of REPLACE INTO and UPSERT INTO parsing based on RFC-0030
    • Parsing of target attributes is not supported yet and is pending #841
  • Logical plan representation and evaluation support for INSERT DML with ON CONFLICT DO REPLACE EXCLUDED and REPLACE INTO based on RFC-0011
  • Logical plan representation of INSERT DML with ON CONFLICT DO UPDATE EXCLUDED and UPSERT INTO based on RFC-0011
  • Enabled projection alias support for ORDER BY clause

Experimental Planner Additions

  • Renamed PassResult to PlannerPassResult for clarity. (This is part of the experimental query planner API.)
  • The PlannerPipeline API now has experimental and partial support for INSERT and DELETE DML statements—
    tracking PartiQL specification issues are partiql-docs/#4 (only
    a subset has been implemented--see examples below) and
    partiql-docs/#19.
    • Examples of supported statements include:
      • INSERT INTO foo << { 'id': 1, 'name': 'bob' }, { 'id': 2, 'name' : 'sue' } >> (multi record insert)
      • INSERT INTO foo SELECT c.id, c.name FROM customer AS c (insert the results of a query into another table)
      • DELETE FROM foo (delete all records in a table)
      • DELETE FROM foo AS f WHERE f.zipCode = '90210' (delete all records matching a predicate)
  • Introduced planner event callbacks as a means to provide a facility that allows the query to be visualized at every
    stage in the PlannerPipeline and to generate performance metrics for the individual phases of query planning. See
    PlannerPipe.Builder.plannerEventCallback for details.
  • Adds the following optimization passes, none of which are enabled by default:
    • FilterScanToKeyLookupPass which performs a simple optimization common to most databases: it converts a filter
      predicate covering a table's complete primary key into a single get-by-key operation, thereby avoiding a full table
      scan. This may pass leave behind some useless and expressions if more and operands exist in the filter predicate
      other than primary key field equality expressions.
    • RemoveUselessAndsPass, which removes any useless and expressions introduced by the previous pass or by the
      query author, e.g. true and x.id = 42 -> x.id = 42), true and true -> true, etc.
    • RemoveUselessFiltersPass, which removes useless filters introduced by the previous pass or by the query author
      (e.g. (filter (lit true) <bexpr>)) -> <bexpr>.
  • Add support for UNPIVOT, the behavior is expected to be compatible with the evaluating compiler.
  • Adds support for GROUP BY (aggregations, group keys, etc)
  • Adds support for ORDER BY in Planner
  • Adds support for PIVOT in the planner consistent with EvaluatingCompiler

Changed

  • The default parser for all components of PartiQL is now the PartiQLParser -- see the deprecation of SqlParser
  • Parsing of ORDER BY clauses will no longer populate the AST with defaults for the 'sort specification'
    (i.e., ASC or DESC) or 'nulls specification' (i.e., NULLS FIRST or NULLS LAST) when the are not provided in
    the query text. Defaulting of sort order is moved to the evaluator.

Deprecated

  • Deprecates SqlLexer and SqlParser to be replaced with the PartiQLParserBuilder.
  • Deprecates helper method, blacklist, within org.partiql.lang.eval and introduced a functionally equivalent
    org.partiql.lang.eval.denyList method.
  • Deprecates TypedOpParameter.LEGACY to be replaced with TypedOpParameter.HONOR_PARAMETERS

Fixed

  • Codecov report uploads in GitHub Actions workflow
  • GitHub Actions capability to run on forks
  • Negation overflow caused by minimum INT8
  • Type mismatch error caused by evaluator's integer overflow check
  • Cast function's behavior on positive_infinity, negative_infinity, and NaN explicitly defined and handled.
  • Changed Trim Function Specification handling(fixed error message, and now can take case-insensitive trim spec)

Removed

  • README.md badge for travisci
  • Breaking Change: removed [ExprValueType.typeNames] as needed by the future work of legacy parser removal and OTS

List of commits: v0.7.0-alpha...v0.8.0-alpha

v.0.7.0-alpha

23 Jun 15:37
d5d4e3a
Compare
Choose a tag to compare
v.0.7.0-alpha Pre-release
Pre-release

This is a major version release for v0.7.0-alpha; it is highlighted by addition of an experimental query planner API, new built-in functions, 2.3x times more performant LIKE operator, and various CLI and REPL improvements (see features more details).

Breaking changes are:

  • Removal of Field EVALUATOR_SQL_EXCEPTION from ErrorCode class:
    A client program may be interrupted by NoSuchFieldError exception.
  • Removal of NodeMetadata from org.partiql.lang.eval:
    A client program may be interrupted by NoClassDefFoundError exception.
  • Removal of the following classes from org.partiql.lang.eval.like:
    • CodepointCheckpointIterator
    • PatternPart
    • PatternPart.AnyOneChar
    • PatternPart.ExactChars
    • PatternPartKt
      A client program may be interrupted by NoClassDefFoundError exception.

See the attached compat_report.html file for full report on compatibility between this and previous version.

  • Removal of the following interface from org.partiql.lang.eval.like:
    A client program may be interrupted by NoClassDefFoundError exception.

Features

  • An experimental query planner API along with logical and physical plans structures with the support of non-default physical operator implementations.
  • An optional flag, --wrap-ion, to give users the old functionality of reading multiple Ion values (previous behavior).
  • Benchmark framework and benchmark implementation for LIKE performance
  • Convenience StaticType for TEXT and NUMERIC
  • Enable MIN and MAX to work with all the data-types.
  • Introduction of extensions and addition of the query_ddb function to allow querying AWS DynamodB from the CLI.
  • Replacement of REPL with JLine shell
  • Syntax highlighting for CLI
  • Three additional CLI flags:
    • -r --projection-iter-behavior: Controls the behavior of ExprValue.iterator in the projection result: (default: FILTER_MISSING) [FILTER_MISSING, UNFILTERED]
    • -t --typed-op-behavior: indicates how CAST should behave: (default: HONOR_PARAMETERS) [LEGACY, HONOR_PARAMETERS]
    • -v --undefined-variable-behavior: Defines the behavior when a non-existent variable is referenced: (default: ERROR) [ERROR, MISSING]
  • --input-format flag to the CLI
  • CEIL and FLOOR functions
  • DATE/TIME formatting and the support for DATE/TIME in Ion data format

Fixes

  • Fix write_file CLI function; the old function required the input to be a string, but it must be a generic type.
  • Add ktlint task dependency to enable execution optimizations and reducing he build time by ~ 30%.
  • Adjust handling of Ion input (requiring single value)
  • Adjust handling of Ion output (outputting the real value)
  • Adds missing metas to ORDER BY ExprNode and PartiqlAst (E.g. source location), which limits error message reporting.

Misc

  • LIKE matching via compilation to java.util.regex.Pattern
  • Run ktlint before tests.

List of commits: v0.6.0-alpha...v0.7.0-alpha