Proto commits in substrait-io/substrait

These commits are when the Protocol Buffers files have changed: (only the last 100 relevant commits are shown)

Commit:0c266da
Author:YongChul Kwon

refactor(proto): clarify plan function definition naming Rename PlanFunction to PlanFunctionDefinition and describe the feature consistently as plan-defined functions.

Commit:c58cddd
Author:YongChul Kwon

feat(proto): name plan-scoped functions Add an optional diagnostic name that has no semantic identity and is not required to be unique.

Commit:f5134f7
Author:YongChul Kwon

feat(proto): support plan-scoped functions Allow plans to define typed expression functions once and invoke them by anchor from multiple call sites. Plan-function anchors use a namespace separate from extension functions, and definitions remain inlineable through closed, acyclic references. Closes #1220

Commit:0a97678
Author:YongChul Kwon

refactor(proto): compact detached expression field

Commit:1b5802e
Author:YongChul Kwon

refactor(proto): focus detachment on expressions

Commit:b7d147b
Author:YongChul Kwon

refactor(proto): inline detached subtree ordinals

Commit:5f575b5
Author:YongChul Kwon

feat(proto): support detached plan subtrees

Commit:6aa8932
Author:Ben Bellick
Committer:GitHub

docs: document protobuf field replacement migrations (#1181) Define a standard migration sequence for replacing protobuf fields. This keeps field documentation focused on field-specific behavior instead of repeating general migration guidance.

The documentation is generated from this commit.

Commit:48f6348
Author:Ben Bellick

docs: centralize window bound migration guidance

The documentation is generated from this commit.

Commit:6706015
Author:YongChul Kwon
Committer:GitHub

feat(protos)!: support expression in window aggregate bounds (#1105) # Motivation Like #748 in FetchRel, `offset` can be expressions in window spec. # Proposal * Extend the offset to expression, the same way we did for FetchRel. * deprecate offset from preceding and following message. * Clarify window frame bound documentation especially around window frame, ordering, and current rows. The proto and documentation changes closes #617 and #930 BREAKING CHANGE: deprecates the `offset` field of the `Preceding` and `Following` window bounds in favor of the new `offset_expr` field, which accepts an arbitrary expression instead of an integer literal. Consumers should add `offset_expr` support before producers switch to it. The PR also requires explicit window frame bounds type. Producers should set the bounds type and Consumers should reject `BOUNDS_TYPE_UNSPECIFIED` in such cases. <!-- Reviewable:start --> - - - This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/substrait-io/substrait/1105) <!-- Reviewable:end --> --------- Co-authored-by: Ben Bellick <36523439+benbellick@users.noreply.github.com> Co-authored-by: Niels Pardon <mail@niels-pardon.de> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>

Commit:5970d5c
Author:YongChul Kwon
Committer:YongChul Kwon

fix new lines. mandate setting bounds type

Commit:02977f4
Author:YongChul Kwon
Committer:GitHub

Apply suggestions from code review Co-authored-by: Ben Bellick <36523439+benbellick@users.noreply.github.com> Co-authored-by: Niels Pardon <mail@niels-pardon.de>

Commit:16ce6ed
Author:YongChul Kwon
Committer:GitHub

Merge branch 'main' into window_agg_exprs

Commit:8fa4079
Author:YongChul Kwon
Committer:GitHub

Apply suggestions from code review Co-authored-by: Ben Bellick <36523439+benbellick@users.noreply.github.com>

Commit:25940fb
Author:Niels Pardon
Committer:GitHub

feat(protos)!: deprecate OuterReference.steps_out in favor of rel_reference (#1132) BREAKING CHANGE: `Expression.FieldReference.OuterReference.steps_out` is deprecated in favor of `rel_reference`, which names the binding relation via its plan-wide unique `RelCommon.rel_anchor` and therefore resolves unambiguously in DAG-shaped plans with shared relations (`ReferenceRel`), where counting subquery boundaries upward does not. Consumers should add `rel_reference` support before producers switch to it. Note that both fields are members of the same `outer_reference_type` oneof, so a plan cannot carry both forms at once: the migration is consumer-first rather than dual-write. Nothing is removed by this change: the deprecation is metadata only, consumers are not required to understand or validate it, and no existing plan changes meaning. `steps_out` remains fully functional and is scheduled for removal in a later release.

Commit:e0440eb
Author:YongChul Kwon

Clarify window bound documentation

Commit:4c62b5d
Author:YongChul Kwon

more edits. revert pyproject.toml

Commit:52eb70b
Author:YongChul Kwon
Committer:GitHub

Apply suggestions from code review Co-authored-by: Niels Pardon <mail@niels-pardon.de>

Commit:2a15218
Author:copilot-swe-agent[bot]
Committer:GitHub

Clarify null offset expression comments Co-authored-by: yongchul <1606237+yongchul@users.noreply.github.com>

Commit:6f02d4f
Author:copilot-swe-agent[bot]
Committer:GitHub

Restore UpdateRel common field Co-authored-by: yongchul <1606237+yongchul@users.noreply.github.com>

Commit:e1fa40d
Author:copilot-swe-agent[bot]
Committer:GitHub

Clarify window offset bound guidance Co-authored-by: yongchul <1606237+yongchul@users.noreply.github.com>

Commit:df74360
Author:YongChul Kwon

Further tighten comment and documentation

Commit:9614fc2
Author:YongChul Kwon
Committer:GitHub

Apply suggestions from code review Co-authored-by: Niels Pardon <mail@niels-pardon.de>

Commit:d10aa14
Author:YongChul Kwon

tweak some wordings

Commit:cdf0102
Author:Niels Pardon
Committer:GitHub

fix: add missing RelCommon field to UpdateRel (#1168)

Commit:e205e90
Author:copilot-swe-agent[bot]
Committer:GitHub

fix: normalize algebra proto line ending Co-authored-by: yongchul <1606237+yongchul@users.noreply.github.com>

Commit:5222bbb
Author:YongChul Kwon
Committer:GitHub

Merge branch 'main' into window_agg_exprs

Commit:d0885be
Author:YongChul Kwon
Committer:GitHub

Apply suggestions from code review Co-authored-by: Ben Bellick <36523439+benbellick@users.noreply.github.com> Co-authored-by: Niels Pardon <mail@niels-pardon.de>

Commit:4d5d57a
Author:Niels Pardon
Committer:GitHub

feat: add advanced_extension to ExpandRel (#1167)

Commit:a902858
Author:Niels Pardon
Committer:GitHub

docs: clarify that an unset RelCommon.emit_kind means Direct (#1142)

Commit:0cc4341
Author:YongChul Kwon

Revise documentation and comments around window frame bounds

Commit:450bcc2
Author:YongChul Kwon
Committer:GitHub

Apply suggestions from code review Co-authored-by: Ben Bellick <36523439+benbellick@users.noreply.github.com>

Commit:5153493
Author:Mohammad Linjawi
Committer:GitHub

feat: add unbound type for partially bound plans (#1081)

Commit:08b2736
Author:Niels Pardon
Committer:GitHub

feat(protos)!: remove deprecated left_keys/right_keys from join rels (#1129) BREAKING CHANGE: The deprecated `left_keys` and `right_keys` fields have been removed from `HashJoinRel` and `MergeJoinRel`. Producers must use the `keys` field instead.

Commit:b7e8d02
Author:Niels Pardon
Committer:GitHub

feat(protos)!: remove deprecated offset/count from FetchRel (#1130) BREAKING CHANGE: The deprecated `offset` and `count` fields have been removed from `FetchRel`. Producers must use `offset_expr` and `count_expr` instead.

Commit:7b0bd66
Author:Niels Pardon
Committer:GitHub

feat(protos)!: remove deprecated VirtualTable.values field (#1131)

Commit:4032b43
Author:YongChul Kwon

remove oneof and deprecated the explicit offset

Commit:a4ad9f4
Author:Niels Pardon
Committer:GitHub

feat(protos)!: remove deprecated IntervalDayToSecond.microseconds field (#1116)

Commit:858397d
Author:Niels Pardon
Committer:GitHub

feat(protos)!: require explicit interval precision and allow picoseconds (#1110) BREAKING CHANGE: An unset `IntervalDay.precision` no longer has a defined meaning. Previously an unset precision was treated as `6` (microseconds); implementations should now reject an unset precision instead of applying a default. Producers must set `precision` explicitly.

Commit:3ae33e7
Author:YongChul Kwon
Committer:GitHub

feat: introduce LateralJoinRel for a correlated subquery evaluation (#973) # Background SQL or relational query plan may have subqueries. Some subqueries can be easily decorrelated in terms of joins but in other cases it is non-trivial to do such rewriting. Some queries can be de-correlated (i.e., rewritten as a join) but sometimes it is non-trivial to decorrelate complex subqueries. ApplyRel is one of the way to model a generic correlated subquery execution and implemented in multiple systems (e.g., Google Spanner, Oracle, SQL Server family). The semantic of apply is that the subquery is executed per row from the input rather than operating on set of the rows at a time like join. The subquery can reference columns in the input row as outer references (thus each subquery is *correlated* to each input row). Apply operation is inherently expensive thus typically used in a special context such as index lookup join or in a pinch where a system couldn't decorrelate the operation. # Proposal ~~Extend JoinRel with `lateral` flag to represent lateral join.~~ `LATERAL` keyword was introduced in SQL 99, as part of table reference. When the table source is wrapped with LATERAL, the subquery *MAY* reference columns and tables preceding the LATERAL table reference, and allows correlated subquery. ~~By this nature of scoping of tables and references, we propose to extend `JoinRel` with lateral flag to denote lateral join, and let right input as the correlated subquery, which can reference the fields from left input.~~ ~~In this way, we reuse all the join semantics automatically without introducing a dedicated Rel.~~ ~~Same change was made to CrossRel.~~ We decided to introduce a new LateralJoinRel for clarity and to ease handling the new semantic in existing consumers. The change is backward compatible. This PR depends on #1031 . # AI disclaimer This PR was assisted by Claude Opus 4.6. <!-- Reviewable:start --> - - - This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/substrait-io/substrait/973) <!-- Reviewable:end --> --------- Co-authored-by: Victor Barua <victor.barua@datadoghq.com> Co-authored-by: Ben Bellick <36523439+benbellick@users.noreply.github.com>

Commit:0cdad6d
Author:Niels Pardon
Committer:GitHub

feat(protos)!: remove deprecated Type.user_defined_type_reference field (#1095) BREAKING CHANGE: removes deprecated Type.user_defined_type_reference field

Commit:11b7b86
Author:YongChul Kwon

feat: support expression in preceding and following window bound

Commit:67fa8af
Author:Ben Bellick
Committer:GitHub

docs: require matching root relation names (#1101)

Commit:f149482
Author:Niels Pardon
Committer:GitHub

feat(protos): remove deprecated Expression.Enum message (#1086) BREAKING CHANGE: removes deprecated Expression.Enum message

Commit:d90dfcb
Author:Victor Barua
Committer:GitHub

feat(protos): remove deprecated args fields (#1085) BREAKING CHANGE: removed args field from ScalarFunction BREAKING CHANGE: removed args field from AggregateFunction BREAKING CHANGE: removed args field from WindowFunction

Commit:51ff9fa
Author:Ben Bellick
Committer:GitHub

feat(docs): clarify distinction between enumeration arguments and options (#1005)

Commit:102520b
Author:Ben Bellick
Committer:GitHub

docs: fix duplicate words in spec (#1079)

Commit:f7b939c
Author:YongChul Kwon
Committer:GitHub

feat: clarify post_join_filter. add residual_expressions to hash join and merge join (#1044) # Background JoinRel, HashJoinRel, and MergeJoinRel have a field named`post_join_filter`, causing confusion. The confusing point is whether `post_join_filter` is part of the join predicate (i.e., two rows are **matched** when it evaluates to `true`) or not (i.e., as the name says, this is **post** join filter, thus `filter` evaluates after the join operation). Substrait [FAQ](https://substrait.io/faq/#what-is-the-purpose-of-the-post-join-filter-field-on-join-relations) calls out that the `post_join_filter` is part of join predicate but @yongchul was deeply discontent about the explanation and the naming. After lengthy discussion in the Slack channel, #807 was created. After more back-and-forth, the original intent of `post_join_filter` was indeed [**post** join filter, not part of join predicate](https://github.com/substrait-io/substrait/pull/807#issuecomment-4230380222). Also, it appears that Calcite has precisely the same name and same semantic, post join filter. Following code point shows placing the filter on top of the join. https://github.com/apache/calcite/blob/0a39568b167592ded8db1128b5838982ffe264f3/core/src/main/java/org/apache/calcite/rel/rules/LoptOptimizeJoinRule.java#L553-L559 # What this changes do? TL;DR; Make `post_join_filter` as `post_join_filter` again. 1. Documents `post_join_filter` is not join condition but semantically filter on top of join. 2. Introduce `residual_expression` to HashJoinRel and MergeJoinRel so that they can express non-equality join predicate -- I guess this was the confusion who tried to shove non-equality join predicate to `HashJoin` and `MergeJoin` somewhere and distorted the meaning without much thought. 3. Drop `equi` from hash join and merge join documentation as with `residual_expression` they are capable of supporting arbitrary join predicate. 4. Fix the FAQ. # Breaking change? This is debatable. According to previous FAQ, `post_join_filter` was `residual_expression` introduced in this PR. If we take the FAQ as part of the "spec", then this is a breaking change. If we don't consider FAQ as a spec, then this is not a breaking change but clarification and adding a new feature -- HashJoinRel, MergeJoinRel now supports arbitrary join predicate. # AI disclaimer The PR is assisted by Claud Opus 4.6. <!-- Reviewable:start --> - - - This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/substrait-io/substrait/1044) <!-- Reviewable:end -->

Commit:cb57039
Author:Ben Bellick
Committer:GitHub

docs: clarify output schema handling for extension relations (#1018)

Commit:ad664dc
Author:YongChul Kwon
Committer:GitHub

feat!: add id-based outer reference resolution for DAG plans (#1031) BREAKING CHANGE: NOT A REAL BREAKING CHANGE. OuterReference.steps_out field is now under oneof -- implicit optional to explicit optional. This is not a real breaking change as Substrait always required non-zero value. Add optional RelCommon.id field and OuterReference.id_reference to support unambiguous outer reference resolution in plans with common subexpressions (ReferenceRel). The existing steps_out offset-based mechanism remains for backward compatibility with tree-shaped plans. The `RelCommon.rel_anchor` can be used for other purpose but for now only required when it is used to resolve outer reference. See #1024 for detailed motivating example and discussion. # AI disclaimer This PR was assisted by Claude Opus 4.6. # NOT A REAL BREAKING CHANGE `OuterReference.steps_out` field is moved into `oneof`. The field requires non-zero values thus there is no wire format change (the value has been *always* present on the wire for `steps_out` when used). <!-- Reviewable:start --> - - - This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/substrait-io/substrait/1031) <!-- Reviewable:end --> --------- Co-authored-by: Ben Bellick <36523439+benbellick@users.noreply.github.com>

Commit:87d73b6
Author:Niels Pardon
Committer:GitHub

feat!: remove deprecated time, timestamp and timestamp_tz types (#994) BREAKING CHANGE: removes the deprecated `time`, `timestamp` and `timestamp_tz` types from: - proto files - dialect schema - extension yamls - ANTLR grammar - test cases - coverage python code - documentation closes #980 Signed-off-by: Niels Pardon <par@zurich.ibm.com>

Commit:6cf8ff3
Author:Jesús Camacho Rodríguez
Committer:GitHub

feat: add TopNRel physical operator with WITH TIES support (#1009)

Commit:c82f39a
Author:Niels Pardon
Committer:GitHub

feat!: removed AggregateRel.Grouping.grouping_expressions (#1002) Use AggregateRel.grouping_expressions along with AggregateRel.Grouping.expression_references instead BREAKING CHANGE: removed Aggregate.Grouping.grouping_expressions field

Commit:90e5790
Author:Victor Barua

feat: add literal based encoding for UDT

Commit:6b98c27
Author:Niels Pardon
Committer:GitHub

feat: introduce ExecutionContextVariable and ExecutionBehaviour #945) ExecutionContextVariable is a new expression introduced to handle common SQL function likes: * current_date: retrieving the current date * current_timestamp: retrieving the timestamp with and without applying a timezone * current_timezone: retrieving the local timezone These functions are special because some systems evaluate them per row, and some evaluate once them per transaction/execution and re-use the value. The evaluation mode for ExecutionContextVariables is expressed via the plan-level ExecutionBehaviour message, which captures the different evaluation modes available.

Commit:1e9860c
Author:Ben Bellick

docs: adopt canonical URN format urn:substrait:extension:<namespace>:<id> - Update documentation to define canonical URN format - Add backwards compatibility note for extension: prefix - Update all extension YAML files to use canonical form - Update schema to enforce canonical format

Commit:de7373b
Author:Ben Bellick

Merge remote-tracking branch 'origin/main' into ben.bellick/clarify-urn-structure

Commit:ada68a8
Author:Ben Bellick
Committer:GitHub

feat: only use urns for referencing simple extensions (#971) BREAKING CHANGE: drops uri fields from protobufs

Commit:dc27654
Author:Niels Pardon
Committer:GitHub

feat(proto): deprecate time type and literal (#985) PrecisionTime should be used instead of Time

Commit:2f56f4c
Author:Niels Pardon
Committer:GitHub

docs: fix typo mentioning interval_month instead of interval_year (#962)

Commit:7636cee
Author:Ben Bellick
Committer:GitHub

docs: consistently mark 0 as valid, but not preferred, anchor/reference value (#900)

Commit:23ac2f3
Author:Niels Pardon
Committer:GitHub

feat!: remove capabilities.proto (#952) The Substrait capabilities protobuf data structure has been replaced by the Substrait dialect in #816. BREAKING CHANGE: removes capabilities.proto and corresponding documentation Signed-off-by: Niels Pardon <par@zurich.ibm.com>

Commit:788faab
Author:Niels Pardon
Committer:GitHub

feat!: remove unused function.proto, parameterized_types.proto, type_expressions.proto (#940) The clarification question asked in https://github.com/substrait-io/substrait/issues/849 raised awareness to me about the following three proto files we include the Substrait specification which do not seem to be used: - https://github.com/substrait-io/substrait/blob/c37d459e93875c33c7b728c3deb7c9bfe5fc7694/proto/substrait/function.proto - https://github.com/substrait-io/substrait/blob/c37d459e93875c33c7b728c3deb7c9bfe5fc7694/proto/substrait/type_expressions.proto - https://github.com/substrait-io/substrait/blob/c37d459e93875c33c7b728c3deb7c9bfe5fc7694/proto/substrait/parameterized_types.proto BREAKING CHANGE: I would propose to remove these proto definitions if they are not used / no longer part of the spec. --------- Signed-off-by: Niels Pardon <par@zurich.ibm.com>

Commit:e918c46
Author:Ben Bellick

fix @vbarua comment

Commit:85975f8
Author:Ben Bellick

feat: allow multiple order-by in number-less window fns

Commit:e47197c
Author:Ben Bellick
Committer:GitHub

feat: introduce lambda expressions (#889)

Commit:03a9d7f
Author:Ben Bellick

tweak: use more restricive URN regex w/o capital letters `^extension:[a-z0-9_.-]+:[a-z0-9_.-]+$`

Commit:fef19a6
Author:Ben Bellick

Merge branch 'main' into ben.bellick/clarify-urn-structure

Commit:8247607
Author:Ben Bellick
Committer:Ben Bellick

docs: clarify URN required format with regex The required regex is: ^extension:[^:]+:[^:]+$

Commit:cd99f03
Author:YongChul Kwon
Committer:GitHub

feat: support type alias in user defined literal (#868) BREAKING CHANGE: `type_reference` with value **0** is encoded differently on wire. However, the usage of `type_reference` in generated consumer code does not break in practice. **New consumer should consider `type_reference` is set to zero when no oneof is set.** See [Wire Encoding Change](#Wire-Encoding-Change) for detail. # Motivation #857 introduced type alias concept but not plumbed all the way through. User defined literal inlines substrait.Type thus can't use type alias where it probably needs the most. Because of how the current message is defined, it is controversial how we add the type alias support, thus here is the PR for that to discuss and finalize. # Proposal I see at least three options. 1. Make `type_reference` and `type_alias_reference` as oneof. 2. Create a new user defined message that only supporting type alias. This is the cleanest at the cost leaving two ways of specify user defined literal. 3. Introduce `type_alias_anchor` to existing UD literal message. wave hands in the comment to say that "hey! this is actually oneof of `type_anchor` and when set `type_parameters` are ignored!" My preference is 1 > 2 >> 3. * The first option is more future proof especially when we extend the type alias to encode partial alias -- then the type alias *can* use subset of type parameters. * It is also easier to incorporate by implementers by slightly extending existing UD literal code. * We do not have extra message. # Wire Encoding Change Option 1 with oneof is technically a breaking change when `type_reference` value is **0** in terms of strict wire protocol. However, this is not a real breaking change in practice. Below we list the scenarios around existing `type_reference` with value **0**. ## Old producer -> New consumer New consumer will see neither `type_reference` nor `type_alias_reference` are set. The new consumer should consider this as **type_reference is set to zero**. Assuming the new consumer does not update the code (just recompile with new proto definition), access to `type_reference` will return the default value *0*. ## New producer -> Old consumer New producer will set with explicit existence bit when zero is set for `type_reference`. The old consumer will still see zero.

Commit:99e8a7f
Author:Ben Bellick

docs: improve documentation surrounding urns

Commit:2b2591c
Author:Ben Bellick
Committer:Ben Bellick

docs: clarify valid URNs

Commit:1635a4d
Author:Ben Bellick
Committer:Ben Bellick

feat: introduction of simple table functions introduces a notion of YAML-defined functions which are represented as a new `TableFunctionRel`. Closes #823

Commit:73b0885
Author:Ben Bellick
Committer:Ben Bellick

feat: introduction of simple table functions introduces a notion of YAML-defined functions which are represented as a new `TableFunctionRel`. Closes #823

Commit:22c8d46
Author:Ben Bellick
Committer:GitHub

docs: clarify meaning of LocalFiles (#871) Closes #869 This change clarifies the documentation surrounding `LocalFiles`. It will be clearer that `LocalFiles` can also include references to blob storage etc. as specified by the URI's protocol. It also moves the duplication of the `ReadRel` proto in the documentation to the end of the section to be consistent with other `*Rel`s documetation.

Commit:b958843
Author:Victor Barua
Committer:GitHub

docs: clarify function signatures for variadic functions (#863)

Commit:dfd04c1
Author:YongChul Kwon
Committer:GitHub

feat: per plan type aliases (#857)

Commit:4c9907c
Author:Victor Barua

refactor: drop dialect from Plan message

Commit:803a584
Author:Victor Barua

fix: update dialect field number

Commit:bddffdd
Author:Victor Barua
Committer:Victor Barua

docs: clarify function signatures for variadic functions

Commit:9ea478a
Author:YongChul Kwon
Committer:GitHub

feat: add AdvancedExtension to SavedComputation and LoadedComputation (#858)

Commit:06cadc8
Author:Ben Bellick
Committer:GitHub

feat: canonicalize extension URNs (#859) Introduces the notion of URNs to uniquely identify extensions. As part of the migration towards URNs and away from the current URIs, all references to URIs have a corresponding URN reference introduced in a neighboring field. The URI-fields have all been marked as deprecated. All usages of URIs will be dropped in future work after a migration period.

Commit:12f088e
Author:David Sisson

remove version from the dialect reference in the Plan proto

Commit:3160468
Author:David Sisson
Committer:David Sisson

feat: create JSON schema to define Substrait dialects (YAML) This extends the dialect files previously introduced in Substrait Go.

Commit:0c4b658
Author:YongChul Kwon
Committer:GitHub

feat: specify build input of hash join operator (#810) # Background Substrait declares build is right and probe is left today. Unfortunately there are other systems (SQL Server family, Oracle, Snowflake, Google Cloud Spanner, etc) chose opposite side and it is a major headache for those systems to deal with the mirror images. # Proposal Adding a `build_left` field to signify which side is the build of the hash join. Default (false) implies the current behavior. Left and right does not change. Spark SQL/Spanner employs this approach and be flexible. The change is backward/binary compatible.

Commit:f081cb4
Author:Victor Barua
Committer:GitHub

build: update go_package of .proto files to substrait-protobuf (#804) BREAKING CHANGE: go_package now points to substrait-protobuf

Commit:77580eb
Author:Victor Barua
Committer:Victor Barua

feat: update proto go_package for substrait-protobufs

Commit:8b74245
Author:Victor Barua

feat: consolidate JoinType into a top-level enum

Commit:2755af5
Author:Bryce Mecum
Committer:GitHub

docs: add comment to NamedSchema about struct nullability (#789) Closes https://github.com/substrait-io/substrait/issues/787.

Commit:1f67065
Author:David Sisson
Committer:GitHub

feat: implement PrecisionTime (#788)

Commit:fdf1b38
Author:Jesús Camacho Rodríguez
Committer:GitHub

feat: add dynamic parameter expression (#780) feat: This PR adds a dynamic parameter expression to Substrait. A dynamic parameter expression represents a placeholder within an expression whose value is determined at runtime. This is particularly useful for parameterized queries where certain values are not known until execution. Additionally, using dynamic parameters can enable other use cases, such as sharing execution plans without embedding sensitive information.

Commit:dbce0bd
Author:Abbas Gadhia
Committer:GitHub

feat: support picoseconds in precisionTimestamp and precistionTimestampTZ (#777)

Commit:a428f96
Author:Jesús Camacho Rodríguez
Committer:GitHub

feat: add advanced extension field to DdlRel, WriteRel, and UpdateRel (#766)

Commit:7434e2f
Author:Jacques Nadeau
Committer:GitHub

feat: introduce Iceberg table type using metadata file (#758) Adds Iceberg table type and first sub-variety, reading manifest files directly.

Commit:bd4b431
Author:Jesús Camacho Rodríguez
Committer:GitHub

feat: add expression support for count and offset in the fetch operator (#748) * Update FetchRel in Substrait to support expressions for both offset and count. This is done in a way that should be effectively compatible with old systems. Old plans should be able to continue to be consumed treating the old values as int64. BREAKING CHANGE: The encoding of FetchRel has changed in a strictly backwards incompatible way. The change involves transitioning offset and count from a standalone int64 field to a oneof structure, where the original int64 field is marked as deprecated, and a new field of Expression type is introduced. Using a oneof may cause ambiguity between unset and set-to-zero states in older messages. However, the fields are defined such that their logical meaning remains indistinguishable, ensuring consistency across encodings.

Commit:adb1079
Author:Chandra Sanapala
Committer:GitHub

feat: update operator to update a table (#734)

Commit:2e13d0b
Author:Chandra Sanapala
Committer:GitHub

feat: add CreateMode for CTAS in WriteRel (#715)

Commit:a2df42c
Author:anshuldata
Committer:GitHub

fix: virtualTable expression should represent a row of expression (#727) BREAKING CHANGE: changes the message type for Expressions field in VirtualTable

Commit:e386a29
Author:David Sisson
Committer:GitHub

feat: define sideband optimization hints (#705)

Commit:954bcbc
Author:anshuldata
Committer:GitHub

feat: enhance VirtualTable to have expression as value (#711) * This enables expressing Virtual table having values as expression * Example query: `select * from (values (1+2, 'Hello'||'World'))` * Mark existing literal field "values" as deprecated