Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@

package org.apache.iotdb.relational.it.schema;

import org.apache.iotdb.commons.schema.table.InformationSchema;
import org.apache.iotdb.commons.schema.table.column.TsTableColumnSchema;
import org.apache.iotdb.db.it.utils.TestUtils;
import org.apache.iotdb.it.env.EnvFactory;
import org.apache.iotdb.it.framework.IoTDBTestRunner;
Expand All @@ -41,12 +43,14 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import static org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.showDBColumnHeaders;
import static org.apache.iotdb.commons.schema.column.ColumnHeaderConstant.showDBDetailsColumnHeaders;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

Expand Down Expand Up @@ -138,7 +142,10 @@ public void testManageDatabase() {
}

final int[] schemaRegionGroupNum = new int[] {0};
// Default min region group numbers come from ConfigNodeConfig (schema = 1, data = 2).
final int[] minSchemaRegionGroupNum = new int[] {1};
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The literal 1 here (and 2 on line 143) come from ConfigNodeConfig.defaultSchemaRegionGroupNumPerDatabase / defaultDataRegionGroupNumPerDatabase, but that's not obvious from the test. Please add a brief comment like // matches the cluster defaults from ConfigNodeConfig (1 / 2) so future maintainers don't have to chase down where these magic numbers come from. Without this, the test would silently break if anyone tweaks the defaults via MppCommonConfig.

final int[] dataRegionGroupNum = new int[] {0};
final int[] minDataRegionGroupNum = new int[] {2};
// show
try (final ResultSet resultSet = statement.executeQuery("SHOW DATABASES DETAILS")) {
int cnt = 0;
Expand All @@ -158,7 +165,11 @@ public void testManageDatabase() {
assertEquals(dataReplicaFactors[cnt], resultSet.getInt(4));
assertEquals(timePartitionInterval[cnt], resultSet.getLong(5));
assertEquals(schemaRegionGroupNum[cnt], resultSet.getInt(6));
assertEquals(dataRegionGroupNum[cnt], resultSet.getInt(7));
assertEquals(minSchemaRegionGroupNum[cnt], resultSet.getInt(7));
assertTrue(resultSet.getInt(8) >= minSchemaRegionGroupNum[cnt]);
assertEquals(dataRegionGroupNum[cnt], resultSet.getInt(9));
assertEquals(minDataRegionGroupNum[cnt], resultSet.getInt(10));
assertTrue(resultSet.getInt(11) >= minDataRegionGroupNum[cnt]);
cnt++;
}
assertEquals(databaseNames.length, cnt);
Expand Down Expand Up @@ -430,7 +441,11 @@ public void testInformationSchema() throws SQLException {
"data_replication_factor,INT32,ATTRIBUTE,",
"time_partition_interval,INT64,ATTRIBUTE,",
"schema_region_group_num,INT32,ATTRIBUTE,",
"data_region_group_num,INT32,ATTRIBUTE,")));
"min_schema_region_group_num,INT32,ATTRIBUTE,",
"max_schema_region_group_num,INT32,ATTRIBUTE,",
"data_region_group_num,INT32,ATTRIBUTE,",
"min_data_region_group_num,INT32,ATTRIBUTE,",
"max_data_region_group_num,INT32,ATTRIBUTE,")));
TestUtils.assertResultSetEqual(
statement.executeQuery("desc tables"),
"ColumnName,DataType,Category,",
Expand Down Expand Up @@ -636,13 +651,38 @@ public void testInformationSchema() throws SQLException {
statement.execute(
"CREATE VIEW test.view_table (tag1 STRING TAG,tag2 STRING TAG,s11 INT32 FIELD,s3 INT32 FIELD FROM s2) RESTRICT WITH (ttl=100) AS root.\"a\".**");

TestUtils.assertResultSetEqual(
statement.executeQuery("select * from databases"),
"database,ttl(ms),schema_replication_factor,data_replication_factor,time_partition_interval,schema_region_group_num,data_region_group_num,",
new HashSet<>(
Arrays.asList(
"information_schema,INF,null,null,null,null,null,",
"test,INF,1,1,604800000,0,0,")));
try (final ResultSet resultSet = statement.executeQuery("select * from databases")) {
final ResultSetMetaData metaData = resultSet.getMetaData();
final List<TsTableColumnSchema> expectedColumnSchemas =
InformationSchema.getSchemaTables().get(InformationSchema.DATABASES).getColumnList();
assertEquals(expectedColumnSchemas.size(), metaData.getColumnCount());
for (int i = 0; i < expectedColumnSchemas.size(); i++) {
assertEquals(expectedColumnSchemas.get(i).getColumnName(), metaData.getColumnName(i + 1));
}

int cnt = 0;
while (resultSet.next()) {
if ("information_schema".equals(resultSet.getString(1))) {
for (int columnIndex = 3; columnIndex <= 11; columnIndex++) {
assertNull(resultSet.getObject(columnIndex));
}
} else {
assertEquals("test", resultSet.getString(1));
assertEquals("INF", resultSet.getString(2));
assertEquals(1, resultSet.getInt(3));
assertEquals(1, resultSet.getInt(4));
assertEquals(604800000, resultSet.getLong(5));
assertEquals(0, resultSet.getInt(6));
assertEquals(1, resultSet.getInt(7));
assertTrue(resultSet.getInt(8) >= resultSet.getInt(7));
assertEquals(0, resultSet.getInt(9));
assertEquals(2, resultSet.getInt(10));
assertTrue(resultSet.getInt(11) >= resultSet.getInt(10));
}
cnt++;
}
assertEquals(2, cnt);
}
TestUtils.assertResultSetEqual(
statement.executeQuery("show devices from tables where status = 'USING'"),
"database,table_name,ttl(ms),status,comment,table_type,",
Expand Down Expand Up @@ -844,8 +884,9 @@ public void testDBAuth() throws SQLException {
Collections.singleton("information_schema,INF,null,null,null,"));
TestUtils.assertResultSetEqual(
userStmt.executeQuery("select * from information_schema.databases"),
"database,ttl(ms),schema_replication_factor,data_replication_factor,time_partition_interval,schema_region_group_num,data_region_group_num,",
Collections.singleton("information_schema,INF,null,null,null,null,null,"));
"database,ttl(ms),schema_replication_factor,data_replication_factor,time_partition_interval,schema_region_group_num,min_schema_region_group_num,max_schema_region_group_num,data_region_group_num,min_data_region_group_num,max_data_region_group_num,",
Collections.singleton(
"information_schema,INF,null,null,null,null,null,null,null,null,null,"));
}

try (final Connection adminCon = EnvFactory.getEnv().getConnection(BaseEnv.TABLE_SQL_DIALECT);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,11 @@ protected void constructLine() {
columnBuilders[3].writeInt(currentDatabase.getDataReplicationFactor());
columnBuilders[4].writeLong(currentDatabase.getTimePartitionInterval());
columnBuilders[5].writeInt(currentDatabase.getSchemaRegionNum());
columnBuilders[6].writeInt(currentDatabase.getDataRegionNum());
columnBuilders[6].writeInt(currentDatabase.getMinSchemaRegionNum());
columnBuilders[7].writeInt(currentDatabase.getMaxSchemaRegionNum());
columnBuilders[8].writeInt(currentDatabase.getDataRegionNum());
columnBuilders[9].writeInt(currentDatabase.getMinDataRegionNum());
columnBuilders[10].writeInt(currentDatabase.getMaxDataRegionNum());
resultBuilder.declarePosition();
currentDatabase = null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,11 @@ private static void buildTSBlockForDetails(
builder.getColumnBuilder(3).writeInt(storageGroupInfo.getDataReplicationFactor());
builder.getColumnBuilder(4).writeLong(storageGroupInfo.getTimePartitionInterval());
builder.getColumnBuilder(5).writeInt(storageGroupInfo.getSchemaRegionNum());
builder.getColumnBuilder(6).writeInt(storageGroupInfo.getDataRegionNum());
builder.getColumnBuilder(6).writeInt(storageGroupInfo.getMinSchemaRegionNum());
builder.getColumnBuilder(7).writeInt(storageGroupInfo.getMaxSchemaRegionNum());
builder.getColumnBuilder(8).writeInt(storageGroupInfo.getDataRegionNum());
builder.getColumnBuilder(9).writeInt(storageGroupInfo.getMinDataRegionNum());
builder.getColumnBuilder(10).writeInt(storageGroupInfo.getMaxDataRegionNum());
builder.declarePosition();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,11 @@ public static void buildDatabaseTsBlock(
builder.getColumnBuilder(3).appendNull();
builder.getColumnBuilder(4).appendNull();
if (details) {
builder.getColumnBuilder(5).appendNull();
builder.getColumnBuilder(6).appendNull();
for (int columnIndex = 5;
columnIndex < builder.getValueColumnBuilders().length;
columnIndex++) {
builder.getColumnBuilder(columnIndex).appendNull();
}
}
builder.declarePosition();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,13 @@ private ColumnHeaderConstant() {
public static final String DATA_REPLICATION_FACTOR_TABLE_MODEL = "data_replication_factor";
public static final String TIME_PARTITION_INTERVAL_TABLE_MODEL = "time_partition_interval";
public static final String SCHEMA_REGION_GROUP_NUM_TABLE_MODEL = "schema_region_group_num";
public static final String MIN_SCHEMA_REGION_GROUP_NUM_TABLE_MODEL =
"min_schema_region_group_num";
public static final String MAX_SCHEMA_REGION_GROUP_NUM_TABLE_MODEL =
"max_schema_region_group_num";
public static final String DATA_REGION_GROUP_NUM_TABLE_MODEL = "data_region_group_num";
public static final String MIN_DATA_REGION_GROUP_NUM_TABLE_MODEL = "min_data_region_group_num";
public static final String MAX_DATA_REGION_GROUP_NUM_TABLE_MODEL = "max_data_region_group_num";

public static final String REGION_ID_TABLE_MODEL = "region_id";
public static final String DATANODE_ID_TABLE_MODEL = "datanode_id";
Expand Down Expand Up @@ -730,7 +736,11 @@ private ColumnHeaderConstant() {
new ColumnHeader(DATA_REPLICATION_FACTOR, TSDataType.INT32),
new ColumnHeader(TIME_PARTITION_INTERVAL, TSDataType.INT64),
new ColumnHeader(SCHEMA_REGION_GROUP_NUM, TSDataType.INT32),
new ColumnHeader(DATA_REGION_GROUP_NUM, TSDataType.INT32));
new ColumnHeader(MIN_SCHEMA_REGION_GROUP_NUM, TSDataType.INT32),
new ColumnHeader(MAX_SCHEMA_REGION_GROUP_NUM, TSDataType.INT32),
new ColumnHeader(DATA_REGION_GROUP_NUM, TSDataType.INT32),
new ColumnHeader(MIN_DATA_REGION_GROUP_NUM, TSDataType.INT32),
new ColumnHeader(MAX_DATA_REGION_GROUP_NUM, TSDataType.INT32));

public static final List<ColumnHeader> describeTableColumnHeaders =
ImmutableList.of(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,21 @@ public class InformationSchema {
databaseTable.addColumnSchema(
new AttributeColumnSchema(
ColumnHeaderConstant.SCHEMA_REGION_GROUP_NUM_TABLE_MODEL, TSDataType.INT32));
databaseTable.addColumnSchema(
new AttributeColumnSchema(
ColumnHeaderConstant.MIN_SCHEMA_REGION_GROUP_NUM_TABLE_MODEL, TSDataType.INT32));
databaseTable.addColumnSchema(
new AttributeColumnSchema(
ColumnHeaderConstant.MAX_SCHEMA_REGION_GROUP_NUM_TABLE_MODEL, TSDataType.INT32));
databaseTable.addColumnSchema(
new AttributeColumnSchema(
ColumnHeaderConstant.DATA_REGION_GROUP_NUM_TABLE_MODEL, TSDataType.INT32));
databaseTable.addColumnSchema(
new AttributeColumnSchema(
ColumnHeaderConstant.MIN_DATA_REGION_GROUP_NUM_TABLE_MODEL, TSDataType.INT32));
databaseTable.addColumnSchema(
new AttributeColumnSchema(
ColumnHeaderConstant.MAX_DATA_REGION_GROUP_NUM_TABLE_MODEL, TSDataType.INT32));
schemaTables.put(DATABASES, databaseTable);

final TsTable tableTable = new TsTable(TABLES);
Expand Down
Loading