THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
But these features are not very complete compared with other popular engines such as spark, presto.
For example, many popular engines support show operation with filtering except flink, and support describe other object(flink only support describe table).
show | Support or Not | Support filter or Not |
show tables | Yes | Yes |
show columns | Yes | Yes |
show catalogs | Yes | No |
show databases | Yes | No |
show functions | Yes | No |
show views | Yes | No |
show modules | Yes | No |
show jars | Yes | No |
show jobs | Yes | No |
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// Add DescribeDatabaseOperation // Add DescribeViewOperation // Add DescribeFunctionOperation // Changed Operations // ShowCatalogsOperation public class ShowCatalogsOperation implements ShowOperation { private final boolean useLike; private final boolean notLike; private final String likePattern; public ShowCatalogsOperation(boolean useLike, boolean notLike, String likePattern) { this.useLike = useLike; this.notLike = notLike; this.likePattern = likePattern; } @Override public String asSummaryString() { return "SHOW CATALOGS"; } } // ShowDatabasesOperation public class ShowDatabasesOperation implements ShowOperation { private final String catalogName; private final boolean useLike; private final boolean notLike; private final String likePattern; private final String preposition; public ShowDatabasesOperation( String catalogName, boolean useLike, boolean notLike, String likePattern, String preposition) { this.catalogName = catalogName; this.useLike = useLike; this.notLike = notLike; this.likePattern = likePattern; this.preposition = preposition; } } // ShowFunctionsOperation public class ShowFunctionsOperation @Override implements public String asSummaryString() { return "SHOW DATABASES";ShowOperation { } } // ShowFunctionsOperation public class ShowFunctionsOperation implements ShowOperation { private final String catalogName; private final String databaseName; private final boolean useLike; private final boolean notLike; private final String likePattern; private final String preposition; private final FunctionScope functionScope; /** * Represent scope of function. * * <ul> * <li><b>USER</b> return only user-defined functions * <li><b>ALL</b> return all user-defined and built-in functions * </ul> */ public enum FunctionScope { USER, ALL } public ShowFunctionsOperation( String catalogName, String databaseName, boolean useLike, boolean notLike, String likePattern, String preposition, FunctionScope functionScope) { this.catalogName = catalogName; this.databaseName = databaseName; this.useLike = useLike; this.notLike = notLike; this.likePattern = likePattern; this.preposition = preposition; this.functionScope = functionScope; } @Override public public String asSummaryString() { if (functionScope == FunctionScope.ALL) { return "SHOW FUNCTIONS"; } else { return String.format("SHOW %s FUNCTIONS", functionScope); } } public FunctionScope FunctionScope getFunctionScope() { return functionScope; } } // ShowViewsOperation public class ShowViewsOperation implements ShowOperation { private final String catalogName; private final String databaseName; private final boolean useLike; private final boolean notLike; private final String likePattern; private final String preposition; public ShowViewsOperation( String catalogName, String databaseName, boolean useLike, boolean notLike, String likePattern, String preposition) { this.catalogName = catalogName; this.databaseName = databaseName; this.useLike = useLike; this.notLike = notLike; this.likePattern = likePattern; this.preposition = preposition; } @Override public String asSummaryString() { return "SHOW VIEWS"; } } // ShowModulesOperation public class ShowModulesOperation implements ShowOperation { private final boolean requireFull; private final boolean useLike; private final boolean notLike; private final String likePattern; public ShowModulesOperation( boolean requireFull, boolean useLike, boolean notLike, String likePattern) { this.requireFull = requireFull; this.useLike = useLike; this.notLike = notLike; this.likePattern = likePattern; } @Override public String asSummaryString() { return requireFull ? "SHOW FULL MODULES" : "SHOW MODULES"this.likePattern = likePattern; } public boolean requireFull() { return requireFull; } } // ShowJarsOperation public class ShowJarsOperation implements ShowOperation { private final boolean useLike; private final boolean notLike; private final String likePattern; public ShowJarsOperation(boolean useLike, boolean notLike, String likePattern) { this.useLike = useLike; this.notLike = notLike; this.likePattern = likePattern; } @Override public String asSummaryString() { notLike; return "SHOW JARS"this.likePattern = likePattern; } } // ShowJobsOperation public class ShowJobsOperation implements ShowOperation { private final boolean useLike; private final boolean notLike; private final String likePattern; public ShowJobsOperation(boolean useLike, boolean notLike, String likePattern) { this.useLike = useLike; this.notLike = notLike; this.likePattern = likePattern; } @Override public String asSummaryString() { return "SHOW JOBS"; } } |
Future Work
to be added
...