Releases: partiql/partiql-lang-kotlin
Releases · partiql/partiql-lang-kotlin
v1.0.0-rc.2
This pre-release is characterized by the:
- Re-introduction of the partiql-lang-kotlin package.
- Replacement of the Sprout-generated AST with a handwritten AST
- Formalization of PartiQL's error reporting mechanism
- Formalization of the PartiQLCompiler's APIs
- Addition of a default catalog implementation
- Formalization of the PartiQLParser's APIs
- Support for parsing multiple statements
- The introduction of the Variant type, as well as Datum readers/writers
- 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
What's Changed
- Remove redundancy by using ANY parameter for IS TYPE operators by @RCHowell in #1321
- Re-adds removed builder APIs and adds deprecation notice by @johnedquinn in #1327
- Updates planner builder deprecation message by @RCHowell in #1328
- Releases v0.14.1 and prepares development by @johnedquinn in #1329
- Adds qualifiers to function call expressions by @RCHowell in #1337
- Adds the unsafe DECIMAL to integer downcasts by @RCHowell in #1342
- Generate internalized planning IR by @RCHowell in #1339
- Isolates local variable resolution logic by @RCHowell in #1344
- Upgrade IonJava to v1.11.1; prepare v0.14.2 release by @alancai98 in #1350
- Prepares v0.14.3-SNAPSHOT by @alancai98 in #1354
- Fix SqlDialect's
defaultReturn
return type to beSqlBlock
by @alancai98 in #1357 - resolve nullable type causes a dynamic call by @yliuuuu in #1366
- Flatten case when branch result type in PlanTyper by @alancai98 in #1368
- Releases v0.14.3 and prepares development by @johnedquinn in #1372
- Func resolver by @yliuuuu in #1378
- Partiql eval wildcard by @yliuuuu in #1374
- Additional Functions implementation for Eval Engine by @yliuuuu in #1375
- Fixes
SqlDialect
output for unary ops by @alancai98 in #1384 - Add additional APIs for async physical plan evaluation by @alancai98 in #1382
- Partiql eval continue by @yliuuuu in #1370
- Prepare v0.14.4 release; move internal, top-level functions back to original file by @alancai98 in #1389
- Prepare v0.14.5-SNAPSHOT by @alancai98 in #1392
- Apply SQL 9.3 typing rules for CASE-WHEN by @RCHowell in #1391
- Change StaticType.AnyOfType's .toString to not perform .flatten() by @alancai98 in #1393
- Add EXCLUDE test for a new projection from subquery by @am357 in #1394
- Updates CHANGELOG for CASE-WHEN by @RCHowell in #1401
- Adds more efficient internal pretty-printing by @RCHowell in #1403
- Fix StaticType.flatten() on AnyOfType containing AnyType by @alancai98 in #1395
- Add
COALESCE
andNULLIF
to the logical plan by @alancai98 in #1404 - Adds performance optimizations for ExprCallDynamic by @johnedquinn in #1388
- Fixes aggregations of attribute references to values of union types by @johnedquinn in #1383
- qualified identifier by @yliuuuu in #1411
- Add warning to not implement sprout-generated visitor interfaces by @alancai98 in #1413
- Moves lang.eval sources back to partiql-lang by @johnedquinn in #1412
- PartiQL Eval - Planner Mode by @yliuuuu in #1385
- Prepares 0.14.5 release by @RCHowell in #1419
- Prepares v0.14.6 snapshot by @RCHowell in #1421
- Run build + tests on every branch by @alancai98 in #1423
- Revert "PartiQL Eval - Planner Mode (#1385)" by @RCHowell in #1425
- Merges main branch into v1 by @RCHowell in #1420
- Apply "PartiQL Eval - Planner Mode (#1385)" by @RCHowell in #1429
- Skips GPML conformance tests for new evaluator by @johnedquinn in #1426
- Add custom ktlint rules to prevent Java interop issues by @alancai98 in #1414
- Adds support for NULLIF and COALESCE by @johnedquinn in #1435
- Fixes to UNPIVOT normalization and empty struct typing by @RCHowell in #1431
- Adds support for catching type check exceptions in FILTER when permissive by @johnedquinn in #1434
- Makes a planner missing node into a compile-time error for strict mode by @RCHowell in #1437
- Handles null calls in dynamic dispatch by @RCHowell in #1436
- Updates AVG to return DECIMAL by @johnedquinn in #1432
- Adds compilation/evaluation support for UNION/INTERSECT/EXCEPT ALL/DISTINCT by @johnedquinn in #1430
- Add binary API compatibility checks to v1 branch by @alancai98 in #1427
- Fix build after #1427 by @alancai98 in #1444
- Support parsing for attribute and tuple level constraint by @yliuuuu in #1442
- run apiDump by @yliuuuu in #1447
- struct subfield and list element type by @yliuuuu in #1449
- Internalize generated ANTLR sources by @alancai98 in #1452
- V1 ddl extended keyword by @yliuuuu in #1455
- Remove unnecessary conversion steps in PartiQLValueIonReaderBuilder by @popematt in #1456
- Add to non-reserved keywords; rework
functionName
andsymbolPrimitive
parse rules by @alancai98 in #1457 - Shade antlr dependency for partiql-parser and partiql-lang by @alancai98 in #1439
- Upgrade JMH plugin dependency to 0.7.2 by @alancai98 in #1462
- Resolve Class Path conflict. by @yliuuuu in #1465
- Merges main into V1 by @johnedquinn in #1469
- Deprecates absent types and removes associated planner logic by @johnedquinn in #1463
- Updates conformance tests and enables easier conformance debugging by @johnedquinn in #1470
- Fixes ANTLR parser grammar and renames parser g4 file by @RCHowell in #1474
- Changes INT/INTEGER to be an alias for INT4 by @RCHowell in #1473
- Remove hard-coded aggregations from parser and ast by @alancai98 in #1464
- Merges main into v1 by @johnedquinn in #1481
- Initializes Datum and adds functionality to evaluator by @johnedquinn in #1451
- Update conformance GH action gradle version (#1485) by @alancai98 in #1486
- Initializes PType by @johnedquinn in #1488
- Picks commits from main to include in 0.14.6 by @RCHowell in #1495
- Fix bag constructor parsing by @alancai98 in #1500
- Fix published jars for non-shadowed packages by @alancai98 in #1504
- Cherry picks #1504 (Fix published jars for non-shadowed packages) by @alancai98 in #1505
- Simplifies joins and fixes bugs by @johnedquinn in #1438
- Add operator node to AST and parser by @alancai98 in #1499
- Add set op typing; fixes various behaviors in set op parsing and modeling by @alancai98 in #1506
- Updates rules for variable resolution by @johnedquinn in #1508
- Fixes timestamp bug by @johnedquinn in #1515
- Fixes null comparisons and coercions of null collections by @johnedquinn in #1454
- Fixes...
v0.14.9
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
ofPartiqlLogical
,PartiqlLogicalResolved
, andPartiqlPhysical
,
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
v0.14.7
Fixed
partiql-lang
'sPartiQLParserBuilder.standard()
will use the ANTLR dependency frompartiql-parser
to
preventNoSuchMethodError
s
Contributors
v0.14.6
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 theINT4
type. Previously theINTEGER
type was
unconstrained which is not SQL-conformant and is causing issues in integrating with other systems. This release makes
INTEGER
an alias forINT4
which is the internal type name. In a later release, we will makeINTEGER
the default 32-bit
integer withINT/INT4/INTEGER4
being aliases per other systems. This change only applies to
org.partiql.parser.PartiQLParser
, not theorg.partiql.lang.syntax.PartiQLParser
. - Breaking change: partiql-plan: adds a set quantifier field to SQL set operators
UNION
,INTERSECT
, andEXCEPT
- partiql-plan: adds a dedicated Rex node for PartiQL bag operators
UNION
,INTERSECT
, andEXCEPT
- 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 usingSqlDialect
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
Added
- partiql-ast: adds warning not to implement
AstVisitor
interface directly. Please extendAstBaseVisitor
instead. - partiql-plan: adds warning not to implement
PlanVisitor
interface directly. Please extendPlanBaseVisitor
instead.
Changed
- Change
StaticType.AnyOfType
's.toString
to not perform.flatten()
- Change modeling of
COALESCE
andNULLIF
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
andcaseSensitive
oforg.partiql.planner.PlanningProblemDetails.UndefinedVariable
in favor of newly added constructor and propertiesname
andinScopeVariables
.
Fixed
StaticType.flatten()
on anAnyOfType
withAnyType
will returnAnyType
- 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
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
andPartiQLCompilerPipelineAsyncBenchmark
- JMH benchmarks added to partiql-lang:
- The following related async APIs have been added:
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
- The following related APIs have been deprecated
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
This is a pre-release containing:
- A new, experimental evaluator under
org.partiql.eval
. - Several breaking changes under
org.partiql.plan
andorg.partiql.types
andorg.partiql.spi
.
Please note that these changes are subject to future breaking changes without warning.
Contributors
Thank you to all who have contributed!
v0.14.3
Fixed
- Return type of
partiql-ast
'sSqlDialect
fordefaultReturn
to be aSqlBlock
rather thanNothing
- Flatten
CASE WHEN
branch type inPlanTyper
Contributors
Thank you to all who have contributed!