diff options
author | aneporada <[email protected]> | 2022-10-31 10:45:00 +0300 |
---|---|---|
committer | aneporada <[email protected]> | 2022-10-31 10:45:00 +0300 |
commit | 2f8f969f7018aa1115c7b64c56baacdc33e1011e (patch) | |
tree | a91148481604fa18ecb0128787fe0c0ea0fc11ad | |
parent | da38513315bce852ce10b94cd1857e7f50bdc389 (diff) |
Fix handling of nulls in output[] for Wide{Take/Skip}Blocks
-rw-r--r-- | ydb/library/yql/minikql/comp_nodes/mkql_block_skiptake.cpp | 8 |
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; |