From 1cc8c90c641b00d4ad9146505a3942eef6a307df Mon Sep 17 00:00:00 2001 From: Mikhail Surin Date: Thu, 9 Jan 2025 11:09:04 +0300 Subject: [PATCH 1/2] add conflict ut --- ydb/core/kqp/ut/opt/kqp_returning_ut.cpp | 46 ++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/ydb/core/kqp/ut/opt/kqp_returning_ut.cpp b/ydb/core/kqp/ut/opt/kqp_returning_ut.cpp index 6a37e7b12abf..2a87a5074780 100644 --- a/ydb/core/kqp/ut/opt/kqp_returning_ut.cpp +++ b/ydb/core/kqp/ut/opt/kqp_returning_ut.cpp @@ -118,6 +118,52 @@ Y_UNIT_TEST(ReturningTwice) { } } +Y_UNIT_TEST(ReplaceSerial) { + NKikimrConfig::TAppConfig appConfig; + appConfig.MutableTableServiceConfig()->SetEnableSequences(true); + appConfig.MutableTableServiceConfig()->SetEnableColumnsWithDefault(true); + auto serverSettings = TKikimrSettings().SetAppConfig(appConfig); + TKikimrRunner kikimr(serverSettings); + + auto client = kikimr.GetTableClient(); + auto session = client.CreateSession().GetValueSync().GetSession(); + + const auto queryCreate = Q_(R"( + --!syntax_v1 + CREATE TABLE ReturningTable ( + key Serial, + value Int32, + PRIMARY KEY (key)); + )"); + + auto resultCreate = session.ExecuteSchemeQuery(queryCreate).GetValueSync(); + UNIT_ASSERT_C(resultCreate.IsSuccess(), resultCreate.GetIssues().ToString()); + + { + const auto query = Q_(R"( + --!syntax_v1 + REPLACE INTO ReturningTable (key, value) VALUES (2, 10) RETURNING key, value; + )"); + + auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).GetValueSync(); + UNIT_ASSERT(result.IsSuccess()); + + CompareYson(R"([[2;[10]]])", FormatResultSetYson(result.GetResultSet(0))); + } + + { + const auto query = Q_(R"( + --!syntax_v1 + REPLACE INTO ReturningTable (value) VALUES(1), (2), (3) RETURNING key, value; + )"); + + auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).GetValueSync(); + UNIT_ASSERT(result.IsSuccess()); + + CompareYson(R"([[1;[1]];[2;[2]];[3;[3]]])", FormatResultSetYson(result.GetResultSet(0))); + } +} + Y_UNIT_TEST(ReturningSerial) { NKikimrConfig::TAppConfig appConfig; appConfig.MutableTableServiceConfig()->SetEnableSequences(true); From b55cf5719c4208a82134b32738c1406ffd24f4a5 Mon Sep 17 00:00:00 2001 From: Mikhail Surin Date: Thu, 9 Jan 2025 11:19:18 +0300 Subject: [PATCH 2/2] add select statement --- ydb/core/kqp/ut/opt/kqp_returning_ut.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ydb/core/kqp/ut/opt/kqp_returning_ut.cpp b/ydb/core/kqp/ut/opt/kqp_returning_ut.cpp index 2a87a5074780..29d2d742e0f5 100644 --- a/ydb/core/kqp/ut/opt/kqp_returning_ut.cpp +++ b/ydb/core/kqp/ut/opt/kqp_returning_ut.cpp @@ -162,6 +162,18 @@ Y_UNIT_TEST(ReplaceSerial) { CompareYson(R"([[1;[1]];[2;[2]];[3;[3]]])", FormatResultSetYson(result.GetResultSet(0))); } + + { + const auto query = Q_(R"( + --!syntax_v1 + select key, value from ReturningTable order by key asc; + )"); + + auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx()).GetValueSync(); + UNIT_ASSERT(result.IsSuccess()); + + CompareYson(R"([[1;[1]];[2;[2]];[3;[3]]])", FormatResultSetYson(result.GetResultSet(0))); + } } Y_UNIT_TEST(ReturningSerial) {