diff options
author | ildar-khisambeev <ikhis@ydb.tech> | 2024-10-03 15:35:30 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-03 15:35:30 +0300 |
commit | fc93096c862498a1b0d659b6009a1c72600f09aa (patch) | |
tree | 192377c33dda9def4121682c7db4a0ca72776016 | |
parent | f47bbfadcd385c882a9d32b5216c60481ebbdeba (diff) | |
download | ydb-fc93096c862498a1b0d659b6009a1c72600f09aa.tar.gz |
add describe indices (#10032)
-rw-r--r-- | ydb/core/kqp/ut/olap/helpers/local.h | 6 | ||||
-rw-r--r-- | ydb/core/kqp/ut/olap/indexes_ut.cpp | 43 | ||||
-rw-r--r-- | ydb/core/testlib/cs_helper.cpp | 26 | ||||
-rw-r--r-- | ydb/core/testlib/cs_helper.h | 4 |
4 files changed, 65 insertions, 14 deletions
diff --git a/ydb/core/kqp/ut/olap/helpers/local.h b/ydb/core/kqp/ut/olap/helpers/local.h index 9511ad1828e..0ac389f9944 100644 --- a/ydb/core/kqp/ut/olap/helpers/local.h +++ b/ydb/core/kqp/ut/olap/helpers/local.h @@ -36,6 +36,10 @@ public: CreateOlapTablesWithStore(tableNames, storeName, storeShardsCount, tableShardsCount); } + void CreateTestOlapTableWithoutStore(TString tableName = "olapTable", ui32 tableShardsCount = 3) { + CreateOlapTables({tableName}, tableShardsCount); + } + using TBase::TBase; TLocalHelper(TKikimrRunner& runner) @@ -44,4 +48,4 @@ public: } }; -}
\ No newline at end of file +} diff --git a/ydb/core/kqp/ut/olap/indexes_ut.cpp b/ydb/core/kqp/ut/olap/indexes_ut.cpp index 593fe44a5d8..474b9d1b274 100644 --- a/ydb/core/kqp/ut/olap/indexes_ut.cpp +++ b/ydb/core/kqp/ut/olap/indexes_ut.cpp @@ -117,14 +117,15 @@ Y_UNIT_TEST_SUITE(KqpOlapIndexes) { csController->SetOverrideLagForCompactionBeforeTierings(TDuration::Seconds(1)); csController->SetOverrideReduceMemoryIntervalLimit(1LLU << 30); - TLocalHelper(kikimr).CreateTestOlapTable(); + TLocalHelper(kikimr).CreateTestOlapTableWithoutStore(); auto tableClient = kikimr.GetTableClient(); + auto& client = kikimr.GetTestClient(); Tests::NCommon::TLoggerInit(kikimr).SetComponents({NKikimrServices::TX_COLUMNSHARD}, "CS").SetPriority(NActors::NLog::PRI_DEBUG).Initialize(); { auto alterQuery = TStringBuilder() << - R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=cms_ts, TYPE=COUNT_MIN_SKETCH, + R"(ALTER OBJECT `/Root/olapTable` (TYPE TABLE) SET (ACTION=UPSERT_INDEX, NAME=cms_ts, TYPE=COUNT_MIN_SKETCH, FEATURES=`{"column_names" : ['timestamp']}`); )"; auto session = tableClient.CreateSession().GetValueSync().GetSession(); @@ -134,7 +135,7 @@ Y_UNIT_TEST_SUITE(KqpOlapIndexes) { { auto alterQuery = TStringBuilder() << - R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=cms_res_id, TYPE=COUNT_MIN_SKETCH, + R"(ALTER OBJECT `/Root/olapTable` (TYPE TABLE) SET (ACTION=UPSERT_INDEX, NAME=cms_res_id, TYPE=COUNT_MIN_SKETCH, FEATURES=`{"column_names" : ['resource_id']}`); )"; auto session = tableClient.CreateSession().GetValueSync().GetSession(); @@ -144,7 +145,7 @@ Y_UNIT_TEST_SUITE(KqpOlapIndexes) { { auto alterQuery = TStringBuilder() << - R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=cms_uid, TYPE=COUNT_MIN_SKETCH, + R"(ALTER OBJECT `/Root/olapTable` (TYPE TABLE) SET (ACTION=UPSERT_INDEX, NAME=cms_uid, TYPE=COUNT_MIN_SKETCH, FEATURES=`{"column_names" : ['uid']}`); )"; auto session = tableClient.CreateSession().GetValueSync().GetSession(); @@ -154,7 +155,7 @@ Y_UNIT_TEST_SUITE(KqpOlapIndexes) { { auto alterQuery = TStringBuilder() << - R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=cms_level, TYPE=COUNT_MIN_SKETCH, + R"(ALTER OBJECT `/Root/olapTable` (TYPE TABLE) SET (ACTION=UPSERT_INDEX, NAME=cms_level, TYPE=COUNT_MIN_SKETCH, FEATURES=`{"column_names" : ['level']}`); )"; auto session = tableClient.CreateSession().GetValueSync().GetSession(); @@ -164,7 +165,7 @@ Y_UNIT_TEST_SUITE(KqpOlapIndexes) { { auto alterQuery = TStringBuilder() << - R"(ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=UPSERT_INDEX, NAME=cms_message, TYPE=COUNT_MIN_SKETCH, + R"(ALTER OBJECT `/Root/olapTable` (TYPE TABLE) SET (ACTION=UPSERT_INDEX, NAME=cms_message, TYPE=COUNT_MIN_SKETCH, FEATURES=`{"column_names" : ['message']}`); )"; auto session = tableClient.CreateSession().GetValueSync().GetSession(); @@ -172,15 +173,31 @@ Y_UNIT_TEST_SUITE(KqpOlapIndexes) { UNIT_ASSERT_VALUES_EQUAL_C(alterResult.GetStatus(), NYdb::EStatus::SUCCESS, alterResult.GetIssues().ToString()); } - WriteTestData(kikimr, "/Root/olapStore/olapTable", 1000000, 300000000, 10000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 1100000, 300100000, 10000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 1200000, 300200000, 10000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 1300000, 300300000, 10000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 1400000, 300400000, 10000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 2000000, 200000000, 70000); - WriteTestData(kikimr, "/Root/olapStore/olapTable", 3000000, 100000000, 110000); + WriteTestData(kikimr, "/Root/olapTable", 1000000, 300000000, 10000); + WriteTestData(kikimr, "/Root/olapTable", 1100000, 300100000, 10000); + WriteTestData(kikimr, "/Root/olapTable", 1200000, 300200000, 10000); + WriteTestData(kikimr, "/Root/olapTable", 1300000, 300300000, 10000); + WriteTestData(kikimr, "/Root/olapTable", 1400000, 300400000, 10000); + WriteTestData(kikimr, "/Root/olapTable", 2000000, 200000000, 70000); + WriteTestData(kikimr, "/Root/olapTable", 3000000, 100000000, 110000); csController->WaitActualization(TDuration::Seconds(10)); + + { + auto res = client.Ls("/Root/olapTable"); + auto description = res->Record.GetPathDescription().GetColumnTableDescription(); + auto indexes = description.GetSchema().GetIndexes(); + UNIT_ASSERT(indexes.size() == 5); + + std::unordered_set<TString> indexNames{"cms_ts", "cms_res_id", "cms_uid", "cms_level", "cms_message"}; + for (const auto& i : indexes) { + Cerr << ">>> " << i.GetName() << " of class name " << i.GetClassName() << Endl; + UNIT_ASSERT(i.GetClassName() == "COUNT_MIN_SKETCH"); + UNIT_ASSERT(indexNames.erase(i.GetName())); + } + UNIT_ASSERT(indexNames.empty()); + } + { auto runtime = kikimr.GetTestServer().GetRuntime(); auto sender = runtime->AllocateEdgeActor(); diff --git a/ydb/core/testlib/cs_helper.cpp b/ydb/core/testlib/cs_helper.cpp index dd26da35fa7..1cfcf27623e 100644 --- a/ydb/core/testlib/cs_helper.cpp +++ b/ydb/core/testlib/cs_helper.cpp @@ -230,6 +230,32 @@ void THelper::CreateOlapTablesWithStore(TVector<TString> tableNames /*= {"olapTa CreateSchemaOlapTablesWithStore(GetTestTableSchema(), tableNames, storeName, storeShardsCount, tableShardsCount); } +void THelper::CreateSchemaOlapTables(const TString tableSchema, TVector<TString> tableNames, ui32 tableShardsCount) { + TActorId sender = Server.GetRuntime()->AllocateEdgeActor(); + + const TString shardingColumns = "[\"" + JoinSeq("\",\"", GetShardingColumns()) + "\"]"; + + for (const TString& tableName : tableNames) { + TBase::CreateTestOlapTable(sender, "", Sprintf(R"( + Name: "%s" + ColumnShardCount: %d + Sharding { + HashSharding { + Function: %s + Columns: %s + } + } + Schema { + %s + } + )", tableName.c_str(), tableShardsCount, ShardingMethod.data(), shardingColumns.c_str(), tableSchema.data())); + } +} + +void THelper::CreateOlapTables(TVector<TString> tableNames /*= {"olapTable"}*/, ui32 tableShardsCount /*= 3*/) { + CreateSchemaOlapTables(GetTestTableSchema(), tableNames, tableShardsCount); +} + // Clickbench table std::shared_ptr<arrow::Schema> TCickBenchHelper::GetArrowSchema() const { diff --git a/ydb/core/testlib/cs_helper.h b/ydb/core/testlib/cs_helper.h index 95c8877b6ba..8f7197254cd 100644 --- a/ydb/core/testlib/cs_helper.h +++ b/ydb/core/testlib/cs_helper.h @@ -37,6 +37,10 @@ protected: void CreateOlapTablesWithStore(TVector<TString> tableName = {"olapTable"}, TString storeName = "olapStore", ui32 storeShardsCount = 4, ui32 tableShardsCount = 3); + void CreateSchemaOlapTables(const TString tableSchema, TVector<TString> tableNames = {"olapTable"}, + ui32 tableShardsCount = 3); + void CreateOlapTables(TVector<TString> tableName = {"olapTable"}, ui32 tableShardsCount = 3); + public: using TBase::TBase; |