summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraneporada <[email protected]>2022-10-31 10:45:00 +0300
committeraneporada <[email protected]>2022-10-31 10:45:00 +0300
commit2f8f969f7018aa1115c7b64c56baacdc33e1011e (patch)
treea91148481604fa18ecb0128787fe0c0ea0fc11ad
parentda38513315bce852ce10b94cd1857e7f50bdc389 (diff)
Fix handling of nulls in output[] for Wide{Take/Skip}Blocks
-rw-r--r--ydb/library/yql/minikql/comp_nodes/mkql_block_skiptake.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_block_skiptake.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_block_skiptake.cpp
index 2fb510eb99e..4527bc797ea 100644
--- a/ydb/library/yql/minikql/comp_nodes/mkql_block_skiptake.cpp
+++ b/ydb/library/yql/minikql/comp_nodes/mkql_block_skiptake.cpp
@@ -28,6 +28,7 @@ public:
state = Count->GetValue(ctx);
}
+ Y_VERIFY(output[Width - 1]);
auto count = state.Get<ui64>();
ui64 blockSize = 0;
for (;;) {
@@ -46,6 +47,9 @@ public:
ui64 tailSize = blockSize - count;
for (size_t i = 0; i < Width - 1; ++i) {
+ if (!output[i]) {
+ continue;
+ }
auto& datum = TArrowBlock::From(*output[i]).GetDatum();
if (datum.is_scalar()) {
continue;
@@ -94,11 +98,15 @@ public:
return EFetchResult::Finish;
}
+ Y_VERIFY(output[Width - 1]);
auto result = Flow->FetchValues(ctx, output);
if (result == EFetchResult::One) {
ui64 blockSize = TArrowBlock::From(*output[Width - 1]).GetDatum().scalar_as<arrow::UInt64Scalar>().value;
if (blockSize > count) {
for (size_t i = 0; i < Width - 1; ++i) {
+ if (!output[i]) {
+ continue;
+ }
auto& datum = TArrowBlock::From(*output[i]).GetDatum();
if (datum.is_scalar()) {
continue;