Skip to content

Commit

Permalink
Support right semi join type (oap-project#53)
Browse files Browse the repository at this point in the history
Support right semi join type in Substrait.
  • Loading branch information
rui-mo authored and zhejiangxiaomai committed Mar 27, 2023
1 parent b54e8f7 commit 1c07a40
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 5 deletions.
5 changes: 4 additions & 1 deletion velox/substrait/SubstraitToVeloxPlan.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -212,9 +212,12 @@ core::PlanNodePtr SubstraitVeloxPlanConverter::toVeloxPlan(
case ::substrait::JoinRel_JoinType::JoinRel_JoinType_JOIN_TYPE_RIGHT:
joinType = core::JoinType::kRight;
break;
case ::substrait::JoinRel_JoinType::JoinRel_JoinType_JOIN_TYPE_SEMI:
case ::substrait::JoinRel_JoinType::JoinRel_JoinType_JOIN_TYPE_LEFT_SEMI:
joinType = core::JoinType::kLeftSemi;
break;
case ::substrait::JoinRel_JoinType::JoinRel_JoinType_JOIN_TYPE_RIGHT_SEMI:
joinType = core::JoinType::kRightSemi;
break;
case ::substrait::JoinRel_JoinType::JoinRel_JoinType_JOIN_TYPE_ANTI:
joinType = core::JoinType::kNullAwareAnti;
break;
Expand Down
3 changes: 2 additions & 1 deletion velox/substrait/SubstraitToVeloxPlanValidator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,8 @@ bool SubstraitToVeloxPlanValidator::validate(
case ::substrait::JoinRel_JoinType_JOIN_TYPE_OUTER:
case ::substrait::JoinRel_JoinType_JOIN_TYPE_LEFT:
case ::substrait::JoinRel_JoinType_JOIN_TYPE_RIGHT:
case ::substrait::JoinRel_JoinType_JOIN_TYPE_SEMI:
case ::substrait::JoinRel_JoinType_JOIN_TYPE_LEFT_SEMI:
case ::substrait::JoinRel_JoinType_JOIN_TYPE_RIGHT_SEMI:
case ::substrait::JoinRel_JoinType_JOIN_TYPE_ANTI:
break;
default:
Expand Down
7 changes: 4 additions & 3 deletions velox/substrait/proto/substrait/algebra.proto
Original file line number Diff line number Diff line change
Expand Up @@ -169,11 +169,12 @@ message JoinRel {
JOIN_TYPE_OUTER = 2;
JOIN_TYPE_LEFT = 3;
JOIN_TYPE_RIGHT = 4;
JOIN_TYPE_SEMI = 5;
JOIN_TYPE_ANTI = 6;
JOIN_TYPE_LEFT_SEMI = 5;
JOIN_TYPE_RIGHT_SEMI = 6;
JOIN_TYPE_ANTI = 7;
// This join is useful for nested sub-queries where we need exactly one tuple in output (or throw exception)
// See Section 3.2 of https://15721.courses.cs.cmu.edu/spring2018/papers/16-optimizer2/hyperjoins-btw2017.pdf
JOIN_TYPE_SINGLE = 7;
JOIN_TYPE_SINGLE = 8;
}

substrait.extensions.AdvancedExtension advanced_extension = 10;
Expand Down

0 comments on commit 1c07a40

Please sign in to comment.