This is an automated email from the ASF dual-hosted git repository.
zstan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new b00dec30d4e IGNITE-25807 Support disabling auto scale in SQL (#6263)
b00dec30d4e is described below
commit b00dec30d4eb918f20714d94ed5bc4d600d6d97a
Author: Evgeniy Stanilovskiy <[email protected]>
AuthorDate: Tue Jul 29 09:01:12 2025 +0300
IGNITE-25807 Support disabling auto scale in SQL (#6263)
---
.../ignite/internal/sql/engine/ItZoneDdlTest.java | 2 +-
modules/sql-engine/src/main/codegen/config.fmpp | 4 +-
.../src/main/codegen/includes/parserImpls.ftl | 49 +++++---
.../prepare/ddl/DdlSqlToCommandConverter.java | 19 +++
.../sql/engine/sql/IgniteSqlZoneOptionMode.java | 5 +-
.../DistributionZoneSqlToCommandConverterTest.java | 134 ++++++++++++++-------
.../sql/DistributionZoneSqlDdlParserTest.java | 6 -
7 files changed, 152 insertions(+), 67 deletions(-)
diff --git
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItZoneDdlTest.java
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItZoneDdlTest.java
index 49de7657c36..8d2aa5ca45f 100644
---
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItZoneDdlTest.java
+++
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItZoneDdlTest.java
@@ -298,7 +298,7 @@ public class ItZoneDdlTest extends
ClusterPerClassIntegrationTest {
private static void tryToAlterZone(String zoneName, int
dataNodesAutoAdjust, boolean failIfNotExists) {
sql(String.format(
- "ALTER ZONE %s SET (AUTO ADJUST %s)",
+ "ALTER ZONE %s SET (AUTO SCALE UP %s)",
failIfNotExists ? zoneName : "IF EXISTS " + zoneName,
dataNodesAutoAdjust
));
}
diff --git a/modules/sql-engine/src/main/codegen/config.fmpp
b/modules/sql-engine/src/main/codegen/config.fmpp
index 970792ff186..cdbd066449e 100644
--- a/modules/sql-engine/src/main/codegen/config.fmpp
+++ b/modules/sql-engine/src/main/codegen/config.fmpp
@@ -69,6 +69,7 @@ data: {
# List of new keywords. Example: "DATABASES", "TABLES". If the keyword is
# not a reserved keyword, add it to the 'nonReservedKeywords' section.
keywords: [
+ "OFF"
"AUTO"
"DOWN"
"PARTITIONS"
@@ -77,7 +78,6 @@ data: {
"DISTRIBUTION"
"ALGORITHM"
"NODES"
- "ADJUST"
"CONSISTENCY"
"MODE"
"COLOCATE"
@@ -102,6 +102,7 @@ data: {
# items in this list become non-reserved.
nonReservedKeywordsToAdd: [
# Keywords introduced by Ignite
+ "OFF"
"AUTO"
"DOWN"
"PARTITIONS"
@@ -110,7 +111,6 @@ data: {
"DISTRIBUTION"
"ALGORITHM"
"NODES"
- "ADJUST"
"CONSISTENCY"
"MODE"
"PROFILES"
diff --git a/modules/sql-engine/src/main/codegen/includes/parserImpls.ftl
b/modules/sql-engine/src/main/codegen/includes/parserImpls.ftl
index f1741fb4c00..6fd9e4a2825 100644
--- a/modules/sql-engine/src/main/codegen/includes/parserImpls.ftl
+++ b/modules/sql-engine/src/main/codegen/includes/parserImpls.ftl
@@ -618,7 +618,7 @@ SqlNodeList ZoneOptionsList() :
void ZoneElement(List<SqlNode> zoneOptions) :
{
final Span s;
- final SqlIdentifier key;
+ SqlIdentifier key;
final SqlNode option;
final SqlParserPos pos;
}
@@ -629,24 +629,45 @@ void ZoneElement(List<SqlNode> zoneOptions) :
(
<SCALE>
(
- <UP> option = UnsignedIntegerLiteral()
- {
- key = new
SqlIdentifier(ZoneOptionEnum.DATA_NODES_AUTO_ADJUST_SCALE_UP.name(), pos);
- zoneOptions.add(new IgniteSqlZoneOption(key, option,
s.end(this)));
- }
+ <UP>
+ (
+ option = UnsignedIntegerLiteral()
+ {
+ key = new
SqlIdentifier(ZoneOptionEnum.DATA_NODES_AUTO_ADJUST_SCALE_UP.name(), pos);
+ zoneOptions.add(new IgniteSqlZoneOption(key, option,
s.end(this)));
+ }
+ |
+ <OFF>
+ {
+ key = new
SqlIdentifier(ZoneOptionEnum.DATA_NODES_AUTO_ADJUST_SCALE_UP.name(), pos);
+ zoneOptions.add(new IgniteSqlZoneOption(key,
IgniteSqlZoneOptionMode.SCALE_OFF.symbol(getPos()), s.end(this)));
+ }
+ )
+ |
+ <DOWN>
+ (
+ option = UnsignedIntegerLiteral()
+ {
+ key = new
SqlIdentifier(ZoneOptionEnum.DATA_NODES_AUTO_ADJUST_SCALE_DOWN.name(), pos);
+ zoneOptions.add(new IgniteSqlZoneOption(key, option,
s.end(this)));
+ }
+ |
+ <OFF>
+ {
+ key = new
SqlIdentifier(ZoneOptionEnum.DATA_NODES_AUTO_ADJUST_SCALE_DOWN.name(), pos);
+ zoneOptions.add(new IgniteSqlZoneOption(key,
IgniteSqlZoneOptionMode.SCALE_OFF.symbol(getPos()), s.end(this)));
+ }
+ )
|
- <DOWN> option = UnsignedIntegerLiteral()
+ <OFF>
{
+ key = new
SqlIdentifier(ZoneOptionEnum.DATA_NODES_AUTO_ADJUST_SCALE_UP.name(), pos);
+ zoneOptions.add(new IgniteSqlZoneOption(key,
IgniteSqlZoneOptionMode.SCALE_OFF.symbol(getPos()), s.end(this)));
+
key = new
SqlIdentifier(ZoneOptionEnum.DATA_NODES_AUTO_ADJUST_SCALE_DOWN.name(), pos);
- zoneOptions.add(new IgniteSqlZoneOption(key, option,
s.end(this)));
+ zoneOptions.add(new IgniteSqlZoneOption(key,
IgniteSqlZoneOptionMode.SCALE_OFF.symbol(getPos()), s.end(this)));
}
)
- |
- <ADJUST> option = UnsignedIntegerLiteral()
- {
- key = new
SqlIdentifier(ZoneOptionEnum.DATA_NODES_AUTO_ADJUST.name(), pos);
- zoneOptions.add(new IgniteSqlZoneOption(key, option,
s.end(this)));
- }
)
|
<PARTITIONS> { pos = getPos(); } option = UnsignedIntegerLiteral()
diff --git
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DdlSqlToCommandConverter.java
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DdlSqlToCommandConverter.java
index 120e9d60123..ef7ae30646e 100644
---
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DdlSqlToCommandConverter.java
+++
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DdlSqlToCommandConverter.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.sql.engine.prepare.ddl;
import static org.apache.calcite.rel.type.RelDataType.PRECISION_NOT_SPECIFIED;
import static org.apache.calcite.rel.type.RelDataType.SCALE_NOT_SPECIFIED;
import static
org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_LENGTH;
+import static
org.apache.ignite.internal.catalog.commands.CatalogUtils.INFINITE_TIMER_VALUE;
import static
org.apache.ignite.internal.catalog.commands.CatalogUtils.defaultLength;
import static org.apache.ignite.internal.lang.IgniteStringFormatter.format;
import static
org.apache.ignite.internal.sql.engine.prepare.ddl.ZoneOptionEnum.CONSISTENCY_MODE;
@@ -860,6 +861,24 @@ public class DdlSqlToCommandConverter {
assert option.value() instanceof SqlLiteral : option.value();
SqlLiteral literal = (SqlLiteral) option.value();
+ if (zoneOption == DATA_NODES_AUTO_ADJUST_SCALE_UP || zoneOption ==
DATA_NODES_AUTO_ADJUST_SCALE_DOWN) {
+ if (literal.getTypeName() == SqlTypeName.SYMBOL) {
+ IgniteSqlZoneOptionMode zoneOptionMode =
literal.symbolValue(IgniteSqlZoneOptionMode.class);
+
+ if (zoneOptionMode != IgniteSqlZoneOptionMode.SCALE_OFF) {
+ throw new SqlException(STMT_VALIDATION_ERR, format(
+ "Unexpected value of zone auto adjust scale
[expected OFF, was {}; query=\"{}\"",
+ zoneOptionMode, ctx.query()
+ ));
+ }
+
+ // Directly set the option value and return
+ zoneOptionInfo.setter.accept(target,
Commons.cast(INFINITE_TIMER_VALUE));
+
+ return;
+ }
+ }
+
if (zoneOption == REPLICAS) {
if (literal.getTypeName() == SqlTypeName.SYMBOL) {
IgniteSqlZoneOptionMode zoneOptionMode =
literal.symbolValue(IgniteSqlZoneOptionMode.class);
diff --git
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/sql/IgniteSqlZoneOptionMode.java
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/sql/IgniteSqlZoneOptionMode.java
index b0002720987..a06147a050d 100644
---
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/sql/IgniteSqlZoneOptionMode.java
+++
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/sql/IgniteSqlZoneOptionMode.java
@@ -20,9 +20,10 @@ package org.apache.ignite.internal.sql.engine.sql;
import org.apache.calcite.sql.Symbolizable;
/**
- * Symbol for an {@code ALL} zone option.
+ * Special symbols for zone option processing.
*/
public enum IgniteSqlZoneOptionMode implements Symbolizable {
- ALL
+ ALL,
+ SCALE_OFF
}
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DistributionZoneSqlToCommandConverterTest.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DistributionZoneSqlToCommandConverterTest.java
index 9a8ee625315..fb76af07953 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DistributionZoneSqlToCommandConverterTest.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DistributionZoneSqlToCommandConverterTest.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.sql.engine.prepare.ddl;
import static
org.apache.ignite.internal.catalog.CatalogService.DEFAULT_STORAGE_PROFILE;
+import static
org.apache.ignite.internal.catalog.commands.CatalogUtils.INFINITE_TIMER_VALUE;
import static org.apache.ignite.internal.lang.IgniteStringFormatter.format;
import static
org.apache.ignite.internal.testframework.IgniteTestUtils.assertThrows;
import static
org.apache.ignite.internal.testframework.IgniteTestUtils.assertThrowsWithCode;
@@ -59,6 +60,7 @@ import org.apache.ignite.internal.network.ClusterNodeImpl;
import org.apache.ignite.internal.partitiondistribution.DistributionAlgorithm;
import org.apache.ignite.network.NetworkAddress;
import org.apache.ignite.sql.SqlException;
+import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
@@ -203,15 +205,13 @@ public class DistributionZoneSqlToCommandConverterTest
extends AbstractDdlSqlToC
+ "quorum_size=2, " // non-default value
+ "distribution_algorithm='rendezvous', "
+ "data_nodes_filter='$[?(@.region == \"US\")]', "
- + "data_nodes_auto_adjust=300, "
+ "storage_profiles='" + ROCKSDB_STORAGE_PROFILE +
" , " + AIPERSIST_STORAGE_PROFILE + " ' "
: "CREATE ZONE test "
+ "(partitions 2, "
+ "replicas 5, "
+ "quorum size 2, " // non-default value
+ "distribution algorithm 'rendezvous', "
- + "nodes filter '$[?(@.region == \"US\")]', "
- + "auto adjust 300) "
+ + "nodes filter '$[?(@.region == \"US\")]') "
+ "storage profiles ['" + ROCKSDB_STORAGE_PROFILE
+ "' , '" + AIPERSIST_STORAGE_PROFILE + " '] ";
CatalogCommand cmd = convert(sql);
@@ -223,7 +223,6 @@ public class DistributionZoneSqlToCommandConverterTest
extends AbstractDdlSqlToC
// TODO https://issues.apache.org/jira/browse/IGNITE-22162
// assertThat(desc.distributionAlgorithm(), equalTo("rendezvous"));
assertThat(desc.filter(), equalTo("$[?(@.region == \"US\")]"));
- assertThat(desc.dataNodesAutoAdjust(), equalTo(300));
List<CatalogStorageProfileDescriptor> storageProfiles =
desc.storageProfiles().profiles();
assertThat(storageProfiles, hasSize(2));
@@ -259,6 +258,9 @@ public class DistributionZoneSqlToCommandConverterTest
extends AbstractDdlSqlToC
emptyProfilesValidationError("CREATE ZONE test with
storage_profiles=' ' ");
} else {
assertThrowsWithPos("CREATE ZONE test (partitions -1)", "-", 30);
+ assertThrowsWithPos("CREATE ZONE test (AUTO SCALE FALL)", "FALL",
30);
+ assertThrowsWithPos("CREATE ZONE test (AUTO SCALE UP FALL)",
"FALL", 33);
+ assertThrowsWithPos("CREATE ZONE test (AUTO SCALE DOWN FALL)",
"FALL", 35);
assertThrowsWithPos("CREATE ZONE test (replicas -1)", "-", 28);
assertThrowsWithPos("CREATE ZONE test (replicas FALL)", "FALL",
28);
assertThrowsWithPos("CREATE ZONE test (replicas 1, partitions
-1)", "-", 42);
@@ -286,6 +288,72 @@ public class DistributionZoneSqlToCommandConverterTest
extends AbstractDdlSqlToC
assertThat(desc.replicas(),
equalTo(DistributionAlgorithm.ALL_REPLICAS));
}
+ @Test
+ public void testCreateZoneWithScaleOff() throws SqlParseException {
+ String sql = "CREATE ZONE test (AUTO SCALE UP OFF) STORAGE PROFILES
['" + DEFAULT_STORAGE_PROFILE + "']";
+
+ CatalogCommand cmd = convert(sql);
+
+ CatalogZoneDescriptor desc = invokeAndGetFirstEntry(cmd,
NewZoneEntry.class).descriptor();
+
+ assertThat(desc.dataNodesAutoAdjustScaleUp(),
equalTo(INFINITE_TIMER_VALUE));
+
+ sql = "CREATE ZONE test (AUTO SCALE DOWN OFF) STORAGE PROFILES ['" +
DEFAULT_STORAGE_PROFILE + "']";
+
+ cmd = convert(sql);
+
+ desc = invokeAndGetFirstEntry(cmd, NewZoneEntry.class).descriptor();
+
+ assertThat(desc.dataNodesAutoAdjustScaleDown(),
equalTo(INFINITE_TIMER_VALUE));
+ }
+
+ @Test
+ public void testCreateZoneWithAllScaleOff() throws SqlParseException {
+ String sql = "CREATE ZONE test (AUTO SCALE OFF) STORAGE PROFILES ['" +
DEFAULT_STORAGE_PROFILE + "']";
+
+ CatalogCommand cmd = convert(sql);
+
+ CatalogZoneDescriptor desc = invokeAndGetFirstEntry(cmd,
NewZoneEntry.class).descriptor();
+
+ assertThat(desc.dataNodesAutoAdjustScaleUp(),
equalTo(INFINITE_TIMER_VALUE));
+ assertThat(desc.dataNodesAutoAdjustScaleDown(),
equalTo(INFINITE_TIMER_VALUE));
+ }
+
+ @Test
+ public void testAlterZoneWithScaleOff() throws SqlParseException {
+ CatalogCommand cmd = convert("ALTER ZONE test SET (AUTO SCALE UP
OFF)");
+
+ assertThat(cmd, instanceOf(AlterZoneCommand.class));
+
+ mockCatalogZone("TEST");
+
+ CatalogZoneDescriptor desc = invokeAndGetFirstEntry(cmd,
AlterZoneEntry.class).descriptor();
+
+ assertThat(desc.dataNodesAutoAdjustScaleUp(),
equalTo(INFINITE_TIMER_VALUE));
+
+ cmd = convert("ALTER ZONE test SET (AUTO SCALE DOWN OFF)");
+
+ assertThat(cmd, instanceOf(AlterZoneCommand.class));
+
+ desc = invokeAndGetFirstEntry(cmd, AlterZoneEntry.class).descriptor();
+
+ assertThat(desc.dataNodesAutoAdjustScaleDown(),
equalTo(INFINITE_TIMER_VALUE));
+ }
+
+ @Test
+ public void testAlterZoneWithAllScaleOff() throws SqlParseException {
+ CatalogCommand cmd = convert("ALTER ZONE test SET (AUTO SCALE OFF)");
+
+ assertThat(cmd, instanceOf(AlterZoneCommand.class));
+
+ mockCatalogZone("TEST");
+
+ CatalogZoneDescriptor desc = invokeAndGetFirstEntry(cmd,
AlterZoneEntry.class).descriptor();
+
+ assertThat(desc.dataNodesAutoAdjustScaleUp(),
equalTo(INFINITE_TIMER_VALUE));
+ assertThat(desc.dataNodesAutoAdjustScaleDown(),
equalTo(INFINITE_TIMER_VALUE));
+ }
+
@ParameterizedTest(name = "with syntax = {0}")
@ValueSource(booleans = {true, false})
public void testSingleNonExistedStorageProfile(boolean withPresent) {
@@ -494,12 +562,7 @@ public class DistributionZoneSqlToCommandConverterTest
extends AbstractDdlSqlToC
assertThat(cmd, instanceOf(AlterZoneCommand.class));
- CatalogZoneDescriptor zoneMock = mock(CatalogZoneDescriptor.class);
-
- when(zoneMock.name()).thenReturn("TEST");
- when(zoneMock.filter()).thenReturn("");
-
- when(catalog.zone("TEST")).thenReturn(zoneMock);
+ mockCatalogZone("TEST");
CatalogZoneDescriptor desc = invokeAndGetFirstEntry(cmd,
AlterZoneEntry.class).descriptor();
@@ -527,23 +590,17 @@ public class DistributionZoneSqlToCommandConverterTest
extends AbstractDdlSqlToC
? "ALTER ZONE test SET "
+ "replicas=5, "
+ "quorum_size=3, "
- + "data_nodes_filter='$[?(@.region == \"US\")]', "
- + "data_nodes_auto_adjust=300"
+ + "data_nodes_filter='$[?(@.region == \"US\")]'"
: "ALTER ZONE test SET "
+ "(replicas 5, "
+ "quorum size 3, "
- + "nodes filter '$[?(@.region == \"US\")]', "
- + "auto adjust 300)";
+ + "nodes filter '$[?(@.region == \"US\")]')";
CatalogCommand cmd = convert(sql);
assertThat(cmd, instanceOf(AlterZoneCommand.class));
- CatalogZoneDescriptor zoneMock = mock(CatalogZoneDescriptor.class);
- when(zoneMock.name()).thenReturn("TEST");
- when(zoneMock.filter()).thenReturn("");
-
- when(catalog.zone("TEST")).thenReturn(zoneMock);
+ mockCatalogZone("TEST");
CatalogZoneDescriptor desc = invokeAndGetFirstEntry(cmd,
AlterZoneEntry.class).descriptor();
@@ -552,7 +609,6 @@ public class DistributionZoneSqlToCommandConverterTest
extends AbstractDdlSqlToC
assertThat(desc.replicas(), equalTo(5));
assertThat(desc.quorumSize(), equalTo(3));
assertThat(desc.filter(), equalTo("$[?(@.region == \"US\")]"));
- assertThat(desc.dataNodesAutoAdjust(), equalTo(300));
}
// Check remaining options.
@@ -569,11 +625,7 @@ public class DistributionZoneSqlToCommandConverterTest
extends AbstractDdlSqlToC
assertThat(cmd, instanceOf(AlterZoneCommand.class));
- CatalogZoneDescriptor zoneMock = mock(CatalogZoneDescriptor.class);
- when(zoneMock.name()).thenReturn("TEST");
- when(zoneMock.filter()).thenReturn("");
-
- when(catalog.zone("TEST")).thenReturn(zoneMock);
+ mockCatalogZone("TEST");
CatalogZoneDescriptor desc = invokeAndGetFirstEntry(cmd,
AlterZoneEntry.class).descriptor();
@@ -591,11 +643,7 @@ public class DistributionZoneSqlToCommandConverterTest
extends AbstractDdlSqlToC
assertThat(cmd, instanceOf(AlterZoneCommand.class));
- CatalogZoneDescriptor zoneMock = mock(CatalogZoneDescriptor.class);
- when(zoneMock.name()).thenReturn("TEST");
- when(zoneMock.filter()).thenReturn("");
-
- when(catalog.zone("TEST")).thenReturn(zoneMock);
+ mockCatalogZone("TEST");
CatalogZoneDescriptor desc = invokeAndGetFirstEntry(cmd,
AlterZoneEntry.class).descriptor();
@@ -631,12 +679,14 @@ public class DistributionZoneSqlToCommandConverterTest
extends AbstractDdlSqlToC
@MethodSource("numericOptions")
public void testAlterZoneCommandWithInvalidOptions(boolean obsolete,
ZoneOptionEnum option) {
String sql = obsolete
- ? "ALTER ZONE test SET replicas=2, data_nodes_auto_adjust=-100"
+ ? "ALTER ZONE test SET {}=-100"
: "ALTER ZONE test SET ({} -100)";
if (obsolete) {
- expectOptionValidationError(sql, "DATA_NODES_AUTO_ADJUST");
+ expectOptionValidationError(format(sql, option.name()),
option.name());
} else {
+ Assumptions.assumeFalse(option ==
ZoneOptionEnum.DATA_NODES_AUTO_ADJUST);
+
String sqlName = option.sqlName;
String prefix = "ALTER ZONE test SET (";
assertThrowsWithPos(format(sql, sqlName, "-100"), "-",
prefix.length() + sqlName.length() + 1 /* start pos*/
@@ -644,16 +694,6 @@ public class DistributionZoneSqlToCommandConverterTest
extends AbstractDdlSqlToC
}
}
- @ParameterizedTest(name = "obsolete = {0}")
- @ValueSource(booleans = {true, false})
- public void testAlterZoneCommandWithDuplicateOptions(boolean obsolete)
throws SqlParseException {
- String sql = obsolete
- ? "ALTER ZONE test SET replicas=2, data_nodes_auto_adjust=300,
DATA_NODES_AUTO_ADJUST=400"
- : "ALTER ZONE test SET (replicas 2, auto adjust 300, AUTO
ADJUST 400)";
-
- expectDuplicateOptionError(sql,
ZoneOptionEnum.DATA_NODES_AUTO_ADJUST.sqlName);
- }
-
@Test
public void testDropZone() throws SqlParseException {
CatalogCommand cmd = convert("DROP ZONE test");
@@ -676,6 +716,8 @@ public class DistributionZoneSqlToCommandConverterTest
extends AbstractDdlSqlToC
if (withPresent) {
expectInvalidOptionType(format(sql, option, "'bar'"),
option.name());
} else {
+ Assumptions.assumeFalse(option ==
ZoneOptionEnum.DATA_NODES_AUTO_ADJUST);
+
String sqlName = option.sqlName;
String prefix = "create zone test_zone (";
int errorPos = prefix.length() + sqlName.length() + 1 /* start
pos*/ + 1 /* first symbol after bracket*/;
@@ -809,4 +851,12 @@ public class DistributionZoneSqlToCommandConverterTest
extends AbstractDdlSqlToC
storageProfiles
);
}
+
+ private void mockCatalogZone(String zoneName) {
+ CatalogZoneDescriptor zoneMock = mock(CatalogZoneDescriptor.class);
+ when(zoneMock.name()).thenReturn(zoneName);
+ when(zoneMock.filter()).thenReturn("");
+
+ when(catalog.zone("TEST")).thenReturn(zoneMock);
+ }
}
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/sql/DistributionZoneSqlDdlParserTest.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/sql/DistributionZoneSqlDdlParserTest.java
index f18b08e8823..c5ada917591 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/sql/DistributionZoneSqlDdlParserTest.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/sql/DistributionZoneSqlDdlParserTest.java
@@ -96,7 +96,6 @@ public class DistributionZoneSqlDdlParserTest extends
AbstractParserTest {
+ "partitions 3, "
+ "nodes filter '(\"US\" || \"EU\") && \"SSD\"', "
+ "distribution algorithm 'test_Distribution', "
- + "auto adjust 1, "
+ "auto scale up 2, "
+ "auto scale down 3, "
+ "consistency mode 'HIGH_AVAILABILITY') "
@@ -112,7 +111,6 @@ public class DistributionZoneSqlDdlParserTest extends
AbstractParserTest {
assertThatZoneOptionPresent(optList, ZoneOptionEnum.PARTITIONS, 3);
assertThatZoneOptionPresent(optList,
ZoneOptionEnum.DISTRIBUTION_ALGORITHM, "test_Distribution");
assertThatZoneOptionPresent(optList, ZoneOptionEnum.DATA_NODES_FILTER,
"(\"US\" || \"EU\") && \"SSD\"");
- assertThatZoneOptionPresent(optList,
ZoneOptionEnum.DATA_NODES_AUTO_ADJUST, 1);
assertThatZoneOptionPresent(optList,
ZoneOptionEnum.DATA_NODES_AUTO_ADJUST_SCALE_UP, 2);
assertThatZoneOptionPresent(optList,
ZoneOptionEnum.DATA_NODES_AUTO_ADJUST_SCALE_DOWN, 3);
assertThatZoneOptionPresent(optList, ZoneOptionEnum.CONSISTENCY_MODE,
"HIGH_AVAILABILITY");
@@ -123,7 +121,6 @@ public class DistributionZoneSqlDdlParserTest extends
AbstractParserTest {
+ "PARTITIONS 3, "
+ "NODES FILTER '(\"US\" || \"EU\") && \"SSD\"', "
+ "DISTRIBUTION ALGORITHM 'test_Distribution', "
- + "AUTO ADJUST 1, "
+ "AUTO SCALE UP 2, "
+ "AUTO SCALE DOWN 3, "
+ "CONSISTENCY MODE 'HIGH_AVAILABILITY') "
@@ -337,7 +334,6 @@ public class DistributionZoneSqlDdlParserTest extends
AbstractParserTest {
+ "REPLICAS 2, "
+ "QUORUM SIZE 2, "
+ "NODES FILTER '(\"US\" || \"EU\") && \"SSD\"', "
- + "AUTO ADJUST 1, "
+ "AUTO SCALE UP 2, "
+ "AUTO SCALE DOWN 3)"
);
@@ -351,7 +347,6 @@ public class DistributionZoneSqlDdlParserTest extends
AbstractParserTest {
assertThatZoneOptionPresent(optList, ZoneOptionEnum.REPLICAS, 2);
assertThatZoneOptionPresent(optList, ZoneOptionEnum.QUORUM_SIZE, 2);
assertThatZoneOptionPresent(optList, ZoneOptionEnum.DATA_NODES_FILTER,
"(\"US\" || \"EU\") && \"SSD\"");
- assertThatZoneOptionPresent(optList,
ZoneOptionEnum.DATA_NODES_AUTO_ADJUST, 1);
assertThatZoneOptionPresent(optList,
ZoneOptionEnum.DATA_NODES_AUTO_ADJUST_SCALE_UP, 2);
assertThatZoneOptionPresent(optList,
ZoneOptionEnum.DATA_NODES_AUTO_ADJUST_SCALE_DOWN, 3);
@@ -359,7 +354,6 @@ public class DistributionZoneSqlDdlParserTest extends
AbstractParserTest {
+ "(REPLICAS 2, "
+ "QUORUM SIZE 2, "
+ "NODES FILTER '(\"US\" || \"EU\") && \"SSD\"', "
- + "AUTO ADJUST 1, "
+ "AUTO SCALE UP 2, "
+ "AUTO SCALE DOWN 3)";
expectUnparsed(alterZoneSet, expectedStmt);