diff options
author | uzhas <uzhas@ydb.tech> | 2022-09-18 16:28:14 +0300 |
---|---|---|
committer | uzhas <uzhas@ydb.tech> | 2022-09-18 16:28:14 +0300 |
commit | 66b66535ab32eb0252b2bf67c4677fde1dfdfb90 (patch) | |
tree | 9f96a8c06a5c22fddc7be6ecf542161a3f8d21a4 | |
parent | 93d91eedd7b2f27f2878fa7d3d026d99b8e1d6b2 (diff) | |
download | ydb-66b66535ab32eb0252b2bf67c4677fde1dfdfb90.tar.gz |
fix ExportTypeToProto for empty tuple type
-rw-r--r-- | ydb/library/mkql_proto/mkql_proto.cpp | 3 | ||||
-rw-r--r-- | ydb/library/mkql_proto/mkql_proto_ut.cpp | 25 |
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) { |