Releases: substrait-io/substrait-java
Releases · substrait-io/substrait-java
Release list
v0.98.0
0.98.0 (2026-08-02)
⚠ BREAKING CHANGES
- isthmus: the isthmus fat jar (
isthmus-<version>-all.jar— the
allclassifier /shadowRuntimeElementsvariant) is no longer
published to Maven Central. Consumers that referenced it explicitly
should depend on the regularisthmusartifact and its transitive
dependencies instead.
🤖 Generated with AI
- the substrait git submodule is gone. Checkouts no longer need
--recurse-submodules; the spec inputs come entirely from the substrait-packaging
artifacts pinned in the version catalog.
Features
Build System
v0.97.0
0.97.0 (2026-07-26)
⚠ BREAKING CHANGES
- isthmus: The
SqlParser.Config-based SQL parsing entry points (public
since v0.94.0) have been removed in favour of passing aConverterProvider:
SubstraitSqlStatementParser.parseStatements(String, SqlParser.Config)SubstraitSqlToCalcite.convertQueries(String, Prepare.CatalogReader, SqlParser.Config)
and its 5-argconvertQueries(..., SqlValidator, RelOptCluster, SqlParser.Config)overload
To customise parser behaviour, subclass ConverterProvider, override
getSqlParserConfig(), and pass it to the ConverterProvider-based parsing methods.
- core:
Fetch.getOffset()/getCount()now return
Optional<Expression>instead oflong/OptionalLong. The generated
protobuf API also dropsFetchRel.offset/count,
HashJoinRel/MergeJoinRel.left_keys/right_keys,
ReadRel.VirtualTable.values, and
Expression.Literal.IntervalDayToSecond.microseconds. Reading an
IntervalDaytype with an unset precision now throws instead of
defaulting to 6. - core: ** type expressions in extension YAMLs are now parsed
with conventional operator precedence, changing the parse of expressions
that relied on the previous uniform left-to-right precedence. The
generated protobuf API also dropsType.user_defined_type_reference.
Verification
./gradlew :core:check :isthmus:check :core:javadoc, both Spark Scala
variants (spark-3.5_2.12, spark-4.0_2.13), and
examples:substrait-spark all pass.
- core: ** the generated protobuf API drops
Expression.Enum
and the deprecatedargsaccessors on the scalar, window, and aggregate
function messages. UseFunctionArgument(theargumentsfield)
instead.
Verification
./gradlew :core:check :isthmus:check :core:javadoc, both Spark Scala
variants (spark-3.5_2.12, spark-4.0_2.13), and
examples:substrait-spark all pass.
- Isthmus now emits id-based outer references
(rel_anchor / rel_reference) instead of offset-based steps_out. It still
consumes both forms, but downstream consumers that only handle steps_out
must be updated to read rel_reference. Rel also gains an abstract
getRelAnchor() that non-Immutables Rel implementations must implement. - core: remove deprecated Join.JoinType.SEMI/ANTI (#1006)
- isthmus: Converting a Substrait plan that uses
MINUS_MULTISETorINTERSECTION_PRIMARYto Calcite now throws
UnsupportedOperationExceptioninstead of producing an incorrect
Calcite relation. The supported set-difference operations are
MINUS_PRIMARY(Minus all=false) andMINUS_PRIMARY_ALL(Minus all=true); the supported intersection operations are
INTERSECTION_MULTISET(Intersect all=false) and
INTERSECTION_MULTISET_ALL(Intersect all=true).
Features
- core: add TopNRel physical operator (#1007) (daef55b)
- core: bump substrait to v0.91.0 (#1026) (482b898), closes #870 #871
- core: bump substrait to v0.93.0 (#1027) (97db19b), closes #872 #873 #868
- core: bump substrait to v0.95.0 (#1028) (1792014), closes #1107 #863 #965
- core: bump substrait to v0.97.0 (#1032) (598350b)
- core: bump substrait to v0.98.0 (#1033) (a968058)
- id-based outer-reference resolution (Substrait 0.89.0) (#982) (2375c2e), closes #869
- isthmus: inject ConverterProvider into the SQL statement parsers (#1035) (e018342)
- isthmus: map RIGHTSHIFT to Substrait shift_right (#986) (6a44814)
- isthmus: map Substrait concat to Calcite CONCAT_FUNCTION (#1025) (a054f4f)
- isthmus: remove invalid SetOp to Calcite relation mappings (#998) (5281a1c)
Bug Fixes
- core: type outer references against the enclosing scope on proto import (#1034) (1dd1bf6)
- isthmus: elide redundant identity projections (#1009) (aa51ae9)
Code Refactoring
v0.96.0
0.96.0 (2026-07-19)
Features
Bug Fixes
- ci: pin semantic-release tooling and restore v0.95.0 and v0.95.1 notes (#989) (cff0d50)
- isthmus: std_dev, variance function mappings (#780) (17d3c30), closes substrait-io/substrait#1011 substrait-io/substrait#1019 #803 #807 substrait-io/substrait#1012
- isthmus: support variadic concat conversion (#1001) (91bb733)
v0.95.1
v0.95.0
0.95.0 (2026-07-05)
⚠ BREAKING CHANGES
- core: remove deprecated Time, Timestamp, TimestampTZ types and literals (#950)
- deps: Protobuf bindings are now generated using the v4
protobuf libraries, released in March 2024. Ensure that dependent
projects also use the v4 protobuf-java libraries, and be aware of the
breaking changes within the protobuf-java APIs documented at
https://protobuf.dev/news/v26/#java-breaking-changes
Features
- core: add Substrait dialect support (#861) (ff76c77)
- core: remove deprecated Time, Timestamp, TimestampTZ types and literals (#950) (71b940f)
- isthmus: map execution context variables to/from Calcite (#976) (08c2889)
Bug Fixes
- core: add compiled output to javadocImmutable classpath (#953) (1d3ea51)
- core: validate Plan.Root output name count (#812) (4bd6b69)
- isthmus: avoid NPE from dangling correlations left by partial decorrelation (fbf2930)
- isthmus: handle LITERAL_AGG in aggregate conversion (52a32ba)
- isthmus: use reachability-metadata.json for native image build (#979) (a1e48c6)
- isthmus: use Substrait type system when building Calcite RelBuilder (#973) (b370df5), closes #954 #955
Build System
v0.94.0
v0.93.0
0.93.0 (2026-06-14)
⚠ BREAKING CHANGES
- core: protobuf Aggregate.Grouping.grouping_expressions field is no longer supported
- extensions: changes the visibility of the
ScalarFunctionVariant.resolve()function from public to package-private
Features
- core: remove AggregateRel.Grouping.grouping_expressions (#857) (b38ca00)
- extend substrait builder api (#773) (594a168)
- extensions: support deprecation info in extensions (#846) (f7768d9)
- extensions: support impl-level description in extensions (#848) (eb453f2)
- pojo: support plan execution behavior (#791) (50acd03)