aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/minikql/mkql_program_builder.cpp
diff options
context:
space:
mode:
authorziganshinmr <ziganshinmr@yandex-team.com>2025-01-24 19:14:40 +0300
committerziganshinmr <ziganshinmr@yandex-team.com>2025-01-24 19:34:47 +0300
commit3bc271d931fc0b364f96a748b9b9c65315529327 (patch)
tree8af96f6dc1f1f7b8a1b84fe0167dd48ce4e6e5cf /yql/essentials/minikql/mkql_program_builder.cpp
parent01ea47bcd9a7d520c5f7465d92ad95ed4b759aa3 (diff)
downloadydb-3bc271d931fc0b364f96a748b9b9c65315529327.tar.gz
Cross join support in BlockMapJoinCore computation node
commit_hash:c193cf84100f2ecdac38d1396f289c72d599d05a
Diffstat (limited to 'yql/essentials/minikql/mkql_program_builder.cpp')
-rw-r--r--yql/essentials/minikql/mkql_program_builder.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/yql/essentials/minikql/mkql_program_builder.cpp b/yql/essentials/minikql/mkql_program_builder.cpp
index 7b0322bfb4..bd27a54db9 100644
--- a/yql/essentials/minikql/mkql_program_builder.cpp
+++ b/yql/essentials/minikql/mkql_program_builder.cpp
@@ -6011,11 +6011,19 @@ TRuntimeNode TProgramBuilder::BlockMapJoinCore(TRuntimeNode leftStream, TRuntime
if constexpr (RuntimeVersion < 53U) {
THROW yexception() << "Runtime version (" << RuntimeVersion << ") too old for " << __func__;
}
+ if (RuntimeVersion < 57U && joinKind == EJoinKind::Cross) {
+ THROW yexception() << __func__ << " does not support cross join in runtime version (" << RuntimeVersion << ")";
+ }
+
MKQL_ENSURE(joinKind == EJoinKind::Inner || joinKind == EJoinKind::Left ||
- joinKind == EJoinKind::LeftSemi || joinKind == EJoinKind::LeftOnly,
+ joinKind == EJoinKind::LeftSemi || joinKind == EJoinKind::LeftOnly || joinKind == EJoinKind::Cross,
"Unsupported join kind");
- MKQL_ENSURE(!leftKeyColumns.empty(), "At least one key column must be specified");
MKQL_ENSURE(leftKeyColumns.size() == rightKeyColumns.size(), "Key column count mismatch");
+ if (joinKind == EJoinKind::Cross) {
+ MKQL_ENSURE(leftKeyColumns.empty(), "Specifying key columns is not allowed for cross join");
+ } else {
+ MKQL_ENSURE(!leftKeyColumns.empty(), "At least one key column must be specified");
+ }
ValidateBlockStreamType(leftStream.GetStaticType());
ValidateBlockStreamType(rightStream.GetStaticType());