public static boolean isSimpleCountTableSource(WallVisitor visitor, SQLTableSource tableSource) { if (!(tableSource instanceof SQLSubqueryTableSource)) { return false; } SQLSubqueryTableSource subQuery = (SQLSubqueryTableSource) tableSource; return isSimpleCountTableSource(visitor, subQuery.getSelect()); }
public boolean visit(SQLSubqueryTableSource x) { x.getSelect().accept(this); return false; }
public SQLName getTableName() { if (this.tableSource instanceof SQLExprTableSource) { SQLExprTableSource exprTableSource = (SQLExprTableSource) this.tableSource; return (SQLName) exprTableSource.getExpr(); } if (tableSource instanceof SQLSubqueryTableSource) { SQLSelectQuery selectQuery = ((SQLSubqueryTableSource) tableSource).getSelect().getQuery(); if (selectQuery instanceof SQLSelectQueryBlock) { SQLTableSource subQueryTableSource = ((SQLSelectQueryBlock) selectQuery).getFrom(); if (subQueryTableSource instanceof SQLExprTableSource) { SQLExpr subQueryTableSourceExpr = ((SQLExprTableSource) subQueryTableSource).getExpr(); return (SQLName) subQueryTableSourceExpr; } } } return null; }
private static boolean hasTableSource(SQLTableSource x) { if (x == null) { return false; } if (x instanceof SQLExprTableSource) { SQLExpr fromExpr = ((SQLExprTableSource) x).getExpr(); if (fromExpr instanceof SQLName) { String name = fromExpr.toString(); name = form(name); if (name.equalsIgnoreCase("DUAL")) { return false; } } return true; } else if (x instanceof SQLJoinTableSource) { SQLJoinTableSource join = (SQLJoinTableSource) x; return hasTableSource(join.getLeft()) || hasTableSource(join.getRight()); } else if (x instanceof SQLSubqueryTableSource) { return hasTableSource(((SQLSubqueryTableSource) x).getSelect().getQuery()); } return false; }
public SQLDataType computeDataType() { if (resolvedColumn != null) { return resolvedColumn.getDataType(); } if (resolvedOwnerObject != null && resolvedOwnerObject instanceof SQLSubqueryTableSource) { SQLSelect select = ((SQLSubqueryTableSource) resolvedOwnerObject).getSelect(); SQLSelectQueryBlock queryBlock = select.getFirstQueryBlock(); if (queryBlock == null) { return null; } SQLSelectItem selectItem = queryBlock.findSelectItem(nameHashCode64()); if (selectItem != null) { return selectItem.computeDataType(); } } return null; }
@Override public boolean visit(MySqlSelectQueryBlock x) { SQLOrderBy orderBy = x.getOrderBy(); SQLLimit limit = x.getLimit(); if (limit != null && (orderBy == null || orderBy.getItems().size() == 0)) { boolean subQueryHasOrderBy = false; SQLTableSource from = x.getFrom(); if (from instanceof SQLSubqueryTableSource) { SQLSubqueryTableSource subqueryTabSrc = (SQLSubqueryTableSource) from; SQLSelect select = subqueryTabSrc.getSelect(); if (select.getQuery() instanceof SQLSelectQueryBlock) { SQLSelectQueryBlock subquery = (SQLSelectQueryBlock) select.getQuery(); if (subquery.getOrderBy() != null && subquery.getOrderBy().getItems().size() > 0) { subQueryHasOrderBy = true; } } } if (!subQueryHasOrderBy) { unorderedLimitCount++; } } return true; } }
public SQLDataType computeDataType() { SQLColumnDefinition resolvedColumn = getResolvedColumn(); if (resolvedColumn != null) { return resolvedColumn.getDataType(); } if (resolvedOwnerObject != null && resolvedOwnerObject instanceof SQLSubqueryTableSource) { SQLSelect select = ((SQLSubqueryTableSource) resolvedOwnerObject).getSelect(); SQLSelectQueryBlock queryBlock = select.getFirstQueryBlock(); if (queryBlock == null) { return null; } SQLSelectItem selectItem = queryBlock.findSelectItem(nameHashCode64()); if (selectItem != null) { return selectItem.computeDataType(); } } return null; }
@Override public boolean visit(SQLSubqueryTableSource x) { print('('); this.indentCount++; println(); this.visit(x.getSelect()); this.indentCount--; println(); print(')'); if (x.getAlias() != null) { print(' '); print0(x.getAlias()); } return false; }
selectQuery = queryBlock; } else if (from instanceof SQLSubqueryTableSource) { SQLSelect subSelect = ((SQLSubqueryTableSource) from).getSelect(); if (subSelect.getQuery() instanceof OracleSelectQueryBlock) { selectQuery = (OracleSelectQueryBlock) subSelect.getQuery();
@Override public boolean visit(SQLSubqueryTableSource x) { print('('); this.indentCount++; println(); x.getSelect().accept(this); this.indentCount--; println(); print(')'); if (x.getAlias() != null) { print(' '); print0(x.getAlias()); } return false; }
&& queryBlock.getSelectList().get(0).getExpr() instanceof SQLAllColumnExpr) { if (from instanceof SQLSubqueryTableSource) { SQLSelectQuery subQuery = ((SQLSubqueryTableSource) from).getSelect().getQuery(); if (queryBlockFromIsNull(visitor, subQuery)) { return true;
@Override public boolean visit(HiveMultiInsertStatement x) { SQLTableSource from = x.getFrom(); if (x.getFrom() != null) { if (from instanceof SQLSubqueryTableSource) { SQLSelect select = ((SQLSubqueryTableSource) from).getSelect(); print0(ucase ? "FROM (" : "from ("); this.indentCount++; println(); select.accept(this); this.indentCount--; println(); print0(") "); print0(x.getFrom().getAlias()); } else { print0(ucase ? "FROM " : "from "); from.accept(this); } println(); } for (int i = 0; i < x.getItems().size(); ++i) { HiveInsert insert = x.getItems().get(i); if (i != 0) { println(); } insert.accept(this); } return false; }
@Override public boolean visit(OdpsInsertStatement x) { SQLTableSource from = x.getFrom(); if (x.getFrom() != null) { if (from instanceof SQLSubqueryTableSource) { SQLSelect select = ((SQLSubqueryTableSource) from).getSelect(); print0(ucase ? "FROM (" : "from ("); this.indentCount++; println(); select.accept(this); this.indentCount--; println(); print0(") "); print0(x.getFrom().getAlias()); } else { print0(ucase ? "FROM " : "from "); from.accept(this); } println(); } for (int i = 0; i < x.getItems().size(); ++i) { HiveInsert insert = x.getItems().get(i); if (i != 0) { println(); } insert.accept(this); } return false; }
public boolean visit(SQLSubqueryTableSource x) { String subViewName = generateSubViewName(); SQLObject parent = x.getParent(); if(parent instanceof SQLSelectQueryBlock) { SQLSelectQueryBlock queryBlock = (SQLSelectQueryBlock) parent; queryBlock.setFrom(subViewName, x.getAlias()); } else if(parent instanceof SQLJoinTableSource) { SQLJoinTableSource join = (SQLJoinTableSource) parent; if (join.getLeft() == x) { join.setLeft(subViewName, x.getAlias()); } else if (join.getRight() == x) { join.setRight(subViewName, x.getAlias()); } } SQLCreateViewStatement stmt = new SQLCreateViewStatement(); stmt.setName(generateSubViewName()); SQLSelect select = x.getSelect(); stmt.setSubQuery(select); targetList.add(0, stmt); stmt.accept(new FromSubqueryResolver(targetList, viewName)); return false; }
return false; } else if (tableSource instanceof SQLSubqueryTableSource) { SQLSelectQueryBlock queryBlock = ((SQLSubqueryTableSource) tableSource).getSelect().getQueryBlock(); if (queryBlock == null) { return false;
public boolean visit(SQLDeleteStatement x) { if (repository != null && x.getParent() == null) { repository.resolve(x); } setMode(x, Mode.Delete); if (x.getTableSource() instanceof SQLSubqueryTableSource) { SQLSelectQuery selectQuery = ((SQLSubqueryTableSource) x.getTableSource()).getSelect().getQuery(); if (selectQuery instanceof SQLSelectQueryBlock) { SQLSelectQueryBlock subQueryBlock = ((SQLSelectQueryBlock) selectQuery); subQueryBlock.getWhere().accept(this); } } TableStat stat = getTableStat(x.getTableName()); stat.incrementDeleteCount(); accept(x.getWhere()); return false; }
public static boolean isSimpleCountTableSource(WallVisitor visitor, SQLTableSource tableSource) { if (!(tableSource instanceof SQLSubqueryTableSource)) { return false; } SQLSubqueryTableSource subQuery = (SQLSubqueryTableSource) tableSource; return isSimpleCountTableSource(visitor, subQuery.getSelect()); }
SQLSelect select = ((SQLSubqueryTableSource) resolvedTableSource).getSelect(); SQLSelectQueryBlock queryBlock = select.getFirstQueryBlock(); if (queryBlock != null) {
SQLSelect leftSelect = ((SQLSubqueryTableSource) left).getSelect(); if (leftSelect.getQuery() instanceof SQLSelectQueryBlock) { boolean hasAllColumn = ((SQLSelectQueryBlock) leftSelect.getQuery()).selectItemHasAllColumn(); SQLSelect rightSelect = ((SQLSubqueryTableSource) right).getSelect(); if (rightSelect.getQuery() instanceof SQLSelectQueryBlock) { boolean hasAllColumn = ((SQLSelectQueryBlock) rightSelect.getQuery()).selectItemHasAllColumn();