Releases: partiql/partiql-lang-kotlin
v1.2.0
Summary 🕙
This release is highlighted by the addition of the interval data type and the let clause.
- Added support for SQL-standard interval data types (i.e. YEAR, MONTH, DAY, HOUR, etc.) in PartiQL. Users can now perform complex date calculations such as
DATE '2025-01-01' + INTERVAL '1-5' YEAR TO MONTH
andTIME '12:30:01.05' + INTERVAL '5:2:1.345' HOUR TO SECOND
. - Added support for the LET clause, enabling users to write queries such as:
SELECT area * c.height AS volume
FROM cylinders c
LET 3.14 * c.radius * c.radius AS area;
Contributions
- Update README.md by @mrugeshgharat in #1743
- Add implementation of LET clause and LetTests by @lucaxchen in #1745
- Adds support for the interval type by @johnedquinn in #1741
- Releases v1.2.0 by @johnedquinn in #1747
New Contributors
- @mrugeshgharat made their first contribution in #1743
- @lucaxchen made their first contribution in #1745
Full Changelog: v1.1.0...v1.2.0
v1.1.0
v1.1.0 - Valentine's Day Release 💘

Summary
This release is highlighted by the addition of support for parsing, planning, and execution of basic Common Table Expressions (CTEs).
These basic CTEs do not allow for the planning/execution of:
- RECURSIVE
- the with column list
- the ability to reference CTEs from other CTEs
These features may be added in a subsequent release. If you're interested in one of these features, please let us know!
Changelog
- Adds -SNAPSHOT; upgrade to v1.0.1 by @alancai98 in #1731
- Adds parsing and modeling of CTEs by @johnedquinn in #1736
- Also fixes the parsing of select statements and bag operations as they pertain to the expression tree.
- Fix: Properly return properties from Session by @jpschorr in #1739
- Adds planning and evaluation support for CTEs by @johnedquinn in #1738
- Releases v1.1.0 by @johnedquinn in #1740
Full Changelog: v1.0.0...v1.1.0
v1.0.0
We are extremely excited to announce the release of 1.0.0.
For more information, please refer to the PLK 1.0 Website.
What's Changed
- Initializes PartiQL's Engine by @johnedquinn in #1283
- Updates partiql-eval public API and internal classes by @rchowell in #1287
- Adds support for FILTER in Eval by @johnedquinn in #1290
- Adds INNER JOIN, LEFT JOIN, Path Step Key & Fixes ExprStruct by @johnedquinn in #1294
- Merge
main
topartiql-eval
(incl #1298 fix) by @alancai98 in #1300 - Adds support for FULL/RIGHT OUTER JOIN and improves performance of JOINs by @johnedquinn in #1295
- Merges 0.14 main into partiql-eval by @rchowell in #1314
- Adds evaluation of TUPLEUNION by @johnedquinn in #1301
- Adds support for evaluation of CASE WHEN THEN by @johnedquinn in #1307
- Adds literal STRUCT test by @johnedquinn in #1299
- Updates pivot on rebase and join tests by @rchowell in #1316
- Initializes bindings in connectors and globals by @rchowell in #1317
- Adds support for DISTINCT in Eval by @johnedquinn in #1292
- Adds lt, lte, gt, gte, eq, not operators. by @rchowell in #1330
- Adds IS TYPE and string builtin functions to PartiQL Plugin by @rchowell in #1326
- Adds unary, logical, binary arithmetic, and concat operators by @johnedquinn in #1325
- add conformance reporting by @yliuuuu in #1333
- Implements date_add builtin in partiql-eval by @yliuuuu in #1334
- Add
EXCLUDE
topartiql-eval
by @alancai98 in #1320 - Partiql plugin cherrypick by @yliuuuu in #1349
- Enable Eval Test Suites by @yliuuuu in #1340
- Adds support for dynamic dispatch in evaluation by @johnedquinn in #1347
- Adds support for PERMISSIVE vs STRICT by @johnedquinn in #1353
- Merges partiql-spi work into partiql-plugin-impl by @rchowell in #1360
- Merge evaluator work to partiql-eval branch by @rchowell in #1362
- Add
RelSort
and comparator betweenPartiQLValue
by @alancai98 in #1343 - Cast Impl & Char_length & Abs function by @yliuuuu in #1363
- Adds UNPIVOT, LIMIT, and OFFSET to partiql-eval by @rchowell in #1364
- Adds support for correlated subqueries & coercions via scoping by @johnedquinn in #1365
- initial implementation for like, between and in by @yliuuuu in #1373
- Partiql eval limit offset by @yliuuuu in #1371
- Adds support for aggregations by @johnedquinn in #1367
- Fix Join Hang by @yliuuuu in #1380
- Adds performance optimizations for materialization by @johnedquinn in #1379
- Releases v1.0.0-perf.1 by @johnedquinn in #1381
- Partiql eval wildcard by @yliuuuu in #1374
- Additional Functions implementation for Eval Engine by @yliuuuu in #1375
- Partiql eval continue by @yliuuuu in #1370
- Adds performance optimizations for ExprCallDynamic by @johnedquinn in #1388
- Moves lang.eval sources back to partiql-lang by @johnedquinn in #1412
- PartiQL Eval - Planner Mode by @yliuuuu in #1385
- 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
- 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
- Add to non-reserved keywords; rework
functionName
andsymbolPrimitive
parse rules by @alancai98 in #1457 - 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
- Fix Functions.md heading for text functions by @alancai98 in #1479
- Adds support for parameterized decimal cast by @rchowell in #1483
- 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 by @alancai98 in #1485
- Update conformance GH action gradle version (#1485) by @alancai98 in #1486
- Initializes PType by @johnedquinn in #1488
- Add implementation of date, time, and timestamp values for
PartiQLValueTextWriter
by @alancai98 in #1492 - Add some tests missing from #1492 by @alancai98 in #1493
- Fix bag constructor parsing by @alancai98 in #1500
- 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
- Updates rules for variable resolution by @johnedquinn in #1508
- Fixes parsing of signed numeric literals by @rchowell in #1484
- Fi...
v1.0.0-rc.3
This pre-release is characterized by:
- Added the stable 1.0 grammar and parsing for DML and DDL.
- Removed deprecated APIs and finalize exisiting APIs from prior release-candidates.
- Add an extensible and transparent representation of literals which preserves literal syntax across rewrites.
- Improvements to operator typing such as preserving numeric precisions during arithemetic operations.
- Converted logical plans to Java, added a plan rewriter, as well as an Operators factory with defaults.
Thank you to all who have contributed!
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.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