public SQLName getTableName() { if (tableSource == null) { return null; } return (SQLName) tableSource.getExpr(); }
public boolean visit(SQLExprTableSource x) { printTableSourceExpr(x.getExpr()); String alias = x.getAlias(); if (alias != null) { print(' '); print0(alias); } for (int i = 0; i < x.getHintsSize(); ++i) { print(' '); x.getHints().get(i).accept(this); } if (x.getPartitionSize() > 0) { print0(ucase ? " PARTITION (" : " partition ("); printlnAndAccept(x.getPartitions(), ", "); print(')'); } return false; }
public boolean visit(SQLCreateTriggerStatement x) { SQLExprTableSource on = x.getOn(); on.accept(this); return false; }
public SQLExprTableSource clone() { SQLExprTableSource x = new SQLExprTableSource(); cloneTo(x); return x; }
public void addTableSource(SQLName name) { SQLExprTableSource tableSource = new SQLExprTableSource(name); tableSource.setParent(this); this.tableSources.add(tableSource); }
public boolean visit(SQLExprTableSource x) { SQLExpr expr = x.getExpr(); if (expr instanceof SQLIdentifierExpr) { SQLIdentifierExpr identifierExpr = (SQLIdentifierExpr) expr; String ident = identifierExpr.getName(); String mappingIdent = mappings.get(ident); if (mappingIdent != null) { x.setExpr(new SQLIdentifierExpr(mappingIdent)); } } return false; }
public boolean visit(SQLExprTableSource x) { printTableSourceExpr(x.getExpr()); String alias = x.getAlias(); if (alias != null) { print(' '); print0(alias); } if (x.getHints() != null && x.getHints().size() > 0) { print0(ucase ? " WITH (" : " with ("); printAndAccept(x.getHints(), ", "); print(')'); } return false; }
public boolean visit(SQLExprTableSource x) { printTableSourceExpr(x.getExpr()); String alias = x.getAlias(); if (alias != null) { print(' '); print0(alias); } if (isPrettyFormat() && x.hasAfterComment()) { print(' '); printlnComment(x.getAfterCommentsDirect()); } return false; }
/** * Parse the from clause * zhongshu-comment 只解析了一般查询和join查询,没有解析子查询 * @param from the from clause. * @return list of From objects represents all the sources. */ private List<From> findFrom(SQLTableSource from) { //zhongshu-comment class1.isAssignableFrom(class2) class2是不是class1的子类或者子接口 //改成用instanceof 应该也行吧:from instanceof SQLExprTableSource boolean isSqlExprTable = from.getClass().isAssignableFrom(SQLExprTableSource.class); if (isSqlExprTable) { SQLExprTableSource fromExpr = (SQLExprTableSource) from; String[] split = fromExpr.getExpr().toString().split(","); ArrayList<From> fromList = new ArrayList<>(); for (String source : split) { fromList.add(new From(source.trim(), fromExpr.getAlias())); } return fromList; } SQLJoinTableSource joinTableSource = ((SQLJoinTableSource) from); List<From> fromList = new ArrayList<>(); fromList.addAll(findFrom(joinTableSource.getLeft())); fromList.addAll(findFrom(joinTableSource.getRight())); return fromList; }
public String getAlias() { return tableSource.getAlias(); }
@Override public boolean visit(SQLCommentStatement x) { SQLCommentStatement.Type type = x.getType(); SQLExprTableSource on = x.getOn(); if (type == SQLCommentStatement.Type.TABLE) { print0(ucase ? "ALTER TABLE " : "alter table "); on.accept(this); print0(ucase ? " COMMENT = " : " comment = "); x.getComment().accept(this); } else { SQLPropertyExpr propertyExpr = (SQLPropertyExpr) on.getExpr(); SQLExpr table = propertyExpr.getOwner(); String column = propertyExpr.getName(); print0(ucase ? "ALTER TABLE " : "alter table "); printTableSourceExpr(table); print0(ucase ? " MODIFY COLUMN " : " modify column "); print(column); print0(ucase ? " COMMENT " : " comment "); x.getComment().accept(this); } return false; }
public SQLDropViewStatement(SQLName name){ this(new SQLExprTableSource(name)); }
public boolean visit(SQLExprTableSource x) { printTableSourceExpr(x.getExpr()); String alias = x.getAlias(); if (alias != null) { print(' '); print0(alias); } if (x.getHints() != null && x.getHints().size() > 0) { print0(ucase ? " WITH (" : " with ("); printAndAccept(x.getHints(), ", "); print(')'); } return false; }
public boolean visit(SQLExprTableSource x) { printTableSourceExpr(x.getExpr()); String alias = x.getAlias(); if (alias != null) { print(' '); print0(alias); } if (isPrettyFormat() && x.hasAfterComment()) { print(' '); printlnComment(x.getAfterCommentsDirect()); } return false; }
@Override public String getTableAlias() { return ast.getTableSource().getAlias(); }
public void addTable(SQLName name) { if (name == null) { return; } this.addTable(new SQLExprTableSource(name)); }
public void setTable(SQLName table) { this.setTable(new SQLExprTableSource(table)); this.table.setParent(this); }
public SQLName getName() { if (tableSource == null) { return null; } return (SQLName) tableSource.getExpr(); }
@Override public boolean visit(SQLAlterTableExchangePartition x) { SQLExprTableSource table = x.getTable(); if (table != null) { table.accept(this); } return false; }