aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsnaury <snaury@ydb.tech>2023-07-13 10:57:45 +0300
committersnaury <snaury@ydb.tech>2023-07-13 10:57:45 +0300
commitf85ed558056c615312bc2d44a967e3487f3cc164 (patch)
tree1c2dff4d8c0bda7b8c7e7c9b43e04577fe2a51f4
parent9f4741d3d4ab7382464d2702a10c1b4e1a32508f (diff)
downloadydb-f85ed558056c615312bc2d44a967e3487f3cc164.tar.gz
Fix DefaultFromSequence with indexes KIKIMR-18699
-rw-r--r--ydb/core/tx/schemeshard/schemeshard_utils.cpp5
-rw-r--r--ydb/core/tx/schemeshard/ut_sequence.cpp34
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)