Skip to content

v0.13.0-alpha

Pre-release
Pre-release
Compare
Choose a tag to compare
@yliuuuu yliuuuu released this 08 Sep 22:37
· 699 commits to main since this release
591d7aa

Release v0.13.0-alpha

Added

  • Adds org.partiql.value (experimental) package for reading/writing PartiQL values
  • Adds function overloading to the CompilerPipeline and experimental PartiQLCompilerPipeline.
  • Adds new method getFunctions() to org.partiql.spi.Plugin.
  • Adds PartiQLFunction interface.
  • Adds FunctionSignature and FunctionParameter class to org/partiql/types/function.
  • Adds a new flag --plugins to PartiQL CLI to allow users to specify the root of their plugins directory.
    The default is ~/.partiql/plugins . Each implementer of a plugin should place a directory under the
    plugins root containing the JAR corresponding with their plugin implementation.
    Example: ~/.partiql/plugins/customPlugin/customPlugin.jar
  • Adds serialization and deserialization between IonValue and org.partiql.value.
  • Adds org.partiql.ast package and usage documentation
  • Adds org.partiql.parser package and usage documentation
  • Adds PartiQL's Timestamp Data Model.
  • Adds support for Timestamp constructor call in Parser.
  • Parsing of label patterns within node and edge graph patterns now supports
    disjunction |, conjunction &, negation !, and grouping.
  • Adds default equals and hashCode methods for each generated abstract class of Sprout. This affects the generated
    classes in :partiql-ast and :partiql-plan.
  • Adds README to partiql-types package.
  • Initializes PartiQL's Code Coverage library
    • Adds support for BRANCH and BRANCH-CONDITION Coverage
    • Adds integration with JUnit5 for ease-of-use
    • For more information, see the "Writing PartiQL Unit Tests" article in our GitHub Wiki.
  • Adds new constructor parameters to all variants of PartiQLResult.
  • Adds two new methods to PartiQLResult: getCoverageData and getCoverageStructure.

Changed

  • Breaking: all product types defined by the internal Sprout tool no longer generate interfaces. They are now abstract
    classes due to the generation of equals and hashCode methods. This change impacts many generated interfaces exposed
    in :partiql-ast and :partiql-plan.
  • Standardizes org/partiql/cli/functions/QueryDDB and other built-in functions in org/partiql/lang/eval/builtins by the new ExprFunction format.
  • Breaking: Redefines org/partiql/lang/eval/ExprFunctionkt.call() method by only invoking callWithRequired function.
  • Breaking: Redefines org/partiql/lang/eval/builtins/DynamicLookupExprFunction by merging variadicParameter into requiredParameters as a StaticType.LIST. callWithVariadic is now replaced by callWithRequired.
  • Upgrades ion-java to 1.10.2.
  • Breaking (within experimental graph features): As part of extending
    the language of graph label patterns:
    • Changed the type of the field label in AST nodes
      org.partiql.lang.domains.PartiqlAst.GraphMatchPatternPart.{Node,Edge},
      from SymbolPrimitive to new GraphLabelSpec.
    • Changed the names of subclasses of org.partiql.lang.graph.LabelSpec,
      from OneOf to Name, and from Whatever to Wildcard.
  • Breaking the package org.partiql.lang.errors has been moved to org.partiql.errors, moved classes include
    • org.partiql.lang.errors.ErrorCategory -> org.partiql.errors.ErrorCategory
    • org.partiql.lang.errors.Property -> org.partiql.errors.Property
    • org.partiql.lang.errors.PropertyValue -> org.partiql.errors.PropertyValue
    • org.partiql.lang.errors.PropertyType -> org.partiql.errors.PropertyType
    • org.partiql.lang.errors.PropertyValueMap -> org.partiql.errors.PropertyValueMap
    • org.partiql.lang.errors.ErrorCode -> org.partiql.errors.ErrorCode
    • org.partiql.lang.errors.Problem -> org.partiql.errors.Problem
    • org.partiql.lang.errors.ProblemDetails -> org.partiql.errors.ProblemDetails
    • org.partiql.lang.errors.ProblemSeverity -> org.partiql.errors.ProblemSeverity
    • org.partiql.lang.errors.ProblemHandler -> org.partiql.errors.ProblemHandler
  • Breaking the sourceLocation field of org.partiql.errors.Problem was changed from org.partiql.lang.ast.SoureceLocationMeta to org.partiql.errors.ProblemLocation.
  • Breaking removed redundant ValueParameter from FunctionParameter as all parameters are values.
  • Introduces isNullCall and isNullable properties to FunctionSignature.
  • Removed Nullable...Value implementations of PartiQLValue and made the standard implementations nullable.
  • Using PartiQLValueType requires optin; this was a miss from an earlier commit.
  • Modified timestamp static type to model precision and time zone.

Deprecated

  • Breaking: Deprecates the Arguments, RequiredArgs, RequiredWithOptional, and RequiredWithVariadic classes,
    along with the callWithOptional(), callWithVariadic(), and the overloaded call() methods in the ExprFunction class,
    marking them with a Deprecation Level of ERROR. Now, it's recommended to use
    call(session: EvaluationSession, args: List<ExprValue>) and callWithRequired() instead.
  • Breaking: Deprecates optionalParameter and variadicParameter in the FunctionSignature with a Deprecation
    Level of ERROR. Please use multiple implementations of ExprFunction and use the LIST ExprValue to
    represent variadic parameters instead.

Fixed

Removed

  • Breaking: Removes optionalParameter and variadicParameter from org.partiql.lang.types.FunctionSignature. To continue support for evaluation of optionalParameters, please create another same-named function. To continue support for evaluation of variadicParameter, please use a StaticType.LIST to hold all previously variadic parameters.
    As this changes coincides with the addition of function overloading, only callWithRequired will be invoked upon execution of an ExprFunction. Note: Function overloading is now allowed, which is the reason for the removal of optionalParameter and variadicParameter.
  • Breaking: Removes unused class Arguments from org.partiql.lang.eval.
  • Breaking: Removes unused parameter args: Arguments from org.partiql.lang.eval.ExprFunctionkt.call() method.

Security

Contributors

Thank you to all who have contributed!

Commits: v0.12.0-alpha...v0.13.0-alpha