Skip to content

Commit

Permalink
chore: Update version of substrait core to 0.32.0. (substrait-io#84)
Browse files Browse the repository at this point in the history
  • Loading branch information
EpsilonPrime committed Aug 26, 2023
1 parent 9aae897 commit f8c383a
Show file tree
Hide file tree
Showing 5 changed files with 146 additions and 2 deletions.
92 changes: 91 additions & 1 deletion src/substrait/textplan/converter/BasePlanProtoVisitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,21 @@ std::any BasePlanProtoVisitor::visitWindowFunction(
return std::nullopt;
}

std::any BasePlanProtoVisitor::visitWindowRelFunction(
const ::substrait::proto::ConsistentPartitionWindowRel::WindowRelFunction&
function) {
for (const auto& arg : function.arguments()) {
visitFunctionArgument(arg);
}
for (const auto& arg : function.options()) {
visitFunctionOption(arg);
}
if (function.has_output_type()) {
visitType(function.output_type());
}
return std::nullopt;
}

std::any BasePlanProtoVisitor::visitIfThen(
const ::substrait::proto::Expression::IfThen& ifthen) {
for (const auto& ifThenIf : ifthen.ifs()) {
Expand Down Expand Up @@ -649,7 +664,6 @@ std::any BasePlanProtoVisitor::visitExpression(
case ::substrait::proto::Expression::RexTypeCase::REX_TYPE_NOT_SET:
break;
}
// TODO -- Use an error listener instead.
SUBSTRAIT_UNSUPPORTED(
"Unsupported expression type encountered: " +
std::to_string(expression.rex_type_case()));
Expand Down Expand Up @@ -736,6 +750,25 @@ std::any BasePlanProtoVisitor::visitFieldReference(
return std::nullopt;
}

std::any BasePlanProtoVisitor::visitExpandField(
const ::substrait::proto::ExpandRel::ExpandField& field) {
switch (field.field_type_case()) {
case ::substrait::proto::ExpandRel_ExpandField::kSwitchingField:
for (const auto& switchingField : field.switching_field().duplicates()) {
visitExpression(switchingField);
}
break;
case ::substrait::proto::ExpandRel_ExpandField::kConsistentField:
if (field.has_consistent_field()) {
visitExpression(field.consistent_field());
}
break;
case ::substrait::proto::ExpandRel_ExpandField::FIELD_TYPE_NOT_SET:
break;
}
return std::nullopt;
}

std::any BasePlanProtoVisitor::visitReadRelation(
const ::substrait::proto::ReadRel& relation) {
if (relation.has_common()) {
Expand Down Expand Up @@ -992,6 +1025,57 @@ std::any BasePlanProtoVisitor::visitMergeJoinRelation(
return std::nullopt;
}

std::any BasePlanProtoVisitor::visitWindowRelation(
const ::substrait::proto::ConsistentPartitionWindowRel& relation) {
if (relation.has_common()) {
visitRelationCommon(relation.common());
}
if (relation.has_input()) {
visitRelation(relation.input());
}
for (const auto& func : relation.window_functions()) {
visitWindowRelFunction(func);
}
for (const auto& exp : relation.partition_expressions()) {
visitExpression(exp);
}
for (const auto& sort : relation.sorts()) {
visitSortField(sort);
}
if (relation.has_advanced_extension()) {
visitAdvancedExtension(relation.advanced_extension());
};
return std::nullopt;
}

std::any BasePlanProtoVisitor::visitExchangeRelation(
const ::substrait::proto::ExchangeRel& relation) {
if (relation.has_common()) {
visitRelationCommon(relation.common());
}
if (relation.has_input()) {
visitRelation(relation.input());
}
if (relation.has_advanced_extension()) {
visitAdvancedExtension(relation.advanced_extension());
};
return std::nullopt;
}

std::any BasePlanProtoVisitor::visitExpandRelation(
const ::substrait::proto::ExpandRel& relation) {
if (relation.has_common()) {
visitRelationCommon(relation.common());
}
if (relation.has_input()) {
visitRelation(relation.input());
}
for (const auto& expandField : relation.fields()) {
visitExpandField(expandField);
}
return std::nullopt;
}

std::any BasePlanProtoVisitor::visitRelation(
const ::substrait::proto::Rel& relation) {
switch (relation.rel_type_case()) {
Expand Down Expand Up @@ -1023,6 +1107,12 @@ std::any BasePlanProtoVisitor::visitRelation(
return visitHashJoinRelation(relation.hash_join());
case ::substrait::proto::Rel::RelTypeCase::kMergeJoin:
return visitMergeJoinRelation(relation.merge_join());
case ::substrait::proto::Rel::kWindow:
return visitWindowRelation(relation.window());
case ::substrait::proto::Rel::kExchange:
return visitExchangeRelation(relation.exchange());
case ::substrait::proto::Rel::kExpand:
return visitExpandRelation(relation.expand());
case ::substrait::proto::Rel::REL_TYPE_NOT_SET:
break;
}
Expand Down
12 changes: 12 additions & 0 deletions src/substrait/textplan/converter/BasePlanProtoVisitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include <any>

#include "substrait/proto/algebra.pb.h"
#include "substrait/proto/plan.pb.h"

namespace io::substrait::textplan {
Expand Down Expand Up @@ -84,6 +85,9 @@ class BasePlanProtoVisitor {
const ::substrait::proto::Expression::ScalarFunction& function);
virtual std::any visitWindowFunction(
const ::substrait::proto::Expression::WindowFunction& function);
virtual std::any visitWindowRelFunction(
const ::substrait::proto::ConsistentPartitionWindowRel::WindowRelFunction&
function);
virtual std::any visitIfThen(
const ::substrait::proto::Expression::IfThen& ifthen);
virtual std::any visitSwitchExpression(
Expand Down Expand Up @@ -140,6 +144,8 @@ class BasePlanProtoVisitor {
virtual std::any visitSortField(const ::substrait::proto::SortField& sort);
virtual std::any visitFieldReference(
const ::substrait::proto::Expression::FieldReference& ref);
virtual std::any visitExpandField(
const ::substrait::proto::ExpandRel::ExpandField& field);

virtual std::any visitReadRelation(
const ::substrait::proto::ReadRel& relation);
Expand Down Expand Up @@ -168,6 +174,12 @@ class BasePlanProtoVisitor {
const ::substrait::proto::HashJoinRel& relation);
virtual std::any visitMergeJoinRelation(
const ::substrait::proto::MergeJoinRel& relation);
virtual std::any visitWindowRelation(
const ::substrait::proto::ConsistentPartitionWindowRel& relation);
virtual std::any visitExchangeRelation(
const ::substrait::proto::ExchangeRel& relation);
virtual std::any visitExpandRelation(
const ::substrait::proto::ExpandRel& relation);

virtual std::any visitRelation(const ::substrait::proto::Rel& relation);
virtual std::any visitRelationRoot(
Expand Down
24 changes: 24 additions & 0 deletions src/substrait/textplan/converter/InitialPlanProtoVisitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,15 @@ void eraseInputs(::substrait::proto::Rel* relation) {
relation->mutable_merge_join()->clear_left();
relation->mutable_merge_join()->clear_right();
break;
case ::substrait::proto::Rel::kWindow:
relation->mutable_window()->clear_input();
break;
case ::substrait::proto::Rel::kExchange:
relation->mutable_exchange()->clear_input();
break;
case ::substrait::proto::Rel::kExpand:
relation->mutable_expand()->clear_input();
break;
case ::substrait::proto::Rel::REL_TYPE_NOT_SET:
break;
}
Expand Down Expand Up @@ -112,6 +121,12 @@ ::google::protobuf::RepeatedField<int32_t> getOutputMapping(
return relation.hash_join().common().emit().output_mapping();
case ::substrait::proto::Rel::kMergeJoin:
return relation.merge_join().common().emit().output_mapping();
case ::substrait::proto::Rel::kWindow:
return relation.window().common().emit().output_mapping();
case ::substrait::proto::Rel::kExchange:
return relation.exchange().common().emit().output_mapping();
case ::substrait::proto::Rel::kExpand:
return relation.expand().common().emit().output_mapping();
case ::substrait::proto::Rel::REL_TYPE_NOT_SET:
break;
}
Expand Down Expand Up @@ -521,6 +536,15 @@ void InitialPlanProtoVisitor::updateLocalSchema(
relation.merge_join().left(),
relation.merge_join().right());
break;
case ::substrait::proto::Rel::kWindow:
addFieldsToRelation(relationData, relation.window().input());
break;
case ::substrait::proto::Rel::kExchange:
addFieldsToRelation(relationData, relation.exchange().input());
break;
case ::substrait::proto::Rel::kExpand:
addFieldsToRelation(relationData, relation.expand().input());
break;
case ::substrait::proto::Rel::REL_TYPE_NOT_SET:
break;
}
Expand Down
18 changes: 18 additions & 0 deletions src/substrait/textplan/converter/PipelineVisitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,24 @@ std::any PipelineVisitor::visitRelation(
relationData->newPipelines.push_back(rightSymbol);
break;
}
case ::substrait::proto::Rel::kWindow: {
const auto* inputSymbol = symbolTable_->lookupSymbolByLocationAndType(
PROTO_LOCATION(relation.window().input()), SymbolType::kRelation);
relationData->continuingPipeline = inputSymbol;
break;
}
case ::substrait::proto::Rel::kExchange: {
const auto* inputSymbol = symbolTable_->lookupSymbolByLocationAndType(
PROTO_LOCATION(relation.exchange().input()), SymbolType::kRelation);
relationData->continuingPipeline = inputSymbol;
break;
}
case ::substrait::proto::Rel::kExpand: {
const auto* inputSymbol = symbolTable_->lookupSymbolByLocationAndType(
PROTO_LOCATION(relation.expand().input()), SymbolType::kRelation);
relationData->continuingPipeline = inputSymbol;
break;
}
case ::substrait::proto::Rel::REL_TYPE_NOT_SET:
break;
}
Expand Down
2 changes: 1 addition & 1 deletion third_party/substrait
Submodule substrait updated 38 files
+4 −0 .flake8
+3 −0 .github/CODEOWNERS
+31 −3 .github/workflows/pr.yml
+1 −1 .github/workflows/pr_breaking.yml
+5 −4 .github/workflows/pr_title.yml
+4 −1 .github/workflows/release.yml
+50 −5 .github/workflows/site.yml
+10 −2 .pre-commit-config.yaml
+119 −0 CHANGELOG.md
+17 −0 CITATION.cff
+5 −5 buf.gen.yaml
+94 −0 extensions/functions_arithmetic.yaml
+434 −11 extensions/functions_datetime.yaml
+241 −0 extensions/functions_rounding.yaml
+117 −5 extensions/functions_string.yaml
+88 −3 proto/substrait/algebra.proto
+1 −3 proto/substrait/extensions/extensions.proto
+3 −24 site/data/committers.yaml
+3 −6 site/data/smc.yaml
+17 −0 site/docs/community/index.md
+7 −7 site/docs/expressions/extended_expression.md
+4 −4 site/docs/expressions/scalar_functions.md
+2 −2 site/docs/expressions/specialized_record_expressions.md
+4 −4 site/docs/expressions/subqueries.md
+4 −2 site/docs/extensions/generate_function_docs.py
+5 −5 site/docs/extensions/index.md
+3 −3 site/docs/relations/basics.md
+5 −5 site/docs/relations/logical_relations.md
+42 −0 site/docs/relations/physical_relations.md
+4 −0 site/docs/tools/_config
+7 −0 site/docs/tools/producer_tools.md
+4 −0 site/docs/tools/substrait_validator.md
+6 −0 site/docs/tools/third_party_tools.md
+3 −3 site/docs/tutorial/final_plan.json
+8 −9 site/docs/tutorial/sql_to_substrait.md
+13 −13 site/requirements.txt
+4 −7 text/simple_extensions_schema.yaml
+394 −0 tools/proto_prefix.py

0 comments on commit f8c383a

Please sign in to comment.