Skip to content

Commit 71218f4

Browse files
authored
Rename vector index (#17982)
1 parent 06defc0 commit 71218f4

File tree

2 files changed

+61
-39
lines changed

2 files changed

+61
-39
lines changed

ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp

Lines changed: 53 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2840,29 +2840,32 @@ Y_UNIT_TEST_SUITE(KqpScheme) {
28402840
}
28412841
}
28422842

2843+
void CreateTestTableWithVectorIndex(TSession& session) {
2844+
TString create_index_query = R"(
2845+
--!syntax_v1
2846+
CREATE TABLE `/Root/TestTable` (
2847+
Key Uint64,
2848+
Embedding String,
2849+
PRIMARY KEY (Key),
2850+
INDEX vector_idx
2851+
GLOBAL USING vector_kmeans_tree
2852+
ON (Embedding)
2853+
WITH (similarity=inner_product, vector_type=float, vector_dimension=1024)
2854+
);
2855+
)";
2856+
auto result = session.ExecuteSchemeQuery(create_index_query).ExtractValueSync();
2857+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
2858+
}
2859+
28432860
Y_UNIT_TEST(AlterTableAlterVectorIndex) {
28442861
NKikimrConfig::TFeatureFlags featureFlags;
28452862
featureFlags.SetEnableVectorIndex(true);
28462863
auto settings = TKikimrSettings().SetFeatureFlags(featureFlags);
28472864
TKikimrRunner kikimr(settings);
28482865
auto db = kikimr.GetTableClient();
28492866
auto session = db.CreateSession().GetValueSync().GetSession();
2850-
{
2851-
TString create_index_query = R"(
2852-
--!syntax_v1
2853-
CREATE TABLE `/Root/TestTable` (
2854-
Key Uint64,
2855-
Embedding String,
2856-
PRIMARY KEY (Key),
2857-
INDEX vector_idx
2858-
GLOBAL USING vector_kmeans_tree
2859-
ON (Embedding)
2860-
WITH (similarity=cosine, vector_type=bit, vector_dimension=1)
2861-
);
2862-
)";
2863-
auto result = session.ExecuteSchemeQuery(create_index_query).ExtractValueSync();
2864-
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
2865-
}
2867+
2868+
CreateTestTableWithVectorIndex(session);
28662869
{
28672870
auto describe = session.DescribeTable("/Root/TestTable/vector_idx/indexImplPostingTable").GetValueSync();
28682871
UNIT_ASSERT_C(describe.IsSuccess(), describe.GetIssues().ToString());
@@ -3108,24 +3111,7 @@ Y_UNIT_TEST_SUITE(KqpScheme) {
31083111
TKikimrRunner kikimr(settings);
31093112
auto db = kikimr.GetTableClient();
31103113
auto session = db.CreateSession().GetValueSync().GetSession();
3111-
{
3112-
TString create_index_query = R"(
3113-
--!syntax_v1
3114-
CREATE TABLE `/Root/TestTable` (
3115-
Key Uint64,
3116-
Embedding String,
3117-
PRIMARY KEY (Key),
3118-
INDEX vector_idx
3119-
GLOBAL USING vector_kmeans_tree
3120-
ON (Embedding)
3121-
WITH (similarity=inner_product, vector_type=float, vector_dimension=1024)
3122-
);
3123-
)";
3124-
3125-
auto result = session.ExecuteSchemeQuery(create_index_query).ExtractValueSync();
3126-
3127-
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
3128-
}
3114+
CreateTestTableWithVectorIndex(session);
31293115
{
31303116
auto result = session.DescribeTable("/Root/TestTable").ExtractValueSync();
31313117
UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), NYdb::EStatus::SUCCESS);
@@ -3326,6 +3312,39 @@ Y_UNIT_TEST_SUITE(KqpScheme) {
33263312
}
33273313
}
33283314

3315+
Y_UNIT_TEST(AlterTableRenameVectorIndex) {
3316+
NKikimrConfig::TFeatureFlags featureFlags;
3317+
featureFlags.SetEnableVectorIndex(true);
3318+
auto settings = TKikimrSettings().SetFeatureFlags(featureFlags);
3319+
TKikimrRunner kikimr(settings);
3320+
auto db = kikimr.GetTableClient();
3321+
auto session = db.CreateSession().GetValueSync().GetSession();
3322+
CreateTestTableWithVectorIndex(session);
3323+
{
3324+
auto status = session.ExecuteSchemeQuery(R"(
3325+
--!syntax_v1
3326+
ALTER TABLE `/Root/TestTable` RENAME INDEX vector_idx TO RenamedIndex;
3327+
)").ExtractValueSync();
3328+
UNIT_ASSERT_VALUES_EQUAL_C(status.GetStatus(), EStatus::SUCCESS, status.GetIssues().ToString());
3329+
}
3330+
3331+
{
3332+
TDescribeTableResult describe = session.DescribeTable("/Root/TestTable").GetValueSync();
3333+
UNIT_ASSERT_EQUAL(describe.GetStatus(), EStatus::SUCCESS);
3334+
auto indexDesc = describe.GetTableDescription().GetIndexDescriptions();
3335+
UNIT_ASSERT_VALUES_EQUAL(indexDesc.size(), 1);
3336+
UNIT_ASSERT_VALUES_EQUAL(indexDesc.back().GetIndexName(), "RenamedIndex");
3337+
UNIT_ASSERT_VALUES_EQUAL(indexDesc.back().GetIndexColumns().size(), 1);
3338+
UNIT_ASSERT_VALUES_EQUAL(indexDesc.back().GetDataColumns().size(), 0);
3339+
}
3340+
{
3341+
auto describeLevelTable = session.DescribeTable("/Root/TestTable/RenamedIndex/indexImplLevelTable").GetValueSync();
3342+
UNIT_ASSERT_C(describeLevelTable.IsSuccess(), describeLevelTable.GetIssues().ToString());
3343+
auto describePostingTable = session.DescribeTable("/Root/TestTable/RenamedIndex/indexImplPostingTable").GetValueSync();
3344+
UNIT_ASSERT_C(describePostingTable.IsSuccess(), describePostingTable.GetIssues().ToString());
3345+
}
3346+
}
3347+
33293348
Y_UNIT_TEST(AlterTableWithDecimalColumn) {
33303349
TKikimrRunner kikimr;
33313350
auto db = kikimr.GetTableClient();

ydb/core/tx/schemeshard/schemeshard__operation_move_index.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -596,14 +596,17 @@ TVector<ISubOperation::TPtr> CreateConsistentMoveIndex(TOperationId nextId, cons
596596

597597
result.push_back(CreateMoveTableIndex(NextPartId(nextId, result), MoveTableIndexTask(srcIndexPath, dstIndexPath)));
598598

599-
TString srcImplTableName = srcIndexPath.Base()->GetChildren().begin()->first;
600-
TPath srcImplTable = srcIndexPath.Child(srcImplTableName);
599+
for(const auto& implTable : srcIndexPath.Base()->GetChildren()) {
600+
TString srcImplTableName = implTable.first;
601+
TPath srcImplTable = srcIndexPath.Child(srcImplTableName);
601602

602-
Y_ABORT_UNLESS(srcImplTable.Base()->PathId == srcIndexPath.Base()->GetChildren().begin()->second);
603+
Y_ABORT_UNLESS(srcImplTable.Base()->PathId == implTable.second);
603604

604-
TPath dstImplTable = dstIndexPath.Child(srcImplTableName);
605+
TPath dstImplTable = dstIndexPath.Child(srcImplTableName);
606+
607+
result.push_back(CreateMoveTable(NextPartId(nextId, result), MoveTableTask(srcImplTable, dstImplTable)));
608+
}
605609

606-
result.push_back(CreateMoveTable(NextPartId(nextId, result), MoveTableTask(srcImplTable, dstImplTable)));
607610
return result;
608611
}
609612

0 commit comments

Comments
 (0)