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 @@ -285,6 +285,51 @@ public void testManageDatabase() {
}
}

@Test
public void testShowCreateDatabase() throws SQLException {
try (final Connection connection =
EnvFactory.getEnv().getConnection(BaseEnv.TABLE_SQL_DIALECT);
final Statement statement = connection.createStatement()) {
statement.execute(
"create database test_show_create_db with (ttl=300, schema_region_group_num=DEFAULT, data_region_group_num=DEFAULT, time_partition_interval=100000)");

TestUtils.assertResultSetEqual(
statement.executeQuery("show create database test_show_create_db"),
"Database,Create Database,",
Collections.singleton(
"test_show_create_db,CREATE DATABASE \"test_show_create_db\" WITH (ttl=300,time_partition_interval=100000,schema_region_group_num=0,data_region_group_num=0),"));
}
}

@Test
public void testShowCreatePipe() throws SQLException {
try (final Connection connection =
EnvFactory.getEnv().getConnection(BaseEnv.TABLE_SQL_DIALECT);
final Statement statement = connection.createStatement()) {
statement.execute("create pipe test_show_create_pipe ('sink'='do-nothing-sink')");

TestUtils.assertResultSetEqual(
statement.executeQuery("show create pipe test_show_create_pipe"),
"Pipe,Create Pipe,",
Collections.singleton(
"test_show_create_pipe,CREATE PIPE \"test_show_create_pipe\" WITH SINK ('sink'='do-nothing-sink'),"));
}
}

@Test
public void testShowCreateInformationSchemaDatabase() throws SQLException {
try (final Connection connection =
EnvFactory.getEnv().getConnection(BaseEnv.TABLE_SQL_DIALECT);
final Statement statement = connection.createStatement()) {
try {
statement.executeQuery("show create database information_schema");
fail("show create database information_schema shouldn't succeed");
} catch (final SQLException e) {
assertEquals("701: The system database does not support show create.", e.getMessage());
}
}
}

@Test
public void testDatabaseWithSpecificCharacters() throws SQLException {
try (final Connection connection =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.apache.iotdb.isession.ITableSession;
import org.apache.iotdb.it.framework.IoTDBTestRunner;
import org.apache.iotdb.itbase.category.MultiClusterIT2SubscriptionTableArchVerification;
import org.apache.iotdb.itbase.env.BaseEnv;
import org.apache.iotdb.pipe.it.dual.tablemodel.TableModelUtils;
import org.apache.iotdb.rpc.RpcUtils;
import org.apache.iotdb.rpc.subscription.config.TopicConstant;
Expand All @@ -52,6 +53,9 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.sql.Connection;
import java.sql.Statement;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Properties;
Expand Down Expand Up @@ -97,6 +101,28 @@ protected void setUpConfig() {
.setIsPipeEnableMemoryCheck(false);
}

@Test
public void testShowCreateTopic() throws Exception {
TableModelUtils.createDataBaseAndTable(
senderEnv, "test_show_create_topic_db", "test_show_create_topic_table");

try (final Connection connection = senderEnv.getConnection(BaseEnv.TABLE_SQL_DIALECT);
final Statement statement = connection.createStatement()) {
statement.execute(
"create topic test_show_create_topic with ('database'='test_show_create_topic_db','table'='test_show_create_topic_table','format'='"
+ TopicConstant.FORMAT_TS_FILE_VALUE
+ "')");

TestUtils.assertResultSetEqual(
statement.executeQuery("show create topic test_show_create_topic"),
"Topic,Create Topic,",
Collections.singleton(
"test_show_create_topic,CREATE TOPIC \"test_show_create_topic\" WITH ('database'='test_show_create_topic_db','format'='"
+ TopicConstant.FORMAT_TS_FILE_VALUE
+ "','table'='test_show_create_topic_table'),"));
}
}

@Ignore
@Test
public void testTabletTopicWithPath() throws Exception {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ ddlStatement
// Pipe Plugin
| createPipePlugin | dropPipePlugin | showPipePlugins
// Subscription
| createTopic | dropTopic | showTopics | showSubscriptions | dropSubscription
| createTopic | dropTopic | showTopics | showCreateTopic | showSubscriptions | dropSubscription
// CQ
| createContinuousQuery | dropContinuousQuery | showContinuousQueries
// Cluster
Expand Down Expand Up @@ -734,6 +734,10 @@ showTopics
: SHOW ((TOPIC topicName=identifier) | TOPICS )
;

showCreateTopic
: SHOW CREATE TOPIC topicName=identifier
;

showSubscriptions
: SHOW SUBSCRIPTIONS (ON topicName=identifier)?
;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,18 @@ public static DatasetHeader getShowCreateTableColumnHeader() {
return new DatasetHeader(ColumnHeaderConstant.showCreateTableColumnHeaders, true);
}

public static DatasetHeader getShowCreatePipeColumnHeader() {
return new DatasetHeader(ColumnHeaderConstant.showCreatePipeColumnHeaders, true);
}

public static DatasetHeader getShowCreateTopicColumnHeader() {
return new DatasetHeader(ColumnHeaderConstant.showCreateTopicColumnHeaders, true);
}

public static DatasetHeader getShowCreateDatabaseColumnHeader() {
return new DatasetHeader(ColumnHeaderConstant.showCreateDatabaseColumnHeaders, true);
}

public static DatasetHeader getShowTablesHeader() {
return new DatasetHeader(ColumnHeaderConstant.showTablesColumnHeaders, true);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@
import org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational.RelationalAuthorizerTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational.ShowAINodesTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational.ShowConfigNodesTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational.ShowCreateDatabaseTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational.ShowCreatePipeTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational.ShowCreateTableTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational.ShowCreateViewTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.metadata.relational.ShowDBTask;
Expand Down Expand Up @@ -142,6 +144,7 @@
import org.apache.iotdb.db.queryengine.plan.execution.config.sys.subscription.CreateTopicTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.sys.subscription.DropSubscriptionTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.sys.subscription.DropTopicTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.sys.subscription.ShowCreateTopicTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.sys.subscription.ShowSubscriptionsTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.sys.subscription.ShowTopicsTask;
import org.apache.iotdb.db.queryengine.plan.relational.analyzer.Analyzer;
Expand Down Expand Up @@ -209,6 +212,9 @@
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowClusterId;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowConfigNodes;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowConfiguration;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCreateDatabase;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCreatePipe;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCreateTopic;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentDatabase;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentSqlDialect;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ShowCurrentTimestamp;
Expand Down Expand Up @@ -424,6 +430,15 @@ public IConfigTask visitShowDB(final ShowDB node, final MPPQueryContext context)
canShowDB(accessControl, context.getSession().getUserName(), databaseName, context));
}

@Override
public IConfigTask visitShowCreateDatabase(
final ShowCreateDatabase node, final MPPQueryContext context) {
context.setQueryType(QueryType.READ);
accessControl.checkCanShowOrUseDatabase(
context.getSession().getUserName(), node.getDatabase(), context);
return new ShowCreateDatabaseTask(node.getDatabase());
}

public static boolean canShowDB(
final AccessControl accessControl,
final String userName,
Expand Down Expand Up @@ -1341,6 +1356,19 @@ public IConfigTask visitShowPipes(ShowPipes node, MPPQueryContext context) {
return new ShowPipeTask(node, context.getSession().getUserName());
}

@Override
public IConfigTask visitShowCreatePipe(ShowCreatePipe node, MPPQueryContext context) {
context.setQueryType(QueryType.READ);
return new ShowCreatePipeTask(node.getPipeName(), context.getSession().getUserName());
}

@Override
public IConfigTask visitShowCreateTopic(ShowCreateTopic node, MPPQueryContext context) {
context.setQueryType(QueryType.READ);
accessControl.checkUserGlobalSysPrivilege(context);
return new ShowCreateTopicTask(node);
}

@Override
public IConfigTask visitCreatePipePlugin(CreatePipePlugin node, MPPQueryContext context) {
context.setQueryType(QueryType.OTHER);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@
import org.apache.iotdb.db.queryengine.plan.execution.config.sys.subscription.CreateTopicTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.sys.subscription.DropSubscriptionTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.sys.subscription.DropTopicTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.sys.subscription.ShowCreateTopicTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.sys.subscription.ShowSubscriptionsTask;
import org.apache.iotdb.db.queryengine.plan.execution.config.sys.subscription.ShowTopicsTask;
import org.apache.iotdb.db.queryengine.plan.statement.AuthorType;
Expand Down Expand Up @@ -195,6 +196,7 @@
import org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription.CreateTopicStatement;
import org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription.DropSubscriptionStatement;
import org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription.DropTopicStatement;
import org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription.ShowCreateTopicStatement;
import org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription.ShowSubscriptionsStatement;
import org.apache.iotdb.db.queryengine.plan.statement.metadata.subscription.ShowTopicsStatement;
import org.apache.iotdb.db.queryengine.plan.statement.metadata.template.AlterSchemaTemplateStatement;
Expand Down Expand Up @@ -742,6 +744,12 @@ public IConfigTask visitShowTopics(
return new ShowTopicsTask(showTopicsStatement);
}

@Override
public IConfigTask visitShowCreateTopic(
ShowCreateTopicStatement showCreateTopicStatement, MPPQueryContext context) {
return new ShowCreateTopicTask(showCreateTopicStatement);
}

@Override
public IConfigTask visitShowSubscriptions(
ShowSubscriptionsStatement showSubscriptionsStatement, MPPQueryContext context) {
Expand Down
Loading
Loading