aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorildar-khisambeev <ikhis@ydb.tech>2024-10-03 15:35:30 +0300
committerGitHub <noreply@github.com>2024-10-03 15:35:30 +0300
commitfc93096c862498a1b0d659b6009a1c72600f09aa (patch)
tree192377c33dda9def4121682c7db4a0ca72776016
parentf47bbfadcd385c882a9d32b5216c60481ebbdeba (diff)
downloadydb-fc93096c862498a1b0d659b6009a1c72600f09aa.tar.gz
add describe indices (#10032)
-rw-r--r--ydb/core/kqp/ut/olap/helpers/local.h6
-rw-r--r--ydb/core/kqp/ut/olap/indexes_ut.cpp43
-rw-r--r--ydb/core/testlib/cs_helper.cpp26
-rw-r--r--ydb/core/testlib/cs_helper.h4
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;