aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2024-12-20 18:44:48 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2024-12-20 18:57:51 +0300
commitdd1ca5f048ebdfa6b6d5f17f9fac41fc86e778d2 (patch)
tree1a333910e6abee6aee4158ef022230d5d0933348
parenta02b79b51b163a067e6e054ddc581e5fab073618 (diff)
downloadydb-dd1ca5f048ebdfa6b6d5f17f9fac41fc86e778d2.tar.gz
Intermediate changes
commit_hash:f1cb0ff8148e64bf3c980af5d0ac1eed3c3b0648
-rw-r--r--yt/yt/client/signature/unittests/ya.make2
-rw-r--r--yt/yt/library/formats/arrow_parser.cpp22
2 files changed, 15 insertions, 9 deletions
diff --git a/yt/yt/client/signature/unittests/ya.make b/yt/yt/client/signature/unittests/ya.make
index a18bab50526..b7f6fd5fe56 100644
--- a/yt/yt/client/signature/unittests/ya.make
+++ b/yt/yt/client/signature/unittests/ya.make
@@ -1,4 +1,4 @@
-GTEST(unittester-signature-service)
+GTEST(unittester-client-signature)
INCLUDE(${ARCADIA_ROOT}/yt/ya_cpp.make.inc)
diff --git a/yt/yt/library/formats/arrow_parser.cpp b/yt/yt/library/formats/arrow_parser.cpp
index c3c169352ba..7c112716e56 100644
--- a/yt/yt/library/formats/arrow_parser.cpp
+++ b/yt/yt/library/formats/arrow_parser.cpp
@@ -245,6 +245,7 @@ private:
void ParseSimpleNumeric(FuncType makeUnversionedValueFunc)
{
auto array = std::static_pointer_cast<ArrayType>(Array_);
+ YT_VERIFY(array->length() <= std::ssize(*RowValues_));
for (int rowIndex = 0; rowIndex < array->length(); ++rowIndex) {
if (array->IsNull(rowIndex)) {
(*RowValues_)[rowIndex] = MakeUnversionedNullValue(ColumnId_);
@@ -258,6 +259,7 @@ private:
arrow::Status ParseStringLikeArray(auto makeUnversionedValueFunc)
{
auto array = std::static_pointer_cast<ArrayType>(Array_);
+ YT_VERIFY(array->length() <= std::ssize(*RowValues_));
for (int rowIndex = 0; rowIndex < array->length(); ++rowIndex) {
if (array->IsNull(rowIndex)) {
(*RowValues_)[rowIndex] = MakeUnversionedNullValue(ColumnId_);
@@ -295,6 +297,7 @@ private:
arrow::Status ParseBoolean()
{
auto array = std::static_pointer_cast<arrow::BooleanArray>(Array_);
+ YT_VERIFY(array->length() <= std::ssize(*RowValues_));
for (int rowIndex = 0; rowIndex < array->length(); rowIndex++) {
if (array->IsNull(rowIndex)) {
(*RowValues_)[rowIndex] = MakeUnversionedNullValue(ColumnId_);
@@ -308,6 +311,7 @@ private:
arrow::Status ParseNull()
{
auto array = std::static_pointer_cast<arrow::NullArray>(Array_);
+ YT_VERIFY(array->length() <= std::ssize(*RowValues_));
for (int rowIndex = 0; rowIndex < array->length(); rowIndex++) {
(*RowValues_)[rowIndex] = MakeUnversionedNullValue(ColumnId_);
}
@@ -834,19 +838,21 @@ void PrepareArrayForSimpleLogicalType(
{
CheckMatchingArrowTypes(columnType, column);
if (column->type()->id() == arrow::Type::DICTIONARY) {
- auto dictionaryColumn = std::static_pointer_cast<arrow::DictionaryArray>(column);
- TUnversionedRowValues dictionaryValues(rowsValues[columnIndex].size());
- auto dictionaryValuesColumn = dictionaryColumn->dictionary();
- CheckMatchingArrowTypes(columnType, dictionaryValuesColumn);
+ auto dictionaryArrayColumn = std::static_pointer_cast<arrow::DictionaryArray>(column);
+ auto dictionary = dictionaryArrayColumn->dictionary();
+ TUnversionedRowValues dictionaryValues(dictionary->length());
+ CheckMatchingArrowTypes(columnType, dictionary);
- TArraySimpleVisitor visitor(columnType, columnId, dictionaryValuesColumn, bufferForStringLikeValues, &dictionaryValues);
- ThrowOnError(dictionaryColumn->dictionary()->type()->Accept(&visitor));
+ TArraySimpleVisitor visitor(columnType, columnId, dictionary, bufferForStringLikeValues, &dictionaryValues);
+ ThrowOnError(dictionaryArrayColumn->dictionary()->type()->Accept(&visitor));
for (int offset = 0; offset < std::ssize(rowsValues[columnIndex]); offset++) {
- if (dictionaryColumn->IsNull(offset)) {
+ if (dictionaryArrayColumn->IsNull(offset)) {
rowsValues[columnIndex][offset] = MakeUnversionedNullValue(columnId);
} else {
- rowsValues[columnIndex][offset] = dictionaryValues[dictionaryColumn->GetValueIndex(offset)];
+ auto dictionaryValueIndex = dictionaryArrayColumn->GetValueIndex(offset);
+ YT_VERIFY(dictionaryValueIndex < std::ssize(dictionaryValues));
+ rowsValues[columnIndex][offset] = dictionaryValues[dictionaryValueIndex];
}
}
} else {