@Override protected Void visitShowTables(ShowTables node, Integer context) { builder.append("SHOW TABLES"); node.getSchema().ifPresent(value -> builder.append(" FROM ") .append(formatName(value))); node.getLikePattern().ifPresent(value -> builder.append(" LIKE ") .append(formatStringLiteral(value))); return null; }
private String formatName(QualifiedName name) { return name.getOriginalParts().stream() .map(e -> formatName(e, escapeIdentifier)) .collect(joining(".")); }
@Override protected Void visitDropSchema(DropSchema node, Integer context) { builder.append("DROP SCHEMA "); if (node.isExists()) { builder.append("IF EXISTS "); } builder.append(formatName(node.getSchemaName())) .append(" ") .append(node.isCascade() ? "CASCADE" : "RESTRICT"); return null; }
builder.append("IF NOT EXISTS "); String tableName = formatName(node.getName()); builder.append(tableName).append(" (\n"); StringBuilder builder = new StringBuilder(elementIndent); builder.append("LIKE ") .append(formatName(likeClause.getTableName())); if (likeClause.getPropertiesOption().isPresent()) { builder.append(" ")
@Override protected Void visitCreateTableAsSelect(CreateTableAsSelect node, Integer indent) { builder.append("CREATE TABLE "); if (node.isNotExists()) { builder.append("IF NOT EXISTS "); } builder.append(formatName(node.getName())); if (node.getColumnAliases().isPresent()) { String columnList = node.getColumnAliases().get().stream().map(element -> formatExpression(element, tableNameMapper, columnNameMapper, queryWithTables, escapeIdentifier)).collect(joining(", ")); builder.append(format("( %s )", columnList)); } if (node.getComment().isPresent()) { builder.append("\nCOMMENT " + formatStringLiteral(node.getComment().get())); } builder.append(formatProperties(node.getProperties())); builder.append(" AS "); process(node.getQuery(), indent); if (!node.isWithData()) { builder.append(" WITH NO DATA"); } return null; }
@Override protected Void visitShowPartitions(ShowPartitions node, Integer context) { builder.append("SHOW PARTITIONS FROM ") .append(formatName(node.getTable())); if (node.getWhere().isPresent()) { builder.append(" WHERE ") .append(formatExpression(node.getWhere().get(), tableNameMapper, columnNameMapper, queryWithTables, escapeIdentifier)); } if (!node.getOrderBy().isEmpty()) { builder.append(" ORDER BY ") .append(formatSortItems(node.getOrderBy(), tableNameMapper, columnNameMapper, queryWithTables, escapeIdentifier)); } if (node.getLimit().isPresent()) { builder.append(" LIMIT ") .append(node.getLimit().get()); } return null; }
@Override protected Void visitCreateSchema(CreateSchema node, Integer context) { builder.append("CREATE SCHEMA "); if (node.isNotExists()) { builder.append("IF NOT EXISTS "); } builder.append(formatName(node.getSchemaName())); builder.append(formatProperties(node.getProperties())); return null; }
@Override protected Void visitDelete(Delete node, Integer context) { builder.append("DELETE FROM ") .append(formatName(node.getTable().getName())); if (node.getWhere().isPresent()) { builder.append(" WHERE ") .append(formatExpression(node.getWhere().get(), tableNameMapper, columnNameMapper, queryWithTables, escapeIdentifier)); } return null; }
@Override protected Void visitCreateView(CreateView node, Integer indent) { builder.append("CREATE "); if (node.isReplace()) { builder.append("OR REPLACE "); } builder.append("VIEW ") .append(formatName(node.getName())) .append(" AS\n"); process(node.getQuery(), indent); return null; }
@Override protected Void visitDropColumn(DropColumn node, Integer context) { builder.append("ALTER TABLE ") .append(formatName(node.getTable())) .append(" DROP COLUMN ") .append(formatExpression(node.getColumn(), tableNameMapper, columnNameMapper, queryWithTables, escapeIdentifier)); return null; }
@Override protected Void visitShowColumns(ShowColumns node, Integer context) { builder.append("SHOW COLUMNS FROM ") .append(formatName(node.getTable())); return null; }
@Override protected Void visitRenameSchema(RenameSchema node, Integer context) { builder.append("ALTER SCHEMA ") .append(formatName(node.getSource())) .append(" RENAME TO ") .append(formatExpression(node.getTarget(), tableNameMapper, columnNameMapper, queryWithTables, escapeIdentifier)); return null; }
@Override protected Void visitShowCreate(ShowCreate node, Integer context) { if (node.getType() == ShowCreate.Type.TABLE) { builder.append("SHOW CREATE TABLE ") .append(formatName(node.getName())); } else if (node.getType() == ShowCreate.Type.VIEW) { builder.append("SHOW CREATE VIEW ") .append(formatName(node.getName())); } return null; }
@Override protected Void visitTable(Table node, Integer indent) { if (!node.getName().getPrefix().isPresent() && queryWithTables.contains(node.getName().getSuffix().toLowerCase(Locale.ENGLISH))) { builder.append(formatName(node.getName().toString(), escapeIdentifier)); return null; } builder.append(tableNameMapper.apply(node.getName())); return null; }