Browse Source

Fix PARTITION_COUNT option name and add tests (#9012)

Artem Alekseev 6 months ago
parent
commit
26c9911ed2

+ 6 - 6
ydb/core/kqp/ut/olap/kqp_olap_ut.cpp

@@ -51,7 +51,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
             PARTITION BY HASH(timestamp)
             PARTITION BY HASH(timestamp)
             WITH (
             WITH (
                 STORE = COLUMN,
                 STORE = COLUMN,
-                PARTITIONS_COUNT = %d
+                PARTITION_COUNT = %d
                 )
                 )
             )",
             )",
                              storeName.data(), tableName.data(), shardsCount);
                              storeName.data(), tableName.data(), shardsCount);
@@ -1846,7 +1846,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
             PARTITION BY HASH(WatchID)
             PARTITION BY HASH(WatchID)
             WITH (
             WITH (
                 STORE = COLUMN,
                 STORE = COLUMN,
-                PARTITIONS_COUNT =)" << numShards
+                PARTITION_COUNT =)" << numShards
                                       << ")";
                                       << ")";
         auto result = session.ExecuteSchemeQuery(query).GetValueSync();
         auto result = session.ExecuteSchemeQuery(query).GetValueSync();
         UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
         UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
@@ -1934,7 +1934,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
                 WITH (
                 WITH (
                     STORE = COLUMN,
                     STORE = COLUMN,
                     AUTO_PARTITIONING_BY_SIZE = ENABLED,
                     AUTO_PARTITIONING_BY_SIZE = ENABLED,
-                    PARTITIONS_COUNT = 1
+                    PARTITION_COUNT = 1
                 );
                 );
             )");
             )");
 
 
@@ -1988,7 +1988,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
                 WITH (
                 WITH (
                     STORE = COLUMN,
                     STORE = COLUMN,
                     AUTO_PARTITIONING_BY_SIZE = ENABLED,
                     AUTO_PARTITIONING_BY_SIZE = ENABLED,
-                    PARTITIONS_COUNT = 1
+                    PARTITION_COUNT = 1
                 );
                 );
             )");
             )");
 
 
@@ -2039,7 +2039,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
                 WITH (
                 WITH (
                     STORE = COLUMN,
                     STORE = COLUMN,
                     AUTO_PARTITIONING_BY_SIZE = ENABLED,
                     AUTO_PARTITIONING_BY_SIZE = ENABLED,
-                    PARTITIONS_COUNT = 8
+                    PARTITION_COUNT = 8
                 );
                 );
             )"
             )"
         );
         );
@@ -2510,7 +2510,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
                 PRIMARY KEY (a)
                 PRIMARY KEY (a)
             )
             )
             PARTITION BY HASH(a)
             PARTITION BY HASH(a)
-            WITH (STORE = COLUMN, PARTITIONS_COUNT = 4);
+            WITH (STORE = COLUMN, PARTITION_COUNT = 4);
         )";
         )";
 
 
         auto result = session.ExecuteSchemeQuery(query).GetValueSync();
         auto result = session.ExecuteSchemeQuery(query).GetValueSync();

+ 1 - 1
ydb/library/yql/sql/v1/node.h

@@ -1121,7 +1121,7 @@ namespace NSQLTranslationV1 {
         TMaybe<TIdentifier> AutoPartitioningByLoad;
         TMaybe<TIdentifier> AutoPartitioningByLoad;
         TNodePtr MinPartitions;
         TNodePtr MinPartitions;
         TNodePtr MaxPartitions;
         TNodePtr MaxPartitions;
-        TNodePtr PartitionsCount;
+        TNodePtr PartitionCount;
         TNodePtr UniformPartitions;
         TNodePtr UniformPartitions;
         TVector<TVector<TNodePtr>> PartitionAtKeys;
         TVector<TVector<TNodePtr>> PartitionAtKeys;
         TMaybe<TIdentifier> KeyBloomFilter;
         TMaybe<TIdentifier> KeyBloomFilter;

+ 3 - 3
ydb/library/yql/sql/v1/query.cpp

@@ -224,9 +224,9 @@ static INode::TPtr CreateTableSettings(const TTableSettings& tableSettings, ETab
     if (tableSettings.MaxPartitions) {
     if (tableSettings.MaxPartitions) {
         settings = L(settings, Q(Y(Q("maxPartitions"), tableSettings.MaxPartitions)));
         settings = L(settings, Q(Y(Q("maxPartitions"), tableSettings.MaxPartitions)));
     }
     }
-    if (tableSettings.PartitionsCount) {
-        settings = L(settings, Q(Y(Q("maxPartitions"), tableSettings.PartitionsCount)));
-        settings = L(settings, Q(Y(Q("minPartitions"), tableSettings.PartitionsCount)));
+    if (tableSettings.PartitionCount) {
+        settings = L(settings, Q(Y(Q("maxPartitions"), tableSettings.PartitionCount)));
+        settings = L(settings, Q(Y(Q("minPartitions"), tableSettings.PartitionCount)));
     }
     }
     if (tableSettings.KeyBloomFilter) {
     if (tableSettings.KeyBloomFilter) {
         const auto& ref = tableSettings.KeyBloomFilter.GetRef();
         const auto& ref = tableSettings.KeyBloomFilter.GetRef();

+ 3 - 3
ydb/library/yql/sql/v1/sql_translation.cpp

@@ -2041,7 +2041,7 @@ bool TSqlTranslation::StoreExternalTableSettingsEntry(const TIdentifier& id, con
 }
 }
 
 
 bool TSqlTranslation::ValidateTableSettings(const TTableSettings& settings) {
 bool TSqlTranslation::ValidateTableSettings(const TTableSettings& settings) {
-    if (settings.PartitionsCount) {
+    if (settings.PartitionCount) {
         if (!settings.StoreType || to_lower(settings.StoreType->Name) != "column") {
         if (!settings.StoreType || to_lower(settings.StoreType->Name) != "column") {
             Ctx.Error() << " PARTITION_COUNT can be used only with STORE=COLUMN";
             Ctx.Error() << " PARTITION_COUNT can be used only with STORE=COLUMN";
             return false;
             return false;
@@ -2109,13 +2109,13 @@ bool TSqlTranslation::StoreTableSettingsEntry(const TIdentifier& id, const TRule
             Ctx.Error() << to_upper(id.Name) << " value should be an integer";
             Ctx.Error() << to_upper(id.Name) << " value should be an integer";
             return false;
             return false;
         }
         }
-    } else if (to_lower(id.Name) == "partitions_count") {
+    } else if (to_lower(id.Name) == "partition_count") {
         if (reset) {
         if (reset) {
             Ctx.Error() << to_upper(id.Name) << " reset is not supported";
             Ctx.Error() << to_upper(id.Name) << " reset is not supported";
             return false;
             return false;
         }
         }
 
 
-        if (!StoreInt(*value, settings.PartitionsCount, Ctx)) {
+        if (!StoreInt(*value, settings.PartitionCount, Ctx)) {
             Ctx.Error() << to_upper(id.Name) << " value should be an integer";
             Ctx.Error() << to_upper(id.Name) << " value should be an integer";
             return false;
             return false;
         }
         }

+ 25 - 0
ydb/library/yql/sql/v1/sql_ut.cpp

@@ -7204,3 +7204,28 @@ Y_UNIT_TEST_SUITE(ResourcePoolClassifier) {
         UNIT_ASSERT_VALUES_EQUAL(1, elementStat["Write"]);
         UNIT_ASSERT_VALUES_EQUAL(1, elementStat["Write"]);
     }
     }
 }
 }
+
+Y_UNIT_TEST_SUITE(OlapPartitionCount) {
+    Y_UNIT_TEST(CorrectUsage) {
+        NYql::TAstParseResult res = SqlToYql(R"sql(
+            USE plato;
+            CREATE TABLE `mytable` (id Uint32, PRIMARY KEY (id))
+            PARTITION BY HASH(id)
+            WITH (STORE = COLUMN, PARTITION_COUNT = 8);
+        )sql");
+
+        UNIT_ASSERT_C(res.IsOk(), res.Issues.ToString());
+    }
+
+    Y_UNIT_TEST(UseWithoutColumnStore) {
+        NYql::TAstParseResult res = SqlToYql(R"sql(
+            USE plato;
+            CREATE TABLE `mytable` (id Uint32, PRIMARY KEY (id))
+            WITH (PARTITION_COUNT = 8);
+        )sql");
+
+        UNIT_ASSERT(!res.IsOk());
+        UNIT_ASSERT(res.Issues.Size() == 1);
+        UNIT_ASSERT_STRING_CONTAINS(res.Issues.ToString(), "PARTITION_COUNT can be used only with STORE=COLUMN");
+    }
+}