diff options
author | ziganshinmr <ziganshinmr@yandex-team.com> | 2025-01-24 19:14:40 +0300 |
---|---|---|
committer | ziganshinmr <ziganshinmr@yandex-team.com> | 2025-01-24 19:34:47 +0300 |
commit | 3bc271d931fc0b364f96a748b9b9c65315529327 (patch) | |
tree | 8af96f6dc1f1f7b8a1b84fe0167dd48ce4e6e5cf /yql/essentials/minikql/mkql_program_builder.cpp | |
parent | 01ea47bcd9a7d520c5f7465d92ad95ed4b759aa3 (diff) | |
download | ydb-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.cpp | 12 |
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()); |