Skip to content

Commit b4a5ff5

Browse files
authored
Added sparsed columns tests for standalone tables (#8167)
1 parent 62a41e4 commit b4a5ff5

File tree

2 files changed

+44
-14
lines changed

2 files changed

+44
-14
lines changed

ydb/core/kqp/ut/olap/helpers/typed_local.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class TTypedLocalHelper: public Tests::NCS::THelper {
2929
: TBase(kikimrRunner.GetTestServer())
3030
, TypeName(typeName)
3131
, KikimrRunner(kikimrRunner)
32-
, TablePath("/Root/" + storeName + "/" + tableName)
32+
, TablePath(storeName.empty() ? "/Root/" + tableName : "/Root/" + storeName + "/" + tableName)
3333
, TableName(tableName)
3434
, StoreName(storeName) {
3535
SetShardingMethod("HASH_FUNCTION_CONSISTENCY_64");

ydb/core/kqp/ut/olap/sparsed_ut.cpp

Lines changed: 43 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@ Y_UNIT_TEST_SUITE(KqpOlapSparsed) {
1818
const TKikimrSettings Settings = TKikimrSettings().SetWithSampleTables(false);
1919
TKikimrRunner Kikimr;
2020
NKikimr::NYDBTest::TControllers::TGuard<NKikimr::NYDBTest::NColumnShard::TController> CSController;
21+
const TString StoreName;
2122
public:
22-
TSparsedDataTest()
23+
TSparsedDataTest(const char* storeName)
2324
: Kikimr(Settings)
2425
, CSController(NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<NKikimr::NYDBTest::NColumnShard::TController>())
26+
, StoreName(storeName)
2527
{
2628

2729
}
@@ -30,8 +32,7 @@ Y_UNIT_TEST_SUITE(KqpOlapSparsed) {
3032
auto selectQuery = TString(R"(
3133
SELECT
3234
count(*) as count,
33-
FROM `/Root/olapStore/olapTable`
34-
)");
35+
FROM `/Root/)") + (StoreName.empty() ? "" : StoreName + "/") + "olapTable`";
3536

3637
auto tableClient = Kikimr.GetTableClient();
3738
auto rows = ExecuteScanQuery(tableClient, selectQuery);
@@ -42,17 +43,17 @@ Y_UNIT_TEST_SUITE(KqpOlapSparsed) {
4243
auto selectQuery = TString(R"(
4344
SELECT
4445
count(*) as count,
45-
FROM `/Root/olapStore/olapTable`
46+
FROM `/Root/)") + (StoreName.empty() ? "" : StoreName + "/") + R"(olapTable`
4647
WHERE field == 'abcde'
47-
)");
48+
)";
4849

4950
auto tableClient = Kikimr.GetTableClient();
5051
auto rows = ExecuteScanQuery(tableClient, selectQuery);
5152
return GetUint64(rows[0].at("count"));
5253
}
5354

5455
void FillCircle(const double shiftKff, const ui32 countExpectation) {
55-
TTypedLocalHelper helper("Utf8", Kikimr);
56+
TTypedLocalHelper helper("Utf8", Kikimr, "olapTable", StoreName);
5657
const double frq = 0.9;
5758
{
5859
NArrow::NConstruction::TStringPoolFiller sPool(1000, 52, "abcde", frq);
@@ -98,23 +99,52 @@ Y_UNIT_TEST_SUITE(KqpOlapSparsed) {
9899
CSController->SetOverridePeriodicWakeupActivationPeriod(TDuration::MilliSeconds(100));
99100

100101
Tests::NCommon::TLoggerInit(Kikimr).Initialize();
101-
TTypedLocalHelper helper("Utf8", Kikimr);
102-
helper.CreateTestOlapTable();
102+
TTypedLocalHelper helper("Utf8", Kikimr, "olapTable", StoreName);
103+
if (!StoreName.empty()) {
104+
helper.CreateTestOlapTable();
105+
} else {
106+
auto tableClient = Kikimr.GetTableClient();
107+
auto session = tableClient.CreateSession().GetValueSync().GetSession();
108+
109+
auto query = TStringBuilder() << R"(
110+
--!syntax_v1
111+
CREATE TABLE `/Root/olapTable`
112+
(
113+
pk_int int64 NOT NULL,
114+
field )" << "Utf8" << R"(,
115+
ts TimeStamp,
116+
PRIMARY KEY (pk_int)
117+
)
118+
PARTITION BY HASH(pk_int)
119+
WITH (
120+
STORE = COLUMN
121+
))";
122+
auto result = session.ExecuteSchemeQuery(query).GetValueSync();
123+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), NYdb::EStatus::SUCCESS, result.GetIssues().ToString());
124+
}
125+
126+
TString type = StoreName.empty() ? "TABLE" : "TABLESTORE";
127+
TString name = StoreName.empty() ? "olapTable" : "olapStore";
103128

104129
FillCircle(0, 10000);
105-
helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=field, `DATA_ACCESSOR_CONSTRUCTOR.CLASS_NAME`=`SPARSED`, `DEFAULT_VALUE`=`abcde`);");
130+
helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/" + name + "`(TYPE " + type + ") SET (ACTION=ALTER_COLUMN, NAME=field, `DATA_ACCESSOR_CONSTRUCTOR.CLASS_NAME`=`SPARSED`, `DEFAULT_VALUE`=`abcde`);");
106131
FillCircle(0.1, 11000);
107-
helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=field, `DATA_ACCESSOR_CONSTRUCTOR.CLASS_NAME`=`PLAIN`);");
132+
helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/" + name + "`(TYPE " + type + ") SET (ACTION=ALTER_COLUMN, NAME=field, `DATA_ACCESSOR_CONSTRUCTOR.CLASS_NAME`=`PLAIN`);");
108133
FillCircle(0.2, 12000);
109-
helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=field, `DATA_ACCESSOR_CONSTRUCTOR.CLASS_NAME`=`SPARSED`);");
134+
helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/" + name + "`(TYPE " + type + ") SET (ACTION=ALTER_COLUMN, NAME=field, `DATA_ACCESSOR_CONSTRUCTOR.CLASS_NAME`=`SPARSED`);");
110135
FillCircle(0.3, 13000);
111-
helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/olapStore` (TYPE TABLESTORE) SET (ACTION=ALTER_COLUMN, NAME=field, `DATA_ACCESSOR_CONSTRUCTOR.CLASS_NAME`=`PLAIN`);");
136+
helper.ExecuteSchemeQuery("ALTER OBJECT `/Root/" + name + "`(TYPE " + type + ") SET (ACTION=ALTER_COLUMN, NAME=field, `DATA_ACCESSOR_CONSTRUCTOR.CLASS_NAME`=`PLAIN`);");
112137
FillCircle(0.4, 14000);
113138
}
114139
};
115140

116141
Y_UNIT_TEST(Switching) {
117-
TSparsedDataTest test;
142+
TSparsedDataTest test("olapStore");
143+
test.Execute();
144+
}
145+
146+
Y_UNIT_TEST(SwitchingStandalone) {
147+
TSparsedDataTest test("");
118148
test.Execute();
119149
}
120150
}

0 commit comments

Comments
 (0)