From f18dcd515f3594b4a778ed54f211bf0a2cfe9af1 Mon Sep 17 00:00:00 2001 From: Igor Munkin Date: Mon, 6 May 2024 08:26:09 +0000 Subject: [PATCH] Make Arrow Datum check message more verbose It's worth to provide both expected and got Arrow Datum types in the assertion message for convenient analysis. Follows up #4096 --- ydb/library/yql/minikql/comp_nodes/mkql_blocks.cpp | 2 +- ydb/library/yql/minikql/computation/mkql_block_impl.cpp | 2 +- ydb/library/yql/public/udf/arrow/defs.h | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_blocks.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_blocks.cpp index 59d1514500e3..314e3d154ff6 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_blocks.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_blocks.cpp @@ -722,7 +722,7 @@ using TBaseComputation = TStatefulWideFlowCodegeneratorNodeGetScalarItem(*datum.scalar()); } else { diff --git a/ydb/library/yql/minikql/computation/mkql_block_impl.cpp b/ydb/library/yql/minikql/computation/mkql_block_impl.cpp index da5cb8ec59c3..2510a6ed9ba3 100644 --- a/ydb/library/yql/minikql/computation/mkql_block_impl.cpp +++ b/ydb/library/yql/minikql/computation/mkql_block_impl.cpp @@ -207,7 +207,7 @@ NUdf::TUnboxedValuePod TBlockFuncNode::DoCalculate(TComputationContext& ctx) con std::vector argDatums; for (ui32 i = 0; i < ArgsNodes.size(); ++i) { argDatums.emplace_back(TArrowBlock::From(ArgsNodes[i]->GetValue(ctx)).GetDatum()); - Y_DEBUG_ABORT_UNLESS(ArgsValuesDescr[i] == argDatums.back().descr()); + ARROW_DEBUG_CHECK_DATUM_TYPES(ArgsValuesDescr[i], argDatums.back().descr()); } if (ScalarOutput) { diff --git a/ydb/library/yql/public/udf/arrow/defs.h b/ydb/library/yql/public/udf/arrow/defs.h index f3f14f56d16b..f05965396b8e 100644 --- a/ydb/library/yql/public/udf/arrow/defs.h +++ b/ydb/library/yql/public/udf/arrow/defs.h @@ -25,3 +25,8 @@ do { }() #define ARROW_RESULT(op) ARROW_RESULT_S(op, "Bad status") + +#define ARROW_DEBUG_CHECK_DATUM_TYPES(expected, got) do { \ + Y_DEBUG_ABORT_UNLESS((expected) == (got), "Bad datum type: %s expected, %s got", \ + (expected).ToString().c_str(), (got).ToString().c_str()); \ +} while(false)