Skip to content

Releases: substrait-io/substrait

v0.57.0

02 Oct 18:17
Compare
Choose a tag to compare

0.57.0 (2024-10-02)

⚠ BREAKING CHANGES

  • This PR changes the definition of grouping sets in
    AggregateRel to consist of references into a list of grouping
    expressions instead of consisting of expressions directly.

With the previous definition, consumers had to deduplicate the
expressions in the grouping sets in order to execute the query or even
derive the output schema (which is problematic, as explained below).
With this change, the responsibility of deduplicating expressions is now
on the producer. Concretely, consumers are now expected to be simpler:
The list of grouping expressions immediately provides the information
needed to derive the output schema and the list of grouping sets
explicitly and unambiguously provides the equality of grouping
expressions. Producers now have to specify the grouping sets explicitly.
If their internal representation of grouping sets consists of full
grouping expressions (rather than references), then they must
deduplicate these expressions according to their internal notion of
expression equality in order to produce grouping sets consisting of
references to these deduplicated expressions.

If the previous format is desired, it can be obtained from the new
format by (1) deduplicating the grouping expressions (according to the
previously applicable definition of expression equality), (2)
re-establishing the duplicates using the emit clause, and (3)
"dereferencing" the references in the grouping sets, i.e., by replacing
each reference in the grouping sets with the expression it refers to.

The previous version was problematic because it required the consumers
to deduplicate the expressions from the grouping sets. This, in turn,
requires to parse and understand 100% of these expression even in cases
where that understanding is otherwise optional, which is in opposition
to the general philosophy of allowing for simple-minded consumers. The
new version avoids that problem and, thus, allows consumers to be

Features

  • change grouping expressions in AggregateRel to references (#706) (65a7d38), closes #700
  • clarify behaviour of SetRel operations (#708) (f796521)
  • make substrait repo a go module (#712) (3dca9b5)

v0.56.0

15 Sep 02:47
Compare
Choose a tag to compare

0.56.0 (2024-09-15)

Features

  • add optional metadata containing field names to RelCommon (#696) (5a73281)
  • define mark join (#682) (bc1b93f)

Bug Fixes

  • correct format for nullable interval_day parameters (#687) (8ae1084), closes #679

v0.55.0

18 Aug 02:34
Compare
Choose a tag to compare

0.55.0 (2024-08-18)

Features

  • update interval_day function extensions to include precision param (#679) (28025cb)

v0.54.0

11 Aug 02:36
Compare
Choose a tag to compare

0.54.0 (2024-08-11)

⚠ BREAKING CHANGES

  • The encoding of IntervalDay literals has changed in a
    strictly backwards incompatible way. However, the logical meaning across
    encoding is maintained using a oneof. Moving a field into a oneof makes
    unset/set to zero unclear with older messages but the fields are defined
    such that the logical meaning of the two is indistinct. If neither
    microseconds nor precision is set, the value can be considered a
    precision 6 value. If you aren't using IntervalDay type, you will not
    need to make any changes.
  • TypeExpression and Parameterized type protobufs (used
    to serialize output derivation) are updated to match the now compound
    nature of IntervalDay. If you use protobuf to serialize output
    derivation that refer to IntervalDay type, you will need to rework that
    logic.
  • JoinRel's type enum now has LEFT_SINGLE
    instead of SINGLE. Similarly there is now LEFT_ANTI and LEFT_SEMI.
    Other values are available in all join type enums. This affects JSON and
    text formats only (binary plans -- the interoperable part of Substrait --
    will still be compatible before and after this change).

Features

  • add arithmetic function "power" with decimal type (#660) (9af2d66)
  • add CSV (text) file support (#646) (5d49e04)
  • add precision to IntervalDay and new IntervalCompound type (#665) (e41eff2), closes #664
  • normalize the join types (#662) (bed84ec)

v0.53.0

04 Aug 02:34
Compare
Choose a tag to compare

0.53.0 (2024-08-04)

⚠ BREAKING CHANGES

  • PrecisionTimestamp(Tz) literal's value is now int64
    instead of uint64

Features

  • add aggregate count functions with decimal return type (#670) (2aa516b)
  • add arithmetic function "sqrt" and "factorial" with decimal type (#674) (e4f5b68)
  • add arithmetic function for bitwise(AND/OR/XOR) operation with decimal arguments (#675) (a70cf72)
  • add logarithmic functions with decimal type args (#669) (d9fb1e3)
  • add precision timestamp datetime fn variants (#666) (60c93d2)
  • clarify the meaning of plans (#616) (c1553df), closes #612 #613

Bug Fixes

  • use int64 instead of uint64 for PrecisionTimestamp(Tz) literal value (#668) (da3c74e)

v0.52.0

14 Jul 02:37
Compare
Choose a tag to compare

0.52.0 (2024-07-14)

⚠ BREAKING CHANGES

  • changes the message type for Literal PrecisionTimestamp
    and PrecisionTimestampTZ

The PrecisionTimestamp and PrecisionTimestampTZ literals were introduced

Bug Fixes

v0.51.0

07 Jul 02:32
Compare
Choose a tag to compare

0.51.0 (2024-07-07)

Features

v0.50.0

30 Jun 02:32
Compare
Choose a tag to compare

0.50.0 (2024-06-30)

⚠ BREAKING CHANGES

  • consumers must now check for multiple optimization
    messages within an AdvancedExtension

Features

v0.49.0

23 May 07:45
Compare
Choose a tag to compare

0.49.0 (2024-05-23)

Features

Bug Fixes

v0.48.0

25 Apr 20:02
Compare
Choose a tag to compare

0.48.0 (2024-04-25)

⚠ BREAKING CHANGES

  • min:ts has been moved to functions_datetime
  • max:ts has been moved to functions_datetime

Bug Fixes

  • duplicate declaration of min:ts and max:ts (#631) (7fc86f8)