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 introducingTuple
andCollection
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 outputStaticType
of a
PartiQL Query. See the KDoc for more information and examples.
- Adds back ability to convert an
IonDatagram
to anExprValue
usingof(value: IonValue): ExprValue
andnewFromIonValue(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 the AST node
- Adds support for parsing and planning of
INSERT INTO .. AS <alias> ... ON CONFLICT DO [UPDATE|REPLACE] EXCLUDED WHERE <expr>
- Adds the
statement.dml
anddml_operation
node to the experimental PartiQL Physical Plan.
Changed
- Deprecates the project level opt-in annotation
PartiQLExperimental
and split it into feature level.ExperimentalPartiQLCompilerPipeline
andExperimentalWindowFunctions
. - 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 noworg.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:org.partiql.lang.types.StaticType.fromExprValueType
->org.partiql.lang.types.StaticTypeUtils.staticTypeFromExprValueType
org.partiql.lang.types.StaticType.fromExprValue
->org.partiql.lang.types.StaticTypeUtils.staticTypeFromExprValue
org.partiql.lang.types.StaticType.isInstance
->org.partiql.lang.types.StaticTypeUtils.isInstance
org.partiql.lang.types.StaticType.isComparableTo
->org.partiql.lang.types.StaticTypeUtils.areStaticTypesComparable
org.partiql.lang.types.StaticType.isSubTypeOf
->org.partiql.lang.types.StaticTypeUtils.isSubTypeOf
org.partiql.lang.types.StaticType.typeDomain
->org.partiql.lang.types.StaticTypeUtils.getTypeDomain
org.partiql.lang.types.SingleType.getRuntimeType
->org.partiql.lang.types.StaticTypeUtils.getRuntimeType
org.partiql.lang.types.StringType.StringLengthConstraint.matches
->org.partiql.lang.types.StaticTypeUtils.stringLengthConstraintMatches
- All references to static types need to modify their imports accordingly. For example,
- Breaking: Removes deprecated
ionSystem()
function from PartiQLCompilerBuilder and PartiQLParserBuilder - Breaking: Adds a new property
as_alias
to theinsert
AST node. - Breaking: Adds new property
condition
to the AST nodes ofdo_replace
anddo_update
- Breaking: Adds
target_alias
property to thedml_insert
,dml_replace
, anddml_update
nodes within the
Logical and Logical Resolved plans - Breaking: Adds
condition
property to thedml_replace
anddml_update
nodes within the
Logical and Logical Resolved plans
Deprecated
ExprValueFactory
interface marked as deprecated. EquivalentExprValue
construction methods are implemented in theExprValue
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 inExprValue
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
anddml_operation
nodes.
Security
- None
Commits: v0.9.4-alpha...v0.10.0-alpha