You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by am...@apache.org on 2025/02/21 15:54:56 UTC
(ignite-3) 01/02: Fix system views columns names.
This is an automated email from the ASF dual-hosted git repository.
amashenkov pushed a commit to branch ignite-24551
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit dce57aa73cd5fa03609cf3331a81b083546765ab
Author: amashenkov <am...@apache.org>
AuthorDate: Fri Feb 21 17:25:05 2025 +0300
Fix system views columns names.
---
.../systemviews/SystemViewViewProvider.java | 13 +++-
.../systemviews/TablesSystemViewProvider.java | 24 ++++++--
.../systemviews/ZonesSystemViewProvider.java | 6 +-
.../systemviews/ItIndexesSystemViewTest.java | 56 +++++++++++++++++
.../systemviews/ItSqlQueriesSystemViewTest.java | 13 ++--
.../sql/engine/systemviews/ItSystemViewsTest.java | 36 +++++++++--
.../engine/systemviews/ItTablesSystemViewTest.java | 62 +++++++++++++++++--
.../engine/systemviews/ItZonesSystemViewTest.java | 72 +++++++++++++++++++++-
8 files changed, 255 insertions(+), 27 deletions(-)
diff --git a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/systemviews/SystemViewViewProvider.java b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/systemviews/SystemViewViewProvider.java
index 9390d0c4ef6..a00e36920d7 100644
--- a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/systemviews/SystemViewViewProvider.java
+++ b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/systemviews/SystemViewViewProvider.java
@@ -69,10 +69,16 @@ public class SystemViewViewProvider implements CatalogSystemViewProvider {
return SystemViews.<ViewWithSchema>clusterViewBuilder()
.name("SYSTEM_VIEWS")
+ .addColumn("VIEW_ID", INT32, entry -> entry.descriptor.id())
+ .addColumn("SCHEMA_NAME", stringOf(SYSTEM_VIEW_STRING_COLUMN_LENGTH), entry -> entry.schema)
+ .addColumn("VIEW_NAME", stringOf(SYSTEM_VIEW_STRING_COLUMN_LENGTH), entry -> entry.descriptor.name())
+ .addColumn("TYPE", stringOf(SYSTEM_VIEW_STRING_COLUMN_LENGTH), entry -> entry.descriptor.systemViewType().name())
+ // TODO https://issues.apache.org/jira/browse/IGNITE-24589: Next columns are deprecated and should be removed.
+ // They are kept for compatibility with 3.0 version, to allow columns being found by their old names.
.addColumn("ID", INT32, entry -> entry.descriptor.id())
.addColumn("SCHEMA", stringOf(SYSTEM_VIEW_STRING_COLUMN_LENGTH), entry -> entry.schema)
.addColumn("NAME", stringOf(SYSTEM_VIEW_STRING_COLUMN_LENGTH), entry -> entry.descriptor.name())
- .addColumn("TYPE", stringOf(SYSTEM_VIEW_STRING_COLUMN_LENGTH), entry -> entry.descriptor.systemViewType().name())
+ // End of legacy columns list. New columns must be added below this line.
.dataProvider(viewDataPublisher)
.build();
}
@@ -94,12 +100,15 @@ public class SystemViewViewProvider implements CatalogSystemViewProvider {
return SystemViews.<ColumnWithTableId>clusterViewBuilder()
.name("SYSTEM_VIEW_COLUMNS")
.addColumn("VIEW_ID", INT32, entry -> entry.id)
- .addColumn("NAME", stringOf(SYSTEM_VIEW_STRING_COLUMN_LENGTH), entry -> entry.descriptor.name())
+ .addColumn("VIEW_NAME", stringOf(SYSTEM_VIEW_STRING_COLUMN_LENGTH), entry -> entry.descriptor.name())
.addColumn("TYPE", stringOf(SYSTEM_VIEW_STRING_COLUMN_LENGTH), entry -> entry.descriptor.type().name())
.addColumn("NULLABLE", BOOLEAN, entry -> entry.descriptor.nullable())
.addColumn("PRECISION", INT32, entry -> entry.descriptor.precision())
.addColumn("SCALE", INT32, entry -> entry.descriptor.scale())
.addColumn("LENGTH", INT32, entry -> entry.descriptor.length())
+ // TODO https://issues.apache.org/jira/browse/IGNITE-24589: Next column is deprecated and should be removed.
+ // It is kept for compatibility with 3.0 version, to allow column being found by it's old names.
+ .addColumn("NAME", stringOf(SYSTEM_VIEW_STRING_COLUMN_LENGTH), entry -> entry.descriptor.name())
.dataProvider(viewDataPublisher)
.build();
}
diff --git a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/systemviews/TablesSystemViewProvider.java b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/systemviews/TablesSystemViewProvider.java
index feb0acd024a..98290055ffa 100644
--- a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/systemviews/TablesSystemViewProvider.java
+++ b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/systemviews/TablesSystemViewProvider.java
@@ -66,13 +66,22 @@ public class TablesSystemViewProvider implements CatalogSystemViewProvider {
return SystemViews.<TableWithSchemaAndZoneName>clusterViewBuilder()
.name("TABLES")
+ .addColumn("SCHEMA_NAME", STRING, entry -> entry.schemaName)
+ .addColumn("TABLE_NAME", STRING, entry -> entry.table.name())
+ .addColumn("TABLE_ID", INT32, entry -> entry.table.id())
+ .addColumn("PK_INDEX_ID", INT32, entry -> entry.table.primaryKeyIndexId())
+ .addColumn("ZONE_NAME", STRING, entry -> entry.zoneName)
+ .addColumn("STORAGE_PROFILE", STRING, entry -> entry.table.storageProfile())
+ .addColumn("COLOCATION_KEY_INDEX", STRING, entry -> concatColumns(entry.table.colocationColumns()))
+ .addColumn("SCHEMA_ID", INT32, entry -> entry.table.schemaId())
+ .addColumn("ZONE_ID", INT32, entry -> entry.table.zoneId())
+ // TODO https://issues.apache.org/jira/browse/IGNITE-24589: Next columns are deprecated and should be removed.
+ // They are kept for compatibility with 3.0 version, to allow columns being found by their old names.
.addColumn("SCHEMA", STRING, entry -> entry.schemaName)
.addColumn("NAME", STRING, entry -> entry.table.name())
.addColumn("ID", INT32, entry -> entry.table.id())
- .addColumn("PK_INDEX_ID", INT32, entry -> entry.table.primaryKeyIndexId())
.addColumn("ZONE", STRING, entry -> entry.zoneName)
- .addColumn("STORAGE_PROFILE", STRING, entry -> entry.table.storageProfile())
- .addColumn("COLOCATION_KEY_INDEX", STRING, entry -> concatColumns(entry.table.colocationColumns()))
+ // End of legacy columns list. New columns must be added below this line.
.dataProvider(viewDataPublisher)
.build();
}
@@ -106,16 +115,21 @@ public class TablesSystemViewProvider implements CatalogSystemViewProvider {
return SystemViews.<ColumnWithTableId>clusterViewBuilder()
.name("TABLE_COLUMNS")
- .addColumn("SCHEMA", STRING, entry -> entry.schema)
+ .addColumn("SCHEMA_NAME", STRING, entry -> entry.schema)
.addColumn("TABLE_NAME", STRING, entry -> entry.tableName)
.addColumn("TABLE_ID", INT32, entry -> entry.tableId)
.addColumn("COLUMN_NAME", STRING, entry -> entry.descriptor.name())
.addColumn("TYPE", STRING, entry -> entry.descriptor.type().name())
.addColumn("NULLABLE", BOOLEAN, entry -> entry.descriptor.nullable())
- .addColumn("PREC", INT32, entry -> entry.descriptor.precision())
+ .addColumn("PRECISION", INT32, entry -> entry.descriptor.precision())
.addColumn("SCALE", INT32, entry -> entry.descriptor.scale())
.addColumn("LENGTH", INT32, entry -> entry.descriptor.length())
.addColumn("COLUMN_ORDINAL", INT32, entry -> entry.columnOrdinal)
+ // TODO https://issues.apache.org/jira/browse/IGNITE-24589: Next columns are deprecated and should be removed.
+ // They are kept for compatibility with 3.0 version, to allow columns being found by their old names.
+ .addColumn("SCHEMA", STRING, entry -> entry.schema)
+ .addColumn("PREC", INT32, entry -> entry.descriptor.precision())
+ // End of legacy columns list. New columns must be added below this line.
.dataProvider(viewDataPublisher)
.build();
}
diff --git a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/systemviews/ZonesSystemViewProvider.java b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/systemviews/ZonesSystemViewProvider.java
index 5433fffd068..048d90466b9 100644
--- a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/systemviews/ZonesSystemViewProvider.java
+++ b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/systemviews/ZonesSystemViewProvider.java
@@ -51,7 +51,7 @@ public final class ZonesSystemViewProvider implements CatalogSystemViewProvider
private static SystemView<?> getZoneView(Supplier<Catalog> catalogSupplier) {
return SystemViews.<ZoneWithDefaultMarker>clusterViewBuilder()
.name("ZONES")
- .addColumn("NAME", STRING, wrapper -> wrapper.zone.name())
+ .addColumn("ZONE_NAME", STRING, wrapper -> wrapper.zone.name())
.addColumn("PARTITIONS", INT32, wrapper -> wrapper.zone.partitions())
.addColumn("REPLICAS", INT32, wrapper -> wrapper.zone.replicas())
.addColumn("DATA_NODES_AUTO_ADJUST_SCALE_UP", INT32, wrapper -> wrapper.zone.dataNodesAutoAdjustScaleUp())
@@ -59,6 +59,10 @@ public final class ZonesSystemViewProvider implements CatalogSystemViewProvider
.addColumn("DATA_NODES_FILTER", STRING, wrapper -> wrapper.zone.filter())
.addColumn("IS_DEFAULT_ZONE", BOOLEAN, wrapper -> wrapper.isDefault)
.addColumn("CONSISTENCY_MODE", STRING, wrapper -> wrapper.zone.consistencyMode().name())
+ .addColumn("ZONE_ID", INT32, wrapper -> wrapper.zone.id())
+ // TODO https://issues.apache.org/jira/browse/IGNITE-24589: Next columns are deprecated and should be removed.
+ // They are kept for compatibility with 3.0 version, to allow columns being found by their old names.
+ .addColumn("NAME", STRING, wrapper -> wrapper.zone.name())
.dataProvider(SubscriptionUtils.fromIterable(() -> {
Catalog catalog = catalogSupplier.get();
CatalogZoneDescriptor defaultZone = catalog.defaultZone();
diff --git a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItIndexesSystemViewTest.java b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItIndexesSystemViewTest.java
index d943ef9a25a..1e8daf22c09 100644
--- a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItIndexesSystemViewTest.java
+++ b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItIndexesSystemViewTest.java
@@ -24,9 +24,12 @@ import java.util.Collection;
import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.internal.catalog.Catalog;
import org.apache.ignite.internal.catalog.CatalogManager;
+import org.apache.ignite.internal.catalog.commands.CatalogUtils;
import org.apache.ignite.internal.catalog.descriptors.CatalogIndexDescriptor;
import org.apache.ignite.internal.catalog.descriptors.CatalogTableDescriptor;
import org.apache.ignite.internal.sql.SqlCommon;
+import org.apache.ignite.internal.sql.engine.util.MetadataMatcher;
+import org.apache.ignite.sql.ColumnType;
import org.junit.jupiter.api.Test;
/** End-to-end tests to verify indexes system view. */
@@ -37,6 +40,59 @@ public class ItIndexesSystemViewTest extends AbstractSystemViewTest {
private static final String COLUMNS_COLLATIONS = "ID DESC, NAME ASC";
+ @Test
+ public void testMetadata() {
+ assertQuery("SELECT * FROM SYSTEM.INDEXES")
+ .columnMetadata(
+ new MetadataMatcher().name("INDEX_ID")
+ .type(ColumnType.INT32)
+ .nullable(true),
+
+ new MetadataMatcher().name("INDEX_NAME")
+ .type(ColumnType.STRING)
+ .precision(CatalogUtils.DEFAULT_VARLEN_LENGTH)
+ .nullable(true),
+
+ new MetadataMatcher().name("TABLE_ID")
+ .type(ColumnType.INT32)
+ .nullable(true),
+
+ new MetadataMatcher().name("TABLE_NAME")
+ .type(ColumnType.STRING)
+ .precision(CatalogUtils.DEFAULT_VARLEN_LENGTH)
+ .nullable(true),
+
+ new MetadataMatcher().name("SCHEMA_ID")
+ .type(ColumnType.INT32)
+ .nullable(true),
+
+ new MetadataMatcher().name("SCHEMA_NAME")
+ .type(ColumnType.STRING)
+ .precision(CatalogUtils.DEFAULT_VARLEN_LENGTH)
+ .nullable(true),
+
+ new MetadataMatcher().name("TYPE")
+ .type(ColumnType.STRING)
+ .precision(CatalogUtils.DEFAULT_VARLEN_LENGTH)
+ .nullable(true),
+
+ new MetadataMatcher().name("IS_UNIQUE")
+ .type(ColumnType.BOOLEAN)
+ .nullable(true),
+
+ new MetadataMatcher().name("COLUMNS")
+ .type(ColumnType.STRING)
+ .precision(CatalogUtils.DEFAULT_VARLEN_LENGTH)
+ .nullable(true),
+
+ new MetadataMatcher().name("STATUS")
+ .type(ColumnType.STRING)
+ .precision(CatalogUtils.DEFAULT_VARLEN_LENGTH)
+ .nullable(true)
+ )
+ .check();
+ }
+
@Test
public void multipleIndexes() {
sql(String.format("CREATE TABLE %S (ID INT, NAME VARCHAR, CONSTRAINT PK PRIMARY KEY USING HASH(ID, NAME));", TABLE_NAME));
diff --git a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItSqlQueriesSystemViewTest.java b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItSqlQueriesSystemViewTest.java
index 0accfeb1126..0ba8600c6bd 100644
--- a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItSqlQueriesSystemViewTest.java
+++ b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItSqlQueriesSystemViewTest.java
@@ -77,12 +77,8 @@ public class ItSqlQueriesSystemViewTest extends AbstractSystemViewTest {
}
@Test
- public void singleStatement() {
- String query = "SELECT * FROM SQL_QUERIES ORDER BY START_TIME";
-
- // Verify metadata.
- assertQuery(query)
- .withDefaultSchema("SYSTEM")
+ public void testMetadata() {
+ assertQuery("SELECT * FROM SYSTEM.SQL_QUERIES")
.columnMetadata(
new MetadataMatcher().name("INITIATOR_NODE").type(ColumnType.STRING).nullable(false),
new MetadataMatcher().name("ID").type(ColumnType.STRING).precision(36).nullable(true),
@@ -97,6 +93,11 @@ public class ItSqlQueriesSystemViewTest extends AbstractSystemViewTest {
)
.returnRowCount(1)
.check();
+ }
+
+ @Test
+ public void singleStatement() {
+ String query = "SELECT * FROM SQL_QUERIES ORDER BY START_TIME";
Ignite initiator = CLUSTER.aliveNode();
diff --git a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItSystemViewsTest.java b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItSystemViewsTest.java
index 16918909b02..1ba3ce64108 100644
--- a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItSystemViewsTest.java
+++ b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItSystemViewsTest.java
@@ -74,18 +74,18 @@ public class ItSystemViewsTest extends AbstractSystemViewTest {
assertQuery(format("SELECT * FROM {}", SYSTEM_VIEWS.canonicalName()))
.columnMetadata(
new MetadataMatcher()
- .name("ID")
+ .name("VIEW_ID")
.type(ColumnType.INT32)
.nullable(true),
new MetadataMatcher()
- .name("SCHEMA")
+ .name("SCHEMA_NAME")
.type(ColumnType.STRING)
.precision(Short.MAX_VALUE)
.nullable(true),
new MetadataMatcher()
- .name("NAME")
+ .name("VIEW_NAME")
.type(ColumnType.STRING)
.precision(Short.MAX_VALUE)
.nullable(true),
@@ -94,6 +94,24 @@ public class ItSystemViewsTest extends AbstractSystemViewTest {
.name("TYPE")
.type(ColumnType.STRING)
.precision(Short.MAX_VALUE)
+ .nullable(true),
+
+ // Legacy column.
+ new MetadataMatcher()
+ .name("ID")
+ .type(ColumnType.INT32)
+ .nullable(true),
+ // Legacy column.
+ new MetadataMatcher()
+ .name("SCHEMA")
+ .type(ColumnType.STRING)
+ .precision(Short.MAX_VALUE)
+ .nullable(true),
+ // Legacy column.
+ new MetadataMatcher()
+ .name("NAME")
+ .type(ColumnType.STRING)
+ .precision(Short.MAX_VALUE)
.nullable(true)
)
.check();
@@ -109,7 +127,7 @@ public class ItSystemViewsTest extends AbstractSystemViewTest {
.nullable(true),
new MetadataMatcher()
- .name("NAME")
+ .name("VIEW_NAME")
.type(ColumnType.STRING)
.precision(Short.MAX_VALUE)
.nullable(true),
@@ -138,7 +156,15 @@ public class ItSystemViewsTest extends AbstractSystemViewTest {
new MetadataMatcher()
.name("LENGTH")
.type(ColumnType.INT32)
- .nullable(true))
+ .nullable(true),
+
+ // Legacy column.
+ new MetadataMatcher()
+ .name("NAME")
+ .type(ColumnType.STRING)
+ .precision(Short.MAX_VALUE)
+ .nullable(true)
+ )
.check();
}
diff --git a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItTablesSystemViewTest.java b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItTablesSystemViewTest.java
index ee192822ca8..acffa3ec17d 100644
--- a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItTablesSystemViewTest.java
+++ b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItTablesSystemViewTest.java
@@ -42,19 +42,19 @@ public class ItTablesSystemViewTest extends AbstractSystemViewTest {
assertQuery("SELECT * FROM SYSTEM.TABLES")
.columnMetadata(
new MetadataMatcher()
- .name("SCHEMA")
+ .name("SCHEMA_NAME")
.type(ColumnType.STRING)
.precision(DEFAULT_VARLEN_LENGTH)
.nullable(true),
new MetadataMatcher()
- .name("NAME")
+ .name("TABLE_NAME")
.type(ColumnType.STRING)
.precision(DEFAULT_VARLEN_LENGTH)
.nullable(true),
new MetadataMatcher()
- .name("ID")
+ .name("TABLE_ID")
.type(ColumnType.INT32)
.nullable(true),
@@ -64,7 +64,7 @@ public class ItTablesSystemViewTest extends AbstractSystemViewTest {
.nullable(true),
new MetadataMatcher()
- .name("ZONE")
+ .name("ZONE_NAME")
.type(ColumnType.STRING)
.precision(DEFAULT_VARLEN_LENGTH)
.nullable(true),
@@ -79,6 +79,43 @@ public class ItTablesSystemViewTest extends AbstractSystemViewTest {
.name("COLOCATION_KEY_INDEX")
.type(ColumnType.STRING)
.precision(DEFAULT_VARLEN_LENGTH)
+ .nullable(true),
+
+ new MetadataMatcher()
+ .name("SCHEMA_ID")
+ .type(ColumnType.INT32)
+ .nullable(true),
+
+ new MetadataMatcher()
+ .name("ZONE_ID")
+ .type(ColumnType.INT32)
+ .nullable(true),
+
+ // Legacy column.
+ new MetadataMatcher()
+ .name("SCHEMA")
+ .type(ColumnType.STRING)
+ .precision(DEFAULT_VARLEN_LENGTH)
+ .nullable(true),
+
+ // Legacy column.
+ new MetadataMatcher()
+ .name("NAME")
+ .type(ColumnType.STRING)
+ .precision(DEFAULT_VARLEN_LENGTH)
+ .nullable(true),
+
+ // Legacy column.
+ new MetadataMatcher()
+ .name("ID")
+ .type(ColumnType.INT32)
+ .nullable(true),
+
+ // Legacy column.
+ new MetadataMatcher()
+ .name("ZONE")
+ .type(ColumnType.STRING)
+ .precision(DEFAULT_VARLEN_LENGTH)
.nullable(true)
)
.check();
@@ -104,7 +141,7 @@ public class ItTablesSystemViewTest extends AbstractSystemViewTest {
assertQuery("SELECT * FROM SYSTEM.TABLE_COLUMNS")
.columnMetadata(
new MetadataMatcher()
- .name("SCHEMA")
+ .name("SCHEMA_NAME")
.type(ColumnType.STRING)
.precision(DEFAULT_VARLEN_LENGTH)
.nullable(true),
@@ -139,7 +176,7 @@ public class ItTablesSystemViewTest extends AbstractSystemViewTest {
.nullable(true),
new MetadataMatcher()
- .name("PREC")
+ .name("PRECISION")
.type(ColumnType.INT32)
.nullable(true),
@@ -156,6 +193,19 @@ public class ItTablesSystemViewTest extends AbstractSystemViewTest {
new MetadataMatcher()
.name("COLUMN_ORDINAL")
.type(ColumnType.INT32)
+ .nullable(true),
+
+ // Legacy column.
+ new MetadataMatcher()
+ .name("SCHEMA")
+ .type(ColumnType.STRING)
+ .precision(DEFAULT_VARLEN_LENGTH)
+ .nullable(true),
+
+ // Legacy column.
+ new MetadataMatcher()
+ .name("PREC")
+ .type(ColumnType.INT32)
.nullable(true)
)
.check();
diff --git a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItZonesSystemViewTest.java b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItZonesSystemViewTest.java
index eb25cf9793d..bf1227fefed 100644
--- a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItZonesSystemViewTest.java
+++ b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/engine/systemviews/ItZonesSystemViewTest.java
@@ -31,7 +31,10 @@ import java.util.Objects;
import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.internal.catalog.Catalog;
import org.apache.ignite.internal.catalog.CatalogManager;
+import org.apache.ignite.internal.catalog.commands.CatalogUtils;
import org.apache.ignite.internal.catalog.descriptors.ConsistencyMode;
+import org.apache.ignite.internal.sql.engine.util.MetadataMatcher;
+import org.apache.ignite.sql.ColumnType;
import org.apache.ignite.sql.SqlException;
import org.junit.jupiter.api.Test;
@@ -59,7 +62,9 @@ public class ItZonesSystemViewTest extends AbstractSystemViewTest {
INFINITE_TIMER_VALUE,
DEFAULT_FILTER,
true,
- DEFAULT_CONSISTENCY_MODE.name()
+ DEFAULT_CONSISTENCY_MODE.name(),
+ 0,
+ catalog.defaultZone().name()
).check();
}
@@ -223,6 +228,68 @@ public class ItZonesSystemViewTest extends AbstractSystemViewTest {
sql("DROP ZONE " + ZONE_NAME);
}
+ @Test
+ public void testMetadata() {
+ assertQuery("SELECT * FROM SYSTEM.ZONES")
+ .columnMetadata(
+ new MetadataMatcher()
+ .name("ZONE_NAME")
+ .type(ColumnType.STRING)
+ .precision(CatalogUtils.DEFAULT_VARLEN_LENGTH)
+ .nullable(true),
+
+ new MetadataMatcher()
+ .name("PARTITIONS")
+ .type(ColumnType.INT32)
+ .nullable(true),
+
+ new MetadataMatcher()
+ .name("REPLICAS")
+ .type(ColumnType.INT32)
+ .nullable(true),
+
+ new MetadataMatcher()
+ .name("DATA_NODES_AUTO_ADJUST_SCALE_UP")
+ .type(ColumnType.INT32)
+ .nullable(true),
+
+ new MetadataMatcher()
+ .name("DATA_NODES_AUTO_ADJUST_SCALE_DOWN")
+ .type(ColumnType.INT32)
+ .nullable(true),
+
+ new MetadataMatcher()
+ .name("DATA_NODES_FILTER")
+ .type(ColumnType.STRING)
+ .precision(CatalogUtils.DEFAULT_VARLEN_LENGTH)
+ .nullable(true),
+
+ new MetadataMatcher()
+ .name("IS_DEFAULT_ZONE")
+ .type(ColumnType.BOOLEAN)
+ .nullable(true),
+
+ new MetadataMatcher()
+ .name("CONSISTENCY_MODE")
+ .type(ColumnType.STRING)
+ .precision(CatalogUtils.DEFAULT_VARLEN_LENGTH)
+ .nullable(true),
+
+ new MetadataMatcher()
+ .name("ZONE_ID")
+ .type(ColumnType.INT32)
+ .nullable(true),
+
+ // Legacy column.
+ new MetadataMatcher()
+ .name("NAME")
+ .type(ColumnType.STRING)
+ .precision(CatalogUtils.DEFAULT_VARLEN_LENGTH)
+ .nullable(true)
+ )
+ .check();
+ }
+
private static String createZoneSql(String zoneName, int partitions, int replicas, int scaleUp, int scaleDown, String filter) {
String sqlFormat = "CREATE ZONE \"%s\" WITH "
+ "\"PARTITIONS\" = %d, "
@@ -267,7 +334,8 @@ public class ItZonesSystemViewTest extends AbstractSystemViewTest {
}
private static String selectFromZonesSystemView(String zoneName) {
- String sqlFormat = "SELECT * FROM SYSTEM.ZONES WHERE NAME = '%s'";
+ String sqlFormat = "SELECT ZONE_NAME, PARTITIONS, REPLICAS, DATA_NODES_AUTO_ADJUST_SCALE_UP, DATA_NODES_AUTO_ADJUST_SCALE_DOWN, "
+ + "DATA_NODES_FILTER, IS_DEFAULT_ZONE, CONSISTENCY_MODE FROM SYSTEM.ZONES WHERE ZONE_NAME = '%s'";
return String.format(sqlFormat, zoneName);
}