From ff7fad15a5f69f491be99369c5f3dc7818eccb84 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Fri, 24 Feb 2023 14:46:27 +0000 Subject: [PATCH] Update internal substrait version to 0.24.0 (#247) * Run update-substrait.R * Add in missing library * Update version to 0.24.0 * Add in well-known types --- data-raw/update-substrait.R | 3 +- inst/substrait/CHANGELOG.md | 42 +++ inst/substrait/ci/commit_messages.sh | 17 -- .../extensions/functions_arithmetic.yaml | 112 ++++++++ .../functions_arithmetic_decimal.yaml | 12 +- .../extensions/functions_rounding.yaml | 241 ++++++++++++++++++ .../extensions/functions_string.yaml | 2 +- inst/substrait/proto/substrait/algebra.proto | 100 ++++++++ .../proto/substrait/extended_expression.proto | 51 ++++ .../text/simple_extensions_schema.yaml | 1 + inst/substrait/types_gen.txt | 11 + 11 files changed, 567 insertions(+), 25 deletions(-) delete mode 100644 inst/substrait/ci/commit_messages.sh create mode 100644 inst/substrait/proto/substrait/extended_expression.proto diff --git a/data-raw/update-substrait.R b/data-raw/update-substrait.R index 5eeb5906..9ed3c03f 100644 --- a/data-raw/update-substrait.R +++ b/data-raw/update-substrait.R @@ -1,8 +1,9 @@ # Update the substrait .proto files ---- # Requirements: the protoc command-line utility; python3 with pip3 install protobuf +library(dplyr) -VERSION <- "0.20.0" +VERSION <- "0.24.0" curl::curl_download( glue::glue("https://github.com/substrait-io/substrait/archive/refs/tags/v{VERSION}.zip"), diff --git a/inst/substrait/CHANGELOG.md b/inst/substrait/CHANGELOG.md index 42d12bd3..371088c9 100644 --- a/inst/substrait/CHANGELOG.md +++ b/inst/substrait/CHANGELOG.md @@ -1,6 +1,48 @@ Release Notes --- +## [0.24.0](https://github.com/substrait-io/substrait/compare/v0.23.0...v0.24.0) (2023-02-12) + + +### Features + +* add round function ([#322](https://github.com/substrait-io/substrait/issues/322)) ([57121c8](https://github.com/substrait-io/substrait/commit/57121c8ca6f1fe815e98eda8962f8f84736c58e2)) + +## [0.23.0](https://github.com/substrait-io/substrait/compare/v0.22.0...v0.23.0) (2023-01-22) + + +### Features + +* add extended expression for expression only evaluation ([#405](https://github.com/substrait-io/substrait/issues/405)) ([d35f0ed](https://github.com/substrait-io/substrait/commit/d35f0ed98ccefe31a90d53ff887402636a74bbd1)) +* **spec:** add physical plans for hashJoin and mergeJoin ([#336](https://github.com/substrait-io/substrait/issues/336)) ([431651e](https://github.com/substrait-io/substrait/commit/431651efbd64958d2611b035ffdb25f589b28477)) + + +### Bug Fixes + +* update extension yaml files to match type-syntax spec ([#423](https://github.com/substrait-io/substrait/issues/423)) ([0608878](https://github.com/substrait-io/substrait/commit/0608878b25e7f9b4b3ffe33662eea9ef0f016548)) + +## [0.22.0](https://github.com/substrait-io/substrait/compare/v0.21.1...v0.22.0) (2022-12-18) + + +### Features + +* add bitwise NOT, AND, OR & XOR functions ([#370](https://github.com/substrait-io/substrait/issues/370)) ([81e34d4](https://github.com/substrait-io/substrait/commit/81e34d4054ff0dbde23ac749fbb8fcc232989c5d)) + +## [0.21.1](https://github.com/substrait-io/substrait/compare/v0.21.0...v0.21.1) (2022-12-04) + + +### Bug Fixes + +* rename regex_string_split to regexp_string_split ([#393](https://github.com/substrait-io/substrait/issues/393)) ([f9f4967](https://github.com/substrait-io/substrait/commit/f9f4967e6785b49eccb64a42497b5b4aaffa63ff)) + +## [0.21.0](https://github.com/substrait-io/substrait/compare/v0.20.0...v0.21.0) (2022-11-27) + + +### Features + +* add nested type constructor expressions ([#351](https://github.com/substrait-io/substrait/issues/351)) ([b64d30b](https://github.com/substrait-io/substrait/commit/b64d30b28077973dd94f1f49e5016662a35bcf56)) +* add title to simple extensions schema ([#387](https://github.com/substrait-io/substrait/issues/387)) ([2819ecc](https://github.com/substrait-io/substrait/commit/2819ecc69175b96eefb8a73fb4b533431890f3da)) + ## [0.20.0](https://github.com/substrait-io/substrait/compare/v0.19.0...v0.20.0) (2022-11-20) diff --git a/inst/substrait/ci/commit_messages.sh b/inst/substrait/ci/commit_messages.sh deleted file mode 100644 index 928a715b..00000000 --- a/inst/substrait/ci/commit_messages.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash -# shellcheck shell=bash - -set -euo pipefail - -url="${1}" -page=1 - -while true; do - json="$(curl -LsS "${url}?page=${page}")" - len="$(jq length <<< "$json")" - if [ "$len" -eq "0" ]; then - break - fi - ((++page)) - jq -rcM '.[].commit.message' <<< "$json" -done diff --git a/inst/substrait/extensions/functions_arithmetic.yaml b/inst/substrait/extensions/functions_arithmetic.yaml index 83c02671..eaa66ea2 100644 --- a/inst/substrait/extensions/functions_arithmetic.yaml +++ b/inst/substrait/extensions/functions_arithmetic.yaml @@ -745,6 +745,118 @@ scalar_functions: overflow: values: [ SILENT, SATURATE, ERROR ] return: i64 + - + name: "bitwise_not" + description: > + Return the bitwise NOT result for one integer input. + + impls: + - args: + - name: x + value: i8 + return: i8 + - args: + - name: x + value: i16 + return: i16 + - args: + - name: x + value: i32 + return: i32 + - args: + - name: x + value: i64 + return: i64 + - + name: "bitwise_and" + description: > + Return the bitwise AND result for two integer inputs. + + impls: + - args: + - name: x + value: i8 + - name: y + value: i8 + return: i8 + - args: + - name: x + value: i16 + - name: y + value: i16 + return: i16 + - args: + - name: x + value: i32 + - name: y + value: i32 + return: i32 + - args: + - name: x + value: i64 + - name: y + value: i64 + return: i64 + - + name: "bitwise_or" + description: > + Return the bitwise OR result for two given integer inputs. + + impls: + - args: + - name: x + value: i8 + - name: y + value: i8 + return: i8 + - args: + - name: x + value: i16 + - name: y + value: i16 + return: i16 + - args: + - name: x + value: i32 + - name: y + value: i32 + return: i32 + - args: + - name: x + value: i64 + - name: y + value: i64 + return: i64 + - + name: "bitwise_xor" + description: > + Return the bitwise XOR result for two integer inputs. + + impls: + - args: + - name: x + value: i8 + - name: y + value: i8 + return: i8 + - args: + - name: x + value: i16 + - name: y + value: i16 + return: i16 + - args: + - name: x + value: i32 + - name: y + value: i32 + return: i32 + - args: + - name: x + value: i64 + - name: y + value: i64 + return: i64 aggregate_functions: - name: "sum" diff --git a/inst/substrait/extensions/functions_arithmetic_decimal.yaml b/inst/substrait/extensions/functions_arithmetic_decimal.yaml index 13fb2e14..0fc4caae 100644 --- a/inst/substrait/extensions/functions_arithmetic_decimal.yaml +++ b/inst/substrait/extensions/functions_arithmetic_decimal.yaml @@ -114,8 +114,8 @@ aggregate_functions: values: [ SILENT, SATURATE, ERROR ] nullability: DECLARED_OUTPUT decomposable: MANY - intermediate: "DECIMAL<38,S>?" - return: "DECIMAL<38,S>?" + intermediate: "DECIMAL?<38,S>" + return: "DECIMAL?<38,S>" - name: "avg" description: Average a set of values. impls: @@ -137,8 +137,8 @@ aggregate_functions: value: "DECIMAL" nullability: DECLARED_OUTPUT decomposable: MANY - intermediate: "DECIMAL?" - return: "DECIMAL?" + intermediate: "DECIMAL?" + return: "DECIMAL?" - name: "max" description: Max a set of values. impls: @@ -147,5 +147,5 @@ aggregate_functions: value: "DECIMAL" nullability: DECLARED_OUTPUT decomposable: MANY - intermediate: "DECIMAL?" - return: "DECIMAL?" + intermediate: "DECIMAL?" + return: "DECIMAL?" diff --git a/inst/substrait/extensions/functions_rounding.yaml b/inst/substrait/extensions/functions_rounding.yaml index 2243ef7b..09309f2c 100644 --- a/inst/substrait/extensions/functions_rounding.yaml +++ b/inst/substrait/extensions/functions_rounding.yaml @@ -27,3 +27,244 @@ scalar_functions: - value: fp64 name: "x" return: fp64 + - + name: "round" + description: > + Rounding the value `x` to `s` decimal places. + impls: + - args: + - value: i8 + name: "x" + description: > + Numerical expression to be rounded. + - value: i32 + name: "s" + description: > + Number of decimal places to be rounded to. + + When `s` is a positive number, nothing will happen + since `x` is an integer value. + + When `s` is a negative number, the rounding is + performed to the nearest multiple of `10^(-s)`. + options: + rounding: + description: > + When a boundary is computed to lie somewhere between two values, + and this value cannot be exactly represented, this specifies how + to round it. + + - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie + to the even option. + - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly + halfway, tie away from zero. + - TRUNCATE: always round toward zero. + - CEILING: always round toward positive infinity. + - FLOOR: always round toward negative infinity. + - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule + - TIE_DOWN: round ties with FLOOR rule + - TIE_UP: round ties with CEILING rule + - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule + - TIE_TO_ODD: round to nearest value; if exactly halfway, tie + to the odd option. + values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, + AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] + nullability: DECLARED_OUTPUT + return: i8? + - args: + - value: i16 + name: "x" + description: > + Numerical expression to be rounded. + - value: i32 + name: "s" + description: > + Number of decimal places to be rounded to. + + When `s` is a positive number, nothing will happen + since `x` is an integer value. + + When `s` is a negative number, the rounding is + performed to the nearest multiple of `10^(-s)`. + options: + rounding: + description: > + When a boundary is computed to lie somewhere between two values, + and this value cannot be exactly represented, this specifies how + to round it. + + - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie + to the even option. + - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly + halfway, tie away from zero. + - TRUNCATE: always round toward zero. + - CEILING: always round toward positive infinity. + - FLOOR: always round toward negative infinity. + - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule + - TIE_DOWN: round ties with FLOOR rule + - TIE_UP: round ties with CEILING rule + - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule + - TIE_TO_ODD: round to nearest value; if exactly halfway, tie + to the odd option. + values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, + AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] + nullability: DECLARED_OUTPUT + return: i16? + - args: + - value: i32 + name: "x" + description: > + Numerical expression to be rounded. + - value: i32 + name: "s" + description: > + Number of decimal places to be rounded to. + + When `s` is a positive number, nothing will happen + since `x` is an integer value. + + When `s` is a negative number, the rounding is + performed to the nearest multiple of `10^(-s)`. + options: + rounding: + description: > + When a boundary is computed to lie somewhere between two values, + and this value cannot be exactly represented, this specifies how + to round it. + + - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie + to the even option. + - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly + halfway, tie away from zero. + - TRUNCATE: always round toward zero. + - CEILING: always round toward positive infinity. + - FLOOR: always round toward negative infinity. + - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule + - TIE_DOWN: round ties with FLOOR rule + - TIE_UP: round ties with CEILING rule + - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule + - TIE_TO_ODD: round to nearest value; if exactly halfway, tie + to the odd option. + values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, + AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] + nullability: DECLARED_OUTPUT + return: i32? + - args: + - value: i64 + name: "x" + description: > + Numerical expression to be rounded. + - value: i32 + name: "s" + description: > + Number of decimal places to be rounded to. + + When `s` is a positive number, nothing will happen + since `x` is an integer value. + + When `s` is a negative number, the rounding is + performed to the nearest multiple of `10^(-s)`. + options: + rounding: + description: > + When a boundary is computed to lie somewhere between two values, + and this value cannot be exactly represented, this specifies how + to round it. + + - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie + to the even option. + - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly + halfway, tie away from zero. + - TRUNCATE: always round toward zero. + - CEILING: always round toward positive infinity. + - FLOOR: always round toward negative infinity. + - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule + - TIE_DOWN: round ties with FLOOR rule + - TIE_UP: round ties with CEILING rule + - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule + - TIE_TO_ODD: round to nearest value; if exactly halfway, tie + to the odd option. + values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, + AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] + nullability: DECLARED_OUTPUT + return: i64? + - args: + - value: fp32 + name: "x" + description: > + Numerical expression to be rounded. + - value: i32 + name: "s" + description: > + Number of decimal places to be rounded to. + + When `s` is a positive number, the rounding + is performed to a `s` number of decimal places. + + When `s` is a negative number, the rounding is + performed to the left side of the decimal point + as specified by `s`. + options: + rounding: + description: > + When a boundary is computed to lie somewhere between two values, + and this value cannot be exactly represented, this specifies how + to round it. + + - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie + to the even option. + - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly + halfway, tie away from zero. + - TRUNCATE: always round toward zero. + - CEILING: always round toward positive infinity. + - FLOOR: always round toward negative infinity. + - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule + - TIE_DOWN: round ties with FLOOR rule + - TIE_UP: round ties with CEILING rule + - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule + - TIE_TO_ODD: round to nearest value; if exactly halfway, tie + to the odd option. + values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, + AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] + nullability: DECLARED_OUTPUT + return: fp32? + - args: + - value: fp64 + name: "x" + description: > + Numerical expression to be rounded. + - value: i32 + name: "s" + description: > + Number of decimal places to be rounded to. + + When `s` is a positive number, the rounding + is performed to a `s` number of decimal places. + + When `s` is a negative number, the rounding is + performed to the left side of the decimal point + as specified by `s`. + options: + rounding: + description: > + When a boundary is computed to lie somewhere between two values, + and this value cannot be exactly represented, this specifies how + to round it. + + - TIE_TO_EVEN: round to nearest value; if exactly halfway, tie + to the even option. + - TIE_AWAY_FROM_ZERO: round to nearest value; if exactly + halfway, tie away from zero. + - TRUNCATE: always round toward zero. + - CEILING: always round toward positive infinity. + - FLOOR: always round toward negative infinity. + - AWAY_FROM_ZERO: round negative values with FLOOR rule, round positive values with CEILING rule + - TIE_DOWN: round ties with FLOOR rule + - TIE_UP: round ties with CEILING rule + - TIE_TOWARDS_ZERO: round ties with TRUNCATE rule + - TIE_TO_ODD: round to nearest value; if exactly halfway, tie + to the odd option. + values: [ TIE_TO_EVEN, TIE_AWAY_FROM_ZERO, TRUNCATE, CEILING, FLOOR, + AWAY_FROM_ZERO, TIE_DOWN, TIE_UP, TIE_TOWARDS_ZERO, TIE_TO_ODD ] + nullability: DECLARED_OUTPUT + return: fp64? diff --git a/inst/substrait/extensions/functions_string.yaml b/inst/substrait/extensions/functions_string.yaml index 0edd5d90..19d594fd 100644 --- a/inst/substrait/extensions/functions_string.yaml +++ b/inst/substrait/extensions/functions_string.yaml @@ -1267,7 +1267,7 @@ scalar_functions: description: A character used for splitting the string. return: "List" - - name: regex_string_split + name: regexp_string_split description: >- Split a string into a list of strings, based on a regular expression pattern. The substrings matched by the pattern will be used as the separators to split the input diff --git a/inst/substrait/proto/substrait/algebra.proto b/inst/substrait/proto/substrait/algebra.proto index d53b1ab5..bb51965b 100644 --- a/inst/substrait/proto/substrait/algebra.proto +++ b/inst/substrait/proto/substrait/algebra.proto @@ -365,6 +365,10 @@ message Rel { ExtensionMultiRel extension_multi = 10; ExtensionLeafRel extension_leaf = 11; CrossRel cross = 12; + + //Physical relations + HashJoinRel hash_join = 13; + MergeJoinRel merge_join = 14; } } @@ -479,6 +483,60 @@ message WriteRel { } } +// The hash equijoin join operator will build a hash table out of the right input based on a set of join keys. +// It will then probe that hash table for incoming inputs, finding matches. +message HashJoinRel { + RelCommon common = 1; + Rel left = 2; + Rel right = 3; + repeated Expression.FieldReference left_keys = 4; + repeated Expression.FieldReference right_keys = 5; + Expression post_join_filter = 6; + + JoinType type = 7; + + enum JoinType { + JOIN_TYPE_UNSPECIFIED = 0; + JOIN_TYPE_INNER = 1; + JOIN_TYPE_OUTER = 2; + JOIN_TYPE_LEFT = 3; + JOIN_TYPE_RIGHT = 4; + JOIN_TYPE_LEFT_SEMI = 5; + JOIN_TYPE_RIGHT_SEMI = 6; + JOIN_TYPE_LEFT_ANTI = 7; + JOIN_TYPE_RIGHT_ANTI = 8; + } + + substrait.extensions.AdvancedExtension advanced_extension = 10; +} + +// The merge equijoin does a join by taking advantage of two sets that are sorted on the join keys. +// This allows the join operation to be done in a streaming fashion. +message MergeJoinRel { + RelCommon common = 1; + Rel left = 2; + Rel right = 3; + repeated Expression.FieldReference left_keys = 4; + repeated Expression.FieldReference right_keys = 5; + Expression post_join_filter = 6; + + JoinType type = 7; + + enum JoinType { + JOIN_TYPE_UNSPECIFIED = 0; + JOIN_TYPE_INNER = 1; + JOIN_TYPE_OUTER = 2; + JOIN_TYPE_LEFT = 3; + JOIN_TYPE_RIGHT = 4; + JOIN_TYPE_LEFT_SEMI = 5; + JOIN_TYPE_RIGHT_SEMI = 6; + JOIN_TYPE_LEFT_ANTI = 7; + JOIN_TYPE_RIGHT_ANTI = 8; + } + + substrait.extensions.AdvancedExtension advanced_extension = 10; +} + // The argument of a function message FunctionArgument { oneof arg_type { @@ -517,6 +575,7 @@ message Expression { MultiOrList multi_or_list = 9; Cast cast = 11; Subquery subquery = 12; + Nested nested = 13; // deprecated: enum literals are only sensible in the context of // function arguments, for which FunctionArgument should now be @@ -642,6 +701,47 @@ message Expression { } } + // Expression to dynamically construct nested types. + message Nested { + // Whether the returned nested type is nullable. + bool nullable = 1; + + // Optionally points to a type_variation_anchor defined in this plan for + // the returned nested type. + uint32 type_variation_reference = 2; + + oneof nested_type { + Struct struct = 3; + List list = 4; + Map map = 5; + } + + message Map { + message KeyValue { + // Mandatory key/value expressions. + Expression key = 1; + Expression value = 2; + } + + // One or more key-value pairs. To specify an empty map, use + // Literal.empty_map (otherwise type information would be missing). + repeated KeyValue key_values = 1; + } + + message Struct { + // Zero or more possibly heterogeneously-typed list of expressions that + // form the struct fields. + repeated Expression fields = 1; + } + + message List { + // A homogeneously-typed list of one or more expressions that form the + // list entries. To specify an empty list, use Literal.empty_list + // (otherwise type information would be missing). + repeated Expression values = 1; + } + } + // A scalar function call. message ScalarFunction { // Points to a function_anchor defined in this plan, which must refer diff --git a/inst/substrait/proto/substrait/extended_expression.proto b/inst/substrait/proto/substrait/extended_expression.proto new file mode 100644 index 00000000..5d115205 --- /dev/null +++ b/inst/substrait/proto/substrait/extended_expression.proto @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: Apache-2.0 +syntax = "proto3"; + +package substrait; + +import "substrait/algebra.proto"; +import "substrait/extensions/extensions.proto"; +import "substrait/plan.proto"; +import "substrait/type.proto"; + +option csharp_namespace = "Substrait.Protobuf"; +option go_package = "github.com/substrait-io/substrait-go/proto"; +option java_multiple_files = true; +option java_package = "io.substrait.proto"; + +message ExpressionReference { + oneof expr_type { + Expression expression = 1; + AggregateFunction measure = 2; + } + // Field names in depth-first order + repeated string output_names = 3; +} + +// Describe a set of operations to complete. +// For compactness sake, identifiers are normalized at the plan level. +message ExtendedExpression { + // Substrait version of the expression. Optional up to 0.17.0, required for later + // versions. + Version version = 7; + + // a list of yaml specifications this expression may depend on + repeated substrait.extensions.SimpleExtensionURI extension_uris = 1; + + // a list of extensions this expression may depend on + repeated substrait.extensions.SimpleExtensionDeclaration extensions = 2; + + // one or more expression trees with same order in plan rel + repeated ExpressionReference referred_expr = 3; + + NamedStruct base_schema = 4; + // additional extensions associated with this expression. + substrait.extensions.AdvancedExtension advanced_extensions = 5; + + // A list of com.google.Any entities that this plan may use. Can be used to + // warn if some embedded message types are unknown. Note that this list may + // include message types that are ignorable (optimizations) or that are + // unused. In many cases, a consumer may be able to work with a plan even if + // one or more message types defined here are unknown. + repeated string expected_type_urls = 6; +} diff --git a/inst/substrait/text/simple_extensions_schema.yaml b/inst/substrait/text/simple_extensions_schema.yaml index c8396db6..37ef99a3 100644 --- a/inst/substrait/text/simple_extensions_schema.yaml +++ b/inst/substrait/text/simple_extensions_schema.yaml @@ -1,5 +1,6 @@ $id: http://substrait.io/schemas/simple_extensions $schema: https://json-schema.org/draft/2020-12/schema +title: Simple Extensions additionalProperties: false type: object properties: diff --git a/inst/substrait/types_gen.txt b/inst/substrait/types_gen.txt index 53d465e5..f8196011 100644 --- a/inst/substrait/types_gen.txt +++ b/inst/substrait/types_gen.txt @@ -71,6 +71,11 @@ substrait.Expression.MaskExpression.StructItem substrait.Expression.MaskExpression.StructSelect substrait.Expression.MultiOrList substrait.Expression.MultiOrList.Record +substrait.Expression.Nested +substrait.Expression.Nested.List +substrait.Expression.Nested.Map +substrait.Expression.Nested.Map.KeyValue +substrait.Expression.Nested.Struct substrait.Expression.ReferenceSegment substrait.Expression.ReferenceSegment.ListElement substrait.Expression.ReferenceSegment.MapKey @@ -93,6 +98,8 @@ substrait.Expression.WindowFunction.Bound.CurrentRow substrait.Expression.WindowFunction.Bound.Following substrait.Expression.WindowFunction.Bound.Preceding substrait.Expression.WindowFunction.Bound.Unbounded +substrait.ExpressionReference +substrait.ExtendedExpression substrait.ExtensionLeafRel substrait.ExtensionMultiRel substrait.ExtensionObject @@ -122,8 +129,12 @@ substrait.FunctionSignature.Implementation.Type substrait.FunctionSignature.Scalar substrait.FunctionSignature.Window substrait.FunctionSignature.Window.WindowType +substrait.HashJoinRel +substrait.HashJoinRel.JoinType substrait.JoinRel substrait.JoinRel.JoinType +substrait.MergeJoinRel +substrait.MergeJoinRel.JoinType substrait.NamedObjectWrite substrait.NamedStruct substrait.ParameterizedType