From 280f7e5ebd7abd0f6049f291b07c63f9b78e04ad Mon Sep 17 00:00:00 2001 From: Vitalii Gridnev Date: Thu, 7 Mar 2024 22:45:09 +0300 Subject: [PATCH] fix default for delete on (#2554) --- ydb/core/kqp/provider/yql_kikimr_type_ann.cpp | 2 +- ydb/core/kqp/ut/scheme/kqp_constraints_ut.cpp | 93 +++++++++++++++++++ 2 files changed, 94 insertions(+), 1 deletion(-) diff --git a/ydb/core/kqp/provider/yql_kikimr_type_ann.cpp b/ydb/core/kqp/provider/yql_kikimr_type_ann.cpp index 12eaf9cd1432..527cc1dce28e 100644 --- a/ydb/core/kqp/provider/yql_kikimr_type_ann.cpp +++ b/ydb/core/kqp/provider/yql_kikimr_type_ann.cpp @@ -429,7 +429,7 @@ class TKiSinkTypeAnnotationTransformer : public TKiSinkVisitorTransformer continue; } - if (op == TYdbOperation::UpdateOn) { + if (op == TYdbOperation::UpdateOn || op == TYdbOperation::DeleteOn) { continue; } diff --git a/ydb/core/kqp/ut/scheme/kqp_constraints_ut.cpp b/ydb/core/kqp/ut/scheme/kqp_constraints_ut.cpp index e0ab76506b08..71ff6bc7da91 100644 --- a/ydb/core/kqp/ut/scheme/kqp_constraints_ut.cpp +++ b/ydb/core/kqp/ut/scheme/kqp_constraints_ut.cpp @@ -287,6 +287,99 @@ Y_UNIT_TEST_SUITE(KqpConstraints) { TestSerialType("serial8"); } + Y_UNIT_TEST(DefaultsAndDeleteAndUpdate) { + NKikimrConfig::TAppConfig appConfig; + appConfig.MutableTableServiceConfig()->SetEnableSequences(false); + appConfig.MutableTableServiceConfig()->SetEnableColumnsWithDefault(true); + auto serverSettings = TKikimrSettings().SetAppConfig(appConfig); + TKikimrRunner kikimr(serverSettings); + auto db = kikimr.GetTableClient(); + auto session = db.CreateSession().GetValueSync().GetSession(); + + { + auto query = R"( + --!syntax_v1 + CREATE TABLE `/Root/DefaultsAndDeleteAndUpdate` ( + Key Int32, + Value String DEFAULT "somestring", + PRIMARY KEY (Key) + ); + )"; + + auto result = session.ExecuteSchemeQuery(query).GetValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, + result.GetIssues().ToString()); + } + + { + TString query = R"( + UPSERT INTO `/Root/DefaultsAndDeleteAndUpdate` (Key) VALUES (1), (2), (3), (4); + )"; + + NYdb::NTable::TExecDataQuerySettings execSettings; + execSettings.KeepInQueryCache(true); + execSettings.CollectQueryStats(ECollectQueryStatsMode::Basic); + + auto result = + session + .ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx(), + execSettings) + .ExtractValueSync(); + + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, + result.GetIssues().ToString()); + } + + { + TString query = R"( + SELECT * FROM `/Root/DefaultsAndDeleteAndUpdate`; + )"; + + NYdb::NTable::TExecDataQuerySettings execSettings; + execSettings.KeepInQueryCache(true); + execSettings.CollectQueryStats(ECollectQueryStatsMode::Basic); + + auto result = + session + .ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx(), + execSettings) + .ExtractValueSync(); + + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, + result.GetIssues().ToString()); + CompareYson(R"( + [ + [[1];["somestring"]]; + [[2];["somestring"]]; + [[3];["somestring"]]; + [[4];["somestring"]] + ] + )", + NYdb::FormatResultSetYson(result.GetResultSet(0))); + } + + { + TString query = R"( + $object_pk = <|Key:1|>; + DELETE FROM `/Root/DefaultsAndDeleteAndUpdate` ON + SELECT * FROM AS_TABLE(AsList($object_pk)); + )"; + + NYdb::NTable::TExecDataQuerySettings execSettings; + execSettings.KeepInQueryCache(true); + execSettings.CollectQueryStats(ECollectQueryStatsMode::Basic); + + auto result = + session + .ExecuteDataQuery(query, TTxControl::BeginTx().CommitTx(), + execSettings) + .ExtractValueSync(); + + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, + result.GetIssues().ToString()); + } + } + Y_UNIT_TEST(AlterTableAddColumnWithDefaultValue) { NKikimrConfig::TAppConfig appConfig; appConfig.MutableTableServiceConfig()->SetEnableSequences(false);