[Improvement](meta) support return no partition info for show_create_table (#19030)
Some tables have a mount of partitions, when use show create table stmt on them,
you will get so many lines of result that a whole screen cannot show them all, even if you scroll up to the top.
show create table table2;
| table2 | CREATE TABLE `table2` (
`k1` int(11) NULL COMMENT 'test column k1',
`k2` int(11) NULL COMMENT 'test column k2'
) ENGINE=OLAP
DUPLICATE KEY(`k1`, `k2`)
COMMENT 'test table1'
PARTITION BY RANGE(`k1`)
(PARTITION p01 VALUES [("-2147483648"), ("10")),
PARTITION p02 VALUES [("10"), ("100")))
DISTRIBUTED BY HASH(`k1`) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"storage_format" = "V2",
"light_schema_change" = "true",
"disable_auto_compaction" = "false"
);
show brief create table table2;
| table2 | CREATE TABLE `table2` ( `k1` int(11) NULL COMMENT 'test column k1',
`k2` int(11) NULL COMMENT 'test column k2'
) ENGINE=OLAP
DUPLICATE KEY(`k1`, `k2`)
COMMENT 'test table1'
DISTRIBUTED BY HASH(`k1`) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"storage_format" = "V2",
"light_schema_change" = "true",
"disable_auto_compaction" = "false"
); |
This commit is contained in:
@ -51,14 +51,20 @@ public class ShowCreateTableStmt extends ShowStmt {
|
||||
|
||||
private TableName tbl;
|
||||
private boolean isView;
|
||||
private boolean needBriefDdl;
|
||||
|
||||
public ShowCreateTableStmt(TableName tbl) {
|
||||
this(tbl, false);
|
||||
this(tbl, false, false);
|
||||
}
|
||||
|
||||
public ShowCreateTableStmt(TableName tbl, boolean isView) {
|
||||
public ShowCreateTableStmt(TableName tbl, boolean needBriefDdl) {
|
||||
this(tbl, false, needBriefDdl);
|
||||
}
|
||||
|
||||
public ShowCreateTableStmt(TableName tbl, boolean isView, boolean needBriefDdl) {
|
||||
this.tbl = tbl;
|
||||
this.isView = isView;
|
||||
this.needBriefDdl = needBriefDdl;
|
||||
}
|
||||
|
||||
|
||||
@ -78,6 +84,10 @@ public class ShowCreateTableStmt extends ShowStmt {
|
||||
return isView;
|
||||
}
|
||||
|
||||
public boolean isNeedBriefDdl() {
|
||||
return needBriefDdl;
|
||||
}
|
||||
|
||||
public static ShowResultSetMetaData getViewMetaData() {
|
||||
return VIEW_META_DATA;
|
||||
}
|
||||
|
||||
@ -2766,7 +2766,7 @@ public class Env {
|
||||
public static void getDdlStmt(TableIf table, List<String> createTableStmt, List<String> addPartitionStmt,
|
||||
List<String> createRollupStmt, boolean separatePartition, boolean hidePassword, long specificVersion) {
|
||||
getDdlStmt(null, null, table, createTableStmt, addPartitionStmt, createRollupStmt, separatePartition,
|
||||
hidePassword, false, specificVersion);
|
||||
hidePassword, false, specificVersion, false);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2776,7 +2776,7 @@ public class Env {
|
||||
*/
|
||||
public static void getDdlStmt(DdlStmt ddlStmt, String dbName, TableIf table, List<String> createTableStmt,
|
||||
List<String> addPartitionStmt, List<String> createRollupStmt, boolean separatePartition,
|
||||
boolean hidePassword, boolean getDdlForLike, long specificVersion) {
|
||||
boolean hidePassword, boolean getDdlForLike, long specificVersion, boolean getBriefDdl) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
// 1. create table
|
||||
@ -2888,7 +2888,8 @@ public class Env {
|
||||
if (separatePartition) {
|
||||
partitionId = Lists.newArrayList();
|
||||
}
|
||||
if (partitionInfo.getType() == PartitionType.RANGE || partitionInfo.getType() == PartitionType.LIST) {
|
||||
if (!getBriefDdl && (partitionInfo.getType() == PartitionType.RANGE
|
||||
|| partitionInfo.getType() == PartitionType.LIST)) {
|
||||
sb.append("\n").append(partitionInfo.toSql(olapTable, partitionId));
|
||||
}
|
||||
|
||||
|
||||
@ -1196,7 +1196,8 @@ public class InternalCatalog implements CatalogIf<Database> {
|
||||
throw new DdlException("Table[" + table.getName() + "] is external, not support rollup copy");
|
||||
}
|
||||
|
||||
Env.getDdlStmt(stmt, stmt.getDbName(), table, createTableStmt, null, null, false, false, true, -1L);
|
||||
Env.getDdlStmt(stmt, stmt.getDbName(), table, createTableStmt, null, null, false, false, true, -1L,
|
||||
false);
|
||||
if (createTableStmt.isEmpty()) {
|
||||
ErrorReport.reportDdlException(ErrorCode.ERROR_CREATE_TABLE_LIKE_EMPTY, "CREATE");
|
||||
}
|
||||
|
||||
@ -990,7 +990,8 @@ public class ShowExecutor {
|
||||
return;
|
||||
}
|
||||
List<String> createTableStmt = Lists.newArrayList();
|
||||
Env.getDdlStmt(table, createTableStmt, null, null, false, true /* hide password */, -1L);
|
||||
Env.getDdlStmt(null, null, table, createTableStmt, null, null, false,
|
||||
true /* hide password */, false, -1L, showStmt.isNeedBriefDdl());
|
||||
if (createTableStmt.isEmpty()) {
|
||||
resultSet = new ShowResultSet(showStmt.getMetaData(), rows);
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user