diff options
author | a-romanov <a-romanov@yandex-team.ru> | 2022-03-17 22:21:44 +0300 |
---|---|---|
committer | a-romanov <a-romanov@yandex-team.ru> | 2022-03-17 22:21:44 +0300 |
commit | c46c11c86ffb8c8301c84e51f32385b0ffebfa04 (patch) | |
tree | 07f580f76badf19b52a91eabb4e495d2e79ff7f8 | |
parent | 25f2dfab966f56fac2d01302af93b0ce7c008246 (diff) | |
download | ydb-c46c11c86ffb8c8301c84e51f32385b0ffebfa04.tar.gz |
Add pad into MakeStringNotFilled.
ref:0b84342c6b9231f0e281637dcd46bfe4d8f0b8f2
-rw-r--r-- | ydb/library/yql/minikql/mkql_string_util.cpp | 7 | ||||
-rw-r--r-- | ydb/library/yql/minikql/mkql_string_util.h | 2 | ||||
-rw-r--r-- | ydb/library/yql/minikql/mkql_string_util_ut.cpp | 17 |
3 files changed, 22 insertions, 4 deletions
diff --git a/ydb/library/yql/minikql/mkql_string_util.cpp b/ydb/library/yql/minikql/mkql_string_util.cpp index 40aba1c3413..b809d4e004e 100644 --- a/ydb/library/yql/minikql/mkql_string_util.cpp +++ b/ydb/library/yql/minikql/mkql_string_util.cpp @@ -146,12 +146,13 @@ NUdf::TUnboxedValuePod MakeString(const NUdf::TStringRef ref) return NUdf::TUnboxedValuePod(std::move(str)); } -NUdf::TUnboxedValuePod MakeStringNotFilled(ui32 size) +NUdf::TUnboxedValuePod MakeStringNotFilled(ui32 size, ui32 pad) { - if (size <= NUdf::TUnboxedValuePod::InternalBufferSize) + const auto fullSize = size + pad; + if (fullSize <= NUdf::TUnboxedValuePod::InternalBufferSize) return NUdf::TUnboxedValuePod::Embedded(size); - return NUdf::TUnboxedValuePod(NUdf::TStringValue(size)); + return NUdf::TUnboxedValuePod(NUdf::TStringValue(fullSize), size); } } diff --git a/ydb/library/yql/minikql/mkql_string_util.h b/ydb/library/yql/minikql/mkql_string_util.h index 5a59e91ba44..0abd256adf8 100644 --- a/ydb/library/yql/minikql/mkql_string_util.h +++ b/ydb/library/yql/minikql/mkql_string_util.h @@ -10,7 +10,7 @@ NUdf::TUnboxedValuePod PrependString(const NUdf::TStringRef ref, const NUdf::TUn NUdf::TUnboxedValuePod ConcatStrings(const NUdf::TUnboxedValuePod first, const NUdf::TUnboxedValuePod second); NUdf::TUnboxedValuePod SubString(const NUdf::TUnboxedValuePod value, ui32 offset, ui32 size); NUdf::TUnboxedValuePod MakeString(const NUdf::TStringRef ref); -NUdf::TUnboxedValuePod MakeStringNotFilled(ui32 size); +NUdf::TUnboxedValuePod MakeStringNotFilled(ui32 size, ui32 pad = 0U); } } diff --git a/ydb/library/yql/minikql/mkql_string_util_ut.cpp b/ydb/library/yql/minikql/mkql_string_util_ut.cpp index f3186c66083..227115f488a 100644 --- a/ydb/library/yql/minikql/mkql_string_util_ut.cpp +++ b/ydb/library/yql/minikql/mkql_string_util_ut.cpp @@ -17,5 +17,22 @@ Y_UNIT_TEST_SUITE(TMiniKQLStringUtils) { UNIT_ASSERT(sub0.AsStringValue().Data() == sub1.AsStringValue().Data()); UNIT_ASSERT(sub1.AsStringValue().Data() != sub2.AsStringValue().Data()); } + + Y_UNIT_TEST(MakeStringWithPad) { + TScopedAlloc alloc; + + { + const auto buf= MakeStringNotFilled(NUdf::TUnboxedValuePod::InternalBufferSize - 1U, 1U); + UNIT_ASSERT(buf.IsEmbedded()); + UNIT_ASSERT_VALUES_EQUAL(buf.AsStringRef().Size(), NUdf::TUnboxedValuePod::InternalBufferSize - 1U); + } + + { + const auto buf= MakeStringNotFilled(NUdf::TUnboxedValuePod::InternalBufferSize, 1U); + UNIT_ASSERT(buf.IsString()); + UNIT_ASSERT_VALUES_EQUAL(buf.AsStringRef().Size(), NUdf::TUnboxedValuePod::InternalBufferSize); + UNIT_ASSERT_VALUES_EQUAL(buf.AsStringValue().Size(), NUdf::TUnboxedValuePod::InternalBufferSize + 1U); + } + } } |