diff options
author | snaury <snaury@ydb.tech> | 2023-07-13 10:57:45 +0300 |
---|---|---|
committer | snaury <snaury@ydb.tech> | 2023-07-13 10:57:45 +0300 |
commit | f85ed558056c615312bc2d44a967e3487f3cc164 (patch) | |
tree | 1c2dff4d8c0bda7b8c7e7c9b43e04577fe2a51f4 | |
parent | 9f4741d3d4ab7382464d2702a10c1b4e1a32508f (diff) | |
download | ydb-f85ed558056c615312bc2d44a967e3487f3cc164.tar.gz |
Fix DefaultFromSequence with indexes KIKIMR-18699
-rw-r--r-- | ydb/core/tx/schemeshard/schemeshard_utils.cpp | 5 | ||||
-rw-r--r-- | ydb/core/tx/schemeshard/ut_sequence.cpp | 34 |
2 files changed, 38 insertions, 1 deletions
diff --git a/ydb/core/tx/schemeshard/schemeshard_utils.cpp b/ydb/core/tx/schemeshard/schemeshard_utils.cpp index 6b604381c0..ed05fbbd49 100644 --- a/ydb/core/tx/schemeshard/schemeshard_utils.cpp +++ b/ydb/core/tx/schemeshard/schemeshard_utils.cpp @@ -352,12 +352,15 @@ NKikimrSchemeOp::TTableDescription CalcImplTableDesc( auto& columnName = column.GetName(); if (implTableColumns.Columns.contains(columnName)) { auto item = result.AddColumns(); - item->CopyFrom(column); + *item = column; // Indexes don't use column families item->ClearFamily(); item->ClearFamilyName(); + // Indexes can't have a default value + item->ClearDefaultValue(); + ui32 order = Max<ui32>(); if (implKeyToImplColumn.contains(columnName)) { order = implKeyToImplColumn.at(columnName); diff --git a/ydb/core/tx/schemeshard/ut_sequence.cpp b/ydb/core/tx/schemeshard/ut_sequence.cpp index 5997244e6b..2056b24ff8 100644 --- a/ydb/core/tx/schemeshard/ut_sequence.cpp +++ b/ydb/core/tx/schemeshard/ut_sequence.cpp @@ -302,4 +302,38 @@ Y_UNIT_TEST_SUITE(TSequence) { TestLs(runtime, "/MyRoot/Table", false, NLs::PathNotExist); } + Y_UNIT_TEST(CreateTableWithDefaultFromSequenceAndIndex) { + TTestBasicRuntime runtime; + TTestEnv env(runtime); + ui64 txId = 100; + + runtime.SetLogPriority(NKikimrServices::FLAT_TX_SCHEMESHARD, NActors::NLog::PRI_TRACE); + runtime.SetLogPriority(NKikimrServices::SEQUENCESHARD, NActors::NLog::PRI_TRACE); + + TestCreateIndexedTable(runtime, ++txId, "/MyRoot", R"( + TableDescription { + Name: "Table" + Columns { Name: "key" Type: "Uint64" DefaultFromSequence: "myseq" } + Columns { Name: "value" Type: "Utf8" } + KeyColumnNames: ["key"] + } + IndexDescription { + Name: "ValueIndex" + KeyColumnNames: ["value"] + } + SequenceDescription { + Name: "myseq" + } + )"); + env.TestWaitNotification(runtime, txId); + + TestLs(runtime, "/MyRoot/Table/ValueIndex", TDescribeOptionsBuilder().SetShowPrivateTable(true), NLs::PathExist); + TestLs(runtime, "/MyRoot/Table/myseq", TDescribeOptionsBuilder().SetShowPrivateTable(true), NLs::PathExist); + + TestDropTable(runtime, ++txId, "/MyRoot", "Table"); + env.TestWaitNotification(runtime, txId); + + TestLs(runtime, "/MyRoot/Table", false, NLs::PathNotExist); + } + } // Y_UNIT_TEST_SUITE(TSequence) |