THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// Add SqlDescribeCatalog & DescribeCatalogOperation // Add SqlDescribeDatabase & DescribeDatabaseOperation // Add SqlDescribeFunction & DescribeFunctionOperation // Changed SqlNodes & Operations // SqlShowCatalogs public class SqlShowCatalogs extends SqlCall { public static final SqlSpecialOperator OPERATOR = new SqlSpecialOperator("SHOW CATALOGS", SqlKind.OTHER); protected final SqlLikeType likeType; protected final boolean notLike; protected final SqlCharStringLiteral likeLiteral; public SqlShowCatalogs(SqlParserPos pos) { super(pos); this.likeType = null; this.notLike = false; this.likeLiteral = null; } public SqlShowCatalogs( SqlParserPos pos, String likeType, boolean notLike, SqlCharStringLiteral likeLiteral) { super(pos); if (likeType != null) { this.likeType = SqlLikeType.of(likeType); this.likeLiteral = requireNonNull(likeLiteral, "Like pattern must not be null"); } else { this.likeType = null; this.likeLiteral = null; } this.notLike = notLike; } public SqlLikeType getLikeType() { return likeType; } public boolean isLike() { return likeType == SqlLikeType.LIKE; } public boolean isILike() { return likeType == SqlLikeType.ILIKE; } public boolean isWithLike() { return isLike() || isILike(); } public boolean isNotLike() { return notLike; } public String getLikeSqlPattern() { return Objects.isNull(likeLiteral) ? null : likeLiteral.getValueAs(String.class); } @Override public SqlOperator getOperator() { return OPERATOR; } @Override public List<SqlNode> getOperandList() { return Collections.emptyList(); } @Override public void unparse(SqlWriter writer, int leftPrec, int rightPrec) { writer.keyword("SHOW CATALOGS"); if (isWithLike()) { if (isNotLike()) { writer.keyword(String.format("NOT %s '%s'", likeType.name(), getLikeSqlPattern())); } else { writer.keyword(String.format("%s '%s'", likeType.name(), getLikeSqlPattern())); } } } } // ShowCatalogsOperation public public class ShowCatalogsOperation implements ShowOperation { private final OperationLikeType likeType; private final boolean notLike; private final String likePattern; /** Use when there is no sub-clause. */ public ShowCatalogsOperation() { this.likeType = null; this.notLike = false; this.likePattern = null; } /** Use when there is like. */ public ShowCatalogsOperation(String likeType, boolean notLike, String likePattern) { this.likeType = OperationLikeType.of(checkNotNull(likeType, "Like type must not be null")); this.likePattern = checkNotNull(likePattern, "Like pattern must not be null"); this.notLike = notLike; } public boolean isLike() { return likeType == OperationLikeType.LIKE; } public boolean isIlike() { return likeType == OperationLikeType.ILIKE; } public boolean isWithLike() { return isLike() || isIlike(); } public boolean isNotLike() { return notLike; } public String getLikePattern() { return likePattern; } @Override public String asSummaryString() { StringBuilder builder = new StringBuilder().append("SHOW CATALOGS"); if (isWithLike()) { if (notLike) { builder.append(String.format(" NOT %s %s", likeType.name(), likePattern)); } else { builder.append(String.format(" %s %s", likeType.name(), likePattern)); } } return builder.toString(); } } // SqlShowDatabases public class SqlShowDatabases extends SqlCall { public static final SqlSpecialOperator OPERATOR = new SqlSpecialOperator("SHOW DATABASES", SqlKind.OTHER); protected final String preposition; protected final SqlIdentifier catalogName; protected final SqlLikeType likeType; protected final boolean notLike; protected final SqlCharStringLiteral likeLiteral; public SqlShowDatabases(SqlParserPos pos) { super(pos); this.preposition = null; this.catalogName = null; this.likeType = null; this.notLike = false; this.likeLiteral = null; } public SqlShowDatabases( SqlParserPos pos, String preposition, SqlIdentifier catalogName, String likeType, boolean notLike, SqlCharStringLiteral likeLiteral) { super(pos); this.preposition = preposition; this.catalogName = preposition != null ? requireNonNull(catalogName, "Catalog name must not be null.") : null; if (likeType != null) { this.likeType = SqlLikeType.of(likeType); this.likeLiteral = requireNonNull(likeLiteral, "Like pattern must not be null"); } else { this.likeType = null; this.likeLiteral = null; } this.notLike = notLike; } public String getPreposition() { return preposition; } public SqlIdentifier getCatalogName() { return catalogName; } public String catalogName() { return catalogName != null ? catalogName.getSimple() : null; } public SqlLikeType getLikeType() { return likeType; } public boolean isLike() { return likeType == SqlLikeType.LIKE; } public boolean isILike() { return likeType == SqlLikeType.ILIKE; } public boolean isNotLike() { return notLike; } public boolean isWithLike() { return isLike() || isILike(); } public SqlCharStringLiteral getLikeLiteral() { return likeLiteral; } public String getLikeSqlPattern() { return Objects.isNull(likeLiteral) ? null : likeLiteral.getValueAs(String.class); } @Override public SqlOperator getOperator() { return OPERATOR; } @Override public List<SqlNode> getOperandList() { return Objects.isNull(this.catalogName) ? Collections.emptyList() : Collections.singletonList(catalogName); } @Override public void unparse(SqlWriter writer, int leftPrec, int rightPrec) { if (this.preposition == null) { writer.keyword("SHOW DATABASES"); } else if (catalogName != null) { writer.keyword("SHOW DATABASES " + this.preposition); catalogName.unparse(writer, leftPrec, rightPrec); } if (isWithLike()) { if (isNotLike()) { writer.keyword(String.format("NOT %s '%s'", likeType.name(), getLikeSqlPattern())); } else { writer.keyword(String.format("%s '%s'", likeType.name(), getLikeSqlPattern())); } } } // ShowDatabasesOperation public class ShowDatabasesOperation implements ShowOperation { private final String preposition; private final String catalogName; private final boolean withLike; private final boolean notLike; private final String likePattern; public ShowDatabasesOperation() { this.preposition = null; this.catalogName = null; this.withLike = false; this.notLike = false; this.likePattern = null; } public ShowDatabasesOperation(boolean notLike, String likePattern) { this.preposition = null; this.catalogName = null; this.withLike = likePattern != null; this.notLike = notLike; this.likePattern = likePattern; } public ShowDatabasesOperation( String preposition, String catalogName, boolean notLike, String likePattern) { this.preposition = checkNotNull(preposition, "Preposition must not be null"); this.catalogName = checkNotNull(catalogName, "Catalog name must not be null"); this.withLike = likePattern != null; this.notLike = notLike; this.likePattern = likePattern; } public String getPreposition() { return preposition; } public String getCatalogName() { return catalogName; } public boolean isWithLike() { return withLike; } public boolean isNotLike() { return notLike; } public String getLikePattern() { return likePattern; } @Override public String asSummaryString() { StringBuilder builder = new StringBuilder().append("SHOW DATABASES"); if (preposition != null) { builder.append(String.format(" %s %s", preposition, catalogName)); } if (withLike) { if (notLike) { builder.append(String.format(" %s LIKE %s", "NOT", likePattern)); } else { builder.append(String.format(" LIKE %s", likePattern)); } } return builder.toString(); } } public class ShowDatabasesOperation implements ShowOperation { private final String preposition; private final String catalogName; private final OperationLikeType likeType; private final boolean notLike; private final String likePattern; /** Use when there is no sub-clause. */ public ShowDatabasesOperation() { this.preposition = null; this.catalogName = null; this.likeType = null; this.notLike = false; this.likePattern = null; } /** Use when there is only like. */ public ShowDatabasesOperation(String likeType, boolean notLike, String likePattern) { this.preposition = null; this.catalogName = null; this.likeType = OperationLikeType.of(checkNotNull(likeType, "Like type must not be null")); this.likePattern = checkNotNull(likePattern, "Like pattern must not be null"); this.notLike = notLike; } /** Use when there is preposition and like. */ public ShowDatabasesOperation( String preposition, String catalogName, String likeType, boolean notLike, String likePattern) { this.preposition = checkNotNull(preposition, "Preposition must not be null"); this.catalogName = checkNotNull(catalogName, "Catalog name must not be null"); if (likeType != null) { this.likeType = OperationLikeType.of(likeType); this.likePattern = checkNotNull(likePattern, "Like pattern must not be null"); } else { this.likeType = null; this.likePattern = null; } this.notLike = notLike; } public String getPreposition() { return preposition; } public String getCatalogName() { return catalogName; } public boolean isLike() { return likeType == OperationLikeType.LIKE; } public boolean isIlike() { return likeType == OperationLikeType.ILIKE; } public boolean isWithLike() { return isLike() || isIlike(); } public boolean isNotLike() { return notLike; } public String getLikePattern() { return likePattern; } @Override public String asSummaryString() { StringBuilder builder = new StringBuilder().append("SHOW DATABASES"); if (preposition != null) { builder.append(String.format(" %s %s", preposition, catalogName)); } if (isWithLike()) { if (notLike) { builder.append(String.format(" NOT %s %s", likeType.name(), likePattern)); } else { builder.append(String.format(" %s %s", likeType.name(), likePattern)); } } return builder.toString(); } } // omit here. basically same as ShowCatalogs/ShowDatabases above. // SqlShowFunctions & ShowFunctionsOperation // SqlShowViews & ShowViewsOperation // SqlShowModules & ShowModulesOperation // SqlShowJars & ShowJarsOperation // SqlShowJobs & ShowJobsOperation |
...