aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoruzhas <uzhas@ydb.tech>2022-09-18 16:28:14 +0300
committeruzhas <uzhas@ydb.tech>2022-09-18 16:28:14 +0300
commit66b66535ab32eb0252b2bf67c4677fde1dfdfb90 (patch)
tree9f96a8c06a5c22fddc7be6ecf542161a3f8d21a4
parent93d91eedd7b2f27f2878fa7d3d026d99b8e1d6b2 (diff)
downloadydb-66b66535ab32eb0252b2bf67c4677fde1dfdfb90.tar.gz
fix ExportTypeToProto for empty tuple type
-rw-r--r--ydb/library/mkql_proto/mkql_proto.cpp3
-rw-r--r--ydb/library/mkql_proto/mkql_proto_ut.cpp25
2 files changed, 27 insertions, 1 deletions
diff --git a/ydb/library/mkql_proto/mkql_proto.cpp b/ydb/library/mkql_proto/mkql_proto.cpp
index c09b539a746..6b9bb4b7d82 100644
--- a/ydb/library/mkql_proto/mkql_proto.cpp
+++ b/ydb/library/mkql_proto/mkql_proto.cpp
@@ -300,8 +300,9 @@ void ExportTypeToProtoImpl(TType* type, Ydb::Type& res) {
case TType::EKind::Tuple: {
auto tupleType = static_cast<TTupleType*>(type);
+ auto resTuple = res.mutable_tuple_type();
for (ui32 index = 0; index < tupleType->GetElementsCount(); ++index) {
- ExportTypeToProtoImpl(tupleType->GetElementType(index), *res.mutable_tuple_type()->add_elements());
+ ExportTypeToProtoImpl(tupleType->GetElementType(index), *resTuple->add_elements());
}
break;
diff --git a/ydb/library/mkql_proto/mkql_proto_ut.cpp b/ydb/library/mkql_proto/mkql_proto_ut.cpp
index 5cabfe8bcf2..1b8578780be 100644
--- a/ydb/library/mkql_proto/mkql_proto_ut.cpp
+++ b/ydb/library/mkql_proto/mkql_proto_ut.cpp
@@ -183,6 +183,23 @@ Y_UNIT_TEST_SUITE(TMiniKQLProtoTest) {
"}\n");
}
+ Y_UNIT_TEST(TestExportEmptyTupleType) {
+ TestExportType<NKikimrMiniKQL::TType>([](TProgramBuilder& pgmBuilder) {
+ TVector<TRuntimeNode> items;
+ auto pgmReturn = pgmBuilder.NewTuple(items);
+ return pgmReturn;
+ },
+ "Kind: Tuple\n");
+
+ TestExportType<Ydb::Type>([](TProgramBuilder& pgmBuilder) {
+ TVector<TRuntimeNode> items;
+ auto pgmReturn = pgmBuilder.NewTuple(items);
+ return pgmReturn;
+ },
+ "tuple_type {\n"
+ "}\n");
+ }
+
Y_UNIT_TEST(TestExportStructType) {
TestExportType<NKikimrMiniKQL::TType>([](TProgramBuilder& pgmBuilder) {
std::vector<std::pair<std::string_view, TRuntimeNode>> items;
@@ -221,6 +238,14 @@ Y_UNIT_TEST_SUITE(TMiniKQLProtoTest) {
return pgmReturn;
},
"Kind: Struct\n");
+
+ TestExportType<Ydb::Type>([](TProgramBuilder& pgmBuilder) {
+ std::vector<std::pair<std::string_view, TRuntimeNode>> items;
+ auto pgmReturn = pgmBuilder.NewStruct(items);
+ return pgmReturn;
+ },
+ "struct_type {\n"
+ "}\n");
}
Y_UNIT_TEST(TestExportDictType) {