Releases: partiql/partiql-lang-kotlin
v0.12.2
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
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
Added
- Adds the ability to define a user-defined-function in
ConnectorMetadata
- Move
ConnectorMetadata
map fromPartiQLPlanner
toPartiQLPlanner.Session
for planner re-use.- Deprecates 2 APIs in
org.partiql.planner.PartiQLPlannerBuilder
in favor of using the ConnectorMetadata map inPartiQLPlanner.Session
.
- Deprecates 2 APIs in
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
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 theEvaluatingCompiler
- This is currently marked as experimental until the RFC is approved partiql/partiql-lang#27
- 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
orunionOf(NULL, MISSING)
. In these cases the StaticTypeInferencer and PlanTyper will still raise the Problem CodeExpressionAlwaysReturnsNullOrMissing
but the severity of the problem has been changed to warning. In the case an expression always returnsMISSING
, problem codeExpressionAlwaysReturnsMissing
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
andAggregation
. - 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 implementIterable
rather thanSequence
, allowing for multiple consumption. - BREAKING Moves
PartiQLParserBuilder.standard().build()
to bePartiQLParser.default()
. - BREAKING Changed modeling of
EXCLUDE
inpartiql-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 withORDER BY
Removed
- BREAKING Removed IR factory in favor of static top-level functions. Change
Ast.foo()
tofoo()
- BREAKING Removed
org.partiql.lang.planner.transforms.AstToPlan
. Useorg.partiql.planner.PartiQLPlanner
. - BREAKING Removed
org.partiql.lang.planner.transforms.PartiQLSchemaInferencer
. In order to achieve the same functionality, one would need to use theorg.partiql.planner.PartiQLPlanner
.- To get the inferred type of the query result, one can do:
(plan.statement as Statement.Query).root.type
- To get the inferred type of the query result, one can do:
Security
Contributors
Thank you to all who have contributed!
v0.13.2-alpha
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 Kotlinast.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- This feature is marked as experimental until an RFC is added https://github.com/partiql/partiql-spec/issues/39
- NOTE: this feature is not currently implemented in the evaluator
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
v0.13.1-alpha
Release v0.13.1-alpha
Added
- Adds
isInterruptible
property toCompileOptions
. The default value isfalse
. Please see the KDocs for more information. - Adds support for thread interruption in compilation and execution. If you'd like to opt-in to this addition, please see
theisInterruptible
addition above for more information. - Adds support for CLI users to use CTRL-C to cancel long-running compilation/execution of queries
Fixed
- Fix a bug in
FilterScanToKeyLookup
pass wherein it was rewriting primary key equality expressions with references
to the candidate row on both sides. Now it will correctly ignore such expressions. - Fixes build failure for version
0.13.0
by publishingpartiql-plan
as an independent artifact. Please note thatpartiql-plan
is experimental.
Contributors
Thank you to all who have contributed!
List of commits: v0.13.0-alpha...v0.13.1-alpha
v0.12.1-alpha
Release v0.12.1-alpha
Fixed
- Fixes build failure for version
0.12.0
by publishingpartiql-plan
andpartiql-parser
as independent artifacts. Please note thatpartiql-plan
andpartiql-parser
are experimental.
Contributors
Thank you to all who have contributed!
List of commits: v0.12.0-alpha...v0.12.1-alpha
v0.11.1-alpha
Release v0.11.1-alpha
Fixes
- Fixes build failure for version
0.11.0
by publishingpartiql-plan
as an independent artifact. Please note thatpartiql-plan
is experimental.
List of commits: v0.11.0-alpha...v0.11.1-alpha
v0.10.1-alpha
Release v0.10.1-alpha
Fixes
- Fixes build failure for version
0.10.0
by publishingpartiql-plan
as an independent artifact. Please note thatpartiql-plan
is experimental.
List of commits: v0.10.0-alpha...v0.10.1-alpha
v0.13.0-alpha
Release v0.13.0-alpha
Added
- Adds
org.partiql.value
(experimental) package for reading/writing PartiQL values - Adds function overloading to the
CompilerPipeline
and experimentalPartiQLCompilerPipeline
. - Adds new method
getFunctions()
toorg.partiql.spi.Plugin
. - Adds
PartiQLFunction
interface. - Adds
FunctionSignature
andFunctionParameter
class toorg/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
andhashCode
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
andgetCoverageStructure
.
Changed
- Breaking: all product types defined by the internal Sprout tool no longer generate interfaces. They are now abstract
classes due to the generation ofequals
andhashCode
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 inorg/partiql/lang/eval/builtins
by the newExprFunction
format. - Breaking: Redefines
org/partiql/lang/eval/ExprFunctionkt.call()
method by only invokingcallWithRequired
function. - Breaking: Redefines
org/partiql/lang/eval/builtins/DynamicLookupExprFunction
by mergingvariadicParameter
intorequiredParameters
as aStaticType.LIST
.callWithVariadic
is now replaced bycallWithRequired
. - 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}
,
fromSymbolPrimitive
to newGraphLabelSpec
. - Changed the names of subclasses of
org.partiql.lang.graph.LabelSpec
,
fromOneOf
toName
, and fromWhatever
toWildcard
.
- Changed the type of the field
- Breaking the package
org.partiql.lang.errors
has been moved toorg.partiql.errors
, moved classes includeorg.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 oforg.partiql.errors.Problem
was changed fromorg.partiql.lang.ast.SoureceLocationMeta
toorg.partiql.errors.ProblemLocation
. - Breaking removed redundant ValueParameter from FunctionParameter as all parameters are values.
- Introduces
isNullCall
andisNullable
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
, andRequiredWithVariadic
classes,
along with thecallWithOptional()
,callWithVariadic()
, and the overloadedcall()
methods in theExprFunction
class,
marking them with a Deprecation Level of ERROR. Now, it's recommended to use
call(session: EvaluationSession, args: List<ExprValue>)
andcallWithRequired()
instead. - Breaking: Deprecates
optionalParameter
andvariadicParameter
in theFunctionSignature
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
andvariadicParameter
fromorg.partiql.lang.types.FunctionSignature
. To continue support for evaluation ofoptionalParameters
, please create another same-named function. To continue support for evaluation ofvariadicParameter
, please use aStaticType.LIST
to hold all previously variadic parameters.
As this changes coincides with the addition of function overloading, onlycallWithRequired
will be invoked upon execution of anExprFunction
. Note: Function overloading is now allowed, which is the reason for the removal ofoptionalParameter
andvariadicParameter
. - Breaking: Removes unused class
Arguments
fromorg.partiql.lang.eval
. - Breaking: Removes unused parameter
args: Arguments
fromorg.partiql.lang.eval.ExprFunctionkt.call()
method.
Security
Contributors
Thank you to all who have contributed!
Commits: v0.12.0-alpha...v0.13.0-alpha