From 875d5b322124894c14f7b40a7ffcc7f6ac3c6343 Mon Sep 17 00:00:00 2001 From: Nikita Vasilev Date: Mon, 1 Jul 2024 11:08:49 +0300 Subject: [PATCH 1/2] fix --- ydb/core/kqp/ut/olap/kqp_olap_ut.cpp | 35 +++++++++++++++++++++ ydb/library/yql/dq/type_ann/dq_type_ann.cpp | 1 + 2 files changed, 36 insertions(+) diff --git a/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp b/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp index 6bd78747c07e..3c368defa83f 100644 --- a/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp +++ b/ydb/core/kqp/ut/olap/kqp_olap_ut.cpp @@ -2622,6 +2622,41 @@ Y_UNIT_TEST_SUITE(KqpOlap) { } + Y_UNIT_TEST(MultiInsertWithSinks) { + NKikimrConfig::TAppConfig appConfig; + appConfig.MutableTableServiceConfig()->SetEnableOlapSink(true); + auto settings = TKikimrSettings() + .SetAppConfig(appConfig) + .SetWithSampleTables(false); + TKikimrRunner kikimr(settings); + + TLocalHelper(kikimr).CreateTestOlapTable(); + + auto db = kikimr.GetQueryClient(); + + auto result = db.ExecuteQuery(R"( + INSERT INTO `/Root/olapStore/olapTable` (timestamp, uid, resource_id) VALUES (Timestamp('1970-01-01T00:00:00Z'), 'a', '0'); + INSERT INTO `/Root/olapStore/olapTable` (timestamp, uid, resource_id) VALUES (Timestamp('1970-01-01T00:00:01Z'), 'b', 't'); + INSERT INTO `/Root/olapStore/olapTable` (timestamp, uid, resource_id) VALUES (Timestamp('1970-01-01T00:00:02Z'), 'c', 'test'); + )", NYdb::NQuery::TTxControl::BeginTx().CommitTx()).ExtractValueSync(); + + UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString()); + + { + auto it = db.StreamExecuteQuery(R"( + --!syntax_v1 + + SELECT + * + FROM `/Root/olapStore/olapTable` ORDER BY uid + )", NYdb::NQuery::TTxControl::BeginTx().CommitTx()).GetValueSync(); + + UNIT_ASSERT_C(it.IsSuccess(), it.GetIssues().ToString()); + TString result = StreamResultToYson(it); + CompareYson(result, R"([[#;#;["0"];0u;"a"];[#;#;["t"];1000000u;"b"];[#;#;["test"];2000000u;"c"]])"); + } + } + } } diff --git a/ydb/library/yql/dq/type_ann/dq_type_ann.cpp b/ydb/library/yql/dq/type_ann/dq_type_ann.cpp index 2ba6d62acf06..6b296ad2c8cf 100644 --- a/ydb/library/yql/dq/type_ann/dq_type_ann.cpp +++ b/ydb/library/yql/dq/type_ann/dq_type_ann.cpp @@ -273,6 +273,7 @@ TStatus AnnotateStage(const TExprNode::TPtr& stage, TExprContext& ctx) { for (auto sink : sinks) { sink->SetTypeAnn(resultType); } + stage->Child(TDqStageBase::idx_Outputs)->SetTypeAnn(stage->Child(TDqStageBase::idx_Outputs)->GetTypeAnn()); stageResultTypes.assign(programResultTypesTuple.begin(), programResultTypesTuple.end()); } else { for (auto transform : transforms) { From 96058a54d84f989c11e33232bf51225f0f6ea726 Mon Sep 17 00:00:00 2001 From: Nikita Vasilev Date: Mon, 1 Jul 2024 22:19:08 +0300 Subject: [PATCH 2/2] fix --- ydb/library/yql/dq/type_ann/dq_type_ann.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ydb/library/yql/dq/type_ann/dq_type_ann.cpp b/ydb/library/yql/dq/type_ann/dq_type_ann.cpp index 6b296ad2c8cf..91ecf3dd571e 100644 --- a/ydb/library/yql/dq/type_ann/dq_type_ann.cpp +++ b/ydb/library/yql/dq/type_ann/dq_type_ann.cpp @@ -270,10 +270,6 @@ TStatus AnnotateStage(const TExprNode::TPtr& stage, TExprContext& ctx) { } if (!sinks.empty()) { - for (auto sink : sinks) { - sink->SetTypeAnn(resultType); - } - stage->Child(TDqStageBase::idx_Outputs)->SetTypeAnn(stage->Child(TDqStageBase::idx_Outputs)->GetTypeAnn()); stageResultTypes.assign(programResultTypesTuple.begin(), programResultTypesTuple.end()); } else { for (auto transform : transforms) {