Skip to content

Releases: substrait-io/substrait-java

v0.98.0

Choose a tag to compare

@substrait-java-releaser substrait-java-releaser released this 02 Aug 05:28

0.98.0 (2026-08-02)

⚠ BREAKING CHANGES

  • isthmus: the isthmus fat jar (isthmus-<version>-all.jar — the
    all classifier / shadowRuntimeElements variant) is no longer
    published to Maven Central. Consumers that referenced it explicitly
    should depend on the regular isthmus artifact 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

  • isthmus: stop publishing the isthmus fat jar (#1044) (1eb3c54)
  • source spec inputs from substrait-packaging artifacts, drop the submodule (#1043) (8bc8034)

v0.97.0

Choose a tag to compare

@substrait-java-releaser substrait-java-releaser released this 26 Jul 05:28

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 a ConverterProvider:
  • SubstraitSqlStatementParser.parseStatements(String, SqlParser.Config)
  • SubstraitSqlToCalcite.convertQueries(String, Prepare.CatalogReader, SqlParser.Config)
    and its 5-arg convertQueries(..., 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 of long/OptionalLong. The generated
    protobuf API also drops FetchRel.offset/count,
    HashJoinRel/MergeJoinRel.left_keys/right_keys,
    ReadRel.VirtualTable.values, and
    Expression.Literal.IntervalDayToSecond.microseconds. Reading an
    IntervalDay type 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 drops Type.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 deprecated args accessors on the scalar, window, and aggregate
    function messages. Use FunctionArgument (the arguments field)
    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_MULTISET or INTERSECTION_PRIMARY to Calcite now throws
    UnsupportedOperationException instead of producing an incorrect
    Calcite relation. The supported set-difference operations are
    MINUS_PRIMARY (Minus all=false) and MINUS_PRIMARY_ALL (Minus all=true); the supported intersection operations are
    INTERSECTION_MULTISET (Intersect all=false) and
    INTERSECTION_MULTISET_ALL (Intersect all=true).

Features

Bug Fixes

  • core: type outer references against the enclosing scope on proto import (#1034) (1dd1bf6)
  • isthmus: elide redundant identity projections (#1009) (aa51ae9)

Code Refactoring

  • core: remove deprecated Join.JoinType.SEMI/ANTI (#1006) (f625365)

v0.96.0

Choose a tag to compare

@substrait-java-releaser substrait-java-releaser released this 19 Jul 05:17

0.96.0 (2026-07-19)

Features

  • core: support max length, scale, precision in Substrait dialect (#977) (f094981), closes #950 #808

Bug Fixes

v0.95.1

Choose a tag to compare

@substrait-java-releaser substrait-java-releaser released this 12 Jul 05:39

0.95.1 (2026-07-12)

Bug Fixes

v0.95.0

Choose a tag to compare

@substrait-java-releaser substrait-java-releaser released this 05 Jul 06:12

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

Choose a tag to compare

@substrait-java-releaser substrait-java-releaser released this 21 Jun 07:01

0.94.0 (2026-06-21)

Features

  • core: support ExecutionContextVariable (#867) (a649e0d)
  • support new ComparisonJoinKey field in HashJoin/MergeJoin (#845) (9c2c750)

v0.93.0

Choose a tag to compare

@substrait-java-releaser substrait-java-releaser released this 14 Jun 06:49

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)

v0.92.0

Choose a tag to compare

@substrait-java-releaser substrait-java-releaser released this 07 Jun 06:25

0.92.0 (2026-06-07)

Features

  • examples: demonstrate Calcite optimization (#776) (a6a3b79)

v0.91.0

Choose a tag to compare

@substrait-java-releaser substrait-java-releaser released this 24 May 06:10

0.91.0 (2026-05-24)

Features

v0.90.0

Choose a tag to compare

@substrait-java-releaser substrait-java-releaser released this 17 May 06:00

0.90.0 (2026-05-17)

Features

  • core,isthmus: add DynamicParameter expression support (#752) (1770fa4)