public static void addSelectItem(SQLStatement stmt, SQLExpr expr, String alias, boolean first) { if (expr == null) { return; } if (stmt instanceof SQLSelectStatement) { SQLSelectQuery query = ((SQLSelectStatement) stmt).getSelect().getQuery(); if (query instanceof SQLSelectQueryBlock) { SQLSelectQueryBlock queryBlock = (SQLSelectQueryBlock) query; addSelectItem(queryBlock, expr, alias, first); } else { throw new IllegalArgumentException("add condition not support " + stmt.getClass().getName()); } return; } throw new IllegalArgumentException("add selectItem not support " + stmt.getClass().getName()); }
public SQLSelect clone() { SQLSelect x = new SQLSelect(); x.setQuery(query.clone()); x.setOrderBy(this.orderBy.clone()); x.setRestriction(restriction.clone()); x.setXmlPath(xmlPath.clone()); x.setRowCount(rowCount.clone()); x.setOffset(offset.clone());
@Override public boolean visit(OracleWithSubqueryEntry x) { x.getSubQuery().accept(this); return false; }
public boolean visit(SQLSelect x) { SQLWithSubqueryClause with = x.getWithSubQuery(); if (with != null) { with.accept(this); } SQLSelectQuery query = x.getQuery(); if (query != null) { query.accept(this); } SQLOrderBy orderBy = x.getOrderBy(); if (orderBy != null) { accept(x.getOrderBy()); } return false; }
protected SQLSelectQueryBlock getQueryBlock() { SQLSelect select = getSQLSelect(); SQLSelectQuery query = select.getQuery(); if (query == null) { query = createSelectQueryBlock(); select.setQuery(query); } if (!(query instanceof SQLSelectQueryBlock)) { throw new IllegalStateException("not support from, class : " + query.getClass().getName()); } SQLSelectQueryBlock queryBlock = (SQLSelectQueryBlock) query; return queryBlock; }
public void output(StringBuffer buf) { String dbType = null; SQLObject parent = this.getParent(); if (parent instanceof SQLStatement) { dbType = ((SQLStatement) parent).getDbType(); } if (dbType == null && parent instanceof OracleSQLObject) { dbType = JdbcConstants.ORACLE; } if (dbType == null && query instanceof SQLSelectQueryBlock) { dbType = ((SQLSelectQueryBlock) query).dbType; } SQLASTOutputVisitor visitor = SQLUtils.createOutputVisitor(buf, dbType); this.accept(visitor); }
private static boolean limitDB2(SQLSelect select, String dbType, int offset, int count, boolean check) { SQLSelectQuery query = select.getQuery(); SQLOrderBy orderBy = select.getOrderBy(); if (orderBy == null && select.getQuery() instanceof SQLSelectQueryBlock) { SQLSelectQueryBlock selectQueryBlcok = (SQLSelectQueryBlock) select.getQuery(); orderBy = selectQueryBlcok.getOrderBy(); selectQueryBlcok.setOrderBy(null); } else { select.setOrderBy(null); countQueryBlock.setFrom(new SQLSubqueryTableSource(select.clone(), "XX")); select.setQuery(countQueryBlock); countQueryBlock.getSelectList().add(new SQLSelectItem(new SQLPropertyExpr(new SQLIdentifierExpr("XX"), "*"))); SQLAggregateExpr aggregateExpr = new SQLAggregateExpr("ROW_NUMBER"); SQLOrderBy orderBy = select.getOrderBy(); aggregateExpr.setOver(new SQLOver(orderBy)); select.setOrderBy(null); countQueryBlock.getSelectList().add(new SQLSelectItem(aggregateExpr, "ROWNUM")); countQueryBlock.setFrom(new SQLSubqueryTableSource(select.clone(), "XX")); select.setQuery(countQueryBlock); return true; offsetQueryBlock.setFrom(new SQLSubqueryTableSource(new SQLSelect(countQueryBlock), "XXX")); offsetQueryBlock.setWhere(pageCondition);
public boolean visit(SQLSelect x) { SQLWithSubqueryClause withSubQuery = x.getWithSubQuery(); if (withSubQuery != null) { withSubQuery.accept(this); println(); } printQuery(x.getQuery()); SQLOrderBy orderBy = x.getOrderBy(); if (orderBy != null) { println(); orderBy.accept(this); } if (x.getHintsSize() > 0) { printAndAccept(x.getHints(), ""); } return false; }
public boolean visit(SQLSelect x) { SQLWithSubqueryClause with = x.getWithSubQuery(); if (with != null) { with.accept(this); println(); } SQLSelectQuery query = x.getQuery(); query.accept(this); if (x.getRestriction() != null) { println(); print("WITH "); x.getRestriction().accept(this); } SQLOrderBy orderBy = x.getOrderBy(); if (orderBy != null) { boolean hasFirst = false; if (query instanceof SQLSelectQueryBlock) { SQLSelectQueryBlock queryBlock = (SQLSelectQueryBlock) query; hasFirst = queryBlock.getFirst() != null; } if (!hasFirst) { println(); orderBy.accept(this); } } return false; }
static void resolve(SchemaResolveVisitor visitor, SQLSelect x) { SchemaResolveVisitor.Context ctx = visitor.createContext(x); SQLWithSubqueryClause with = x.getWithSubQuery(); if (with != null) { visitor.visit(with); SQLSelectQuery query = x.getQuery(); if (query != null) { query.accept(visitor); SQLSelectQueryBlock queryBlock = x.getFirstQueryBlock(); SQLOrderBy orderBy = x.getOrderBy(); if (orderBy != null) { for (SQLSelectOrderByItem orderByItem : orderBy.getItems()) {
private static String count(SQLSelect select, String dbType) { if (select.getOrderBy() != null) { select.setOrderBy(null); SQLSelectQuery query = select.getQuery(); clearOrderBy(query);
SQLSelectQuery query = queryRest(select.getQuery()); if (query instanceof SQLUnionQuery && select.getWithSubQuery() == null) { select.getQuery().setBracket(true); tableSource = new SQLUnionQueryTableSource((SQLUnionQuery) query); } else {
} else if (from instanceof SQLSubqueryTableSource) { SQLSelect subSelect = ((SQLSubqueryTableSource) from).getSelect(); if (subSelect.getQuery() instanceof OracleSelectQueryBlock) { selectQuery = (OracleSelectQueryBlock) subSelect.getQuery(); if (orderBy == null && parent instanceof SQLSelect) { SQLSelect select = (SQLSelect) parent; orderBy = select.getOrderBy();
public SQLSelect select() { SQLSelect select = new SQLSelect(); select.setWithSubQuery(with); select.setQuery(query()); select.setOrderBy(parseOrderBy()); if (select.getOrderBy() == null) { select.setOrderBy(parseOrderBy()); select.setForBrowse(true); } else if (lexer.identifierEquals("XML")) { lexer.nextToken(); || lexer.identifierEquals("XMLSCHEMA") // ) { select.getForXmlOptions().add(lexer.stringVal()); lexer.nextToken(); } else if (lexer.identifierEquals("ELEMENTS")) { if (lexer.identifierEquals("XSINIL")) { lexer.nextToken(); select.getForXmlOptions().add("ELEMENTS XSINIL"); } else { select.getForXmlOptions().add("ELEMENTS"); select.setXmlPath(xmlPath); } else { break;
public SQLSelect select() { SQLSelect select = new SQLSelect(); select.setWithSubQuery(with); select.setQuery(query); queryBlock.setOrderBy(orderBy); } else { select.setOrderBy(orderBy); select.setOrderBy(orderBy); if (queryBlock != null && queryBlock.getOrderBy() == null) { queryBlock.setOrderBy(orderBy); } else if (select.getOrderBy() == null){ select.setOrderBy(orderBy); } else { throw new ParserException("illegal state."); select.setRestriction(new OracleSelectRestriction.ReadOnly()); } else if (lexer.token() == (Token.CHECK)) { lexer.nextToken(); select.setRestriction(checkOption); } else { throw new ParserException("syntax error. " + lexer.info());
public SQLSelect select() { SQLSelect select = new SQLSelect(); if (lexer.token == Token.WITH) { SQLWithSubqueryClause with = this.parseWith(); select.setWithSubQuery(with); } SQLSelectQuery query = query(); select.setQuery(query); SQLOrderBy orderBy = this.parseOrderBy(); if (query instanceof SQLSelectQueryBlock) { SQLSelectQueryBlock queryBlock = (SQLSelectQueryBlock) query; if (queryBlock.getOrderBy() == null) { queryBlock.setOrderBy(orderBy); } else { select.setOrderBy(orderBy); } if (orderBy != null) { parseFetchClause(queryBlock); } } else { select.setOrderBy(orderBy); } while (lexer.token == Token.HINT) { this.exprParser.parseHints(select.getHints()); } return select; }
public boolean visit(SQLSelect x) { SQLSelectQueryBlock queryBlock = x.getQueryBlock(); if (queryBlock == null) { return super.visit(x); if (x.getOrderBy() != null && queryBlock.isForUpdate() && queryBlock.getOrderBy() == null) { queryBlock.setOrderBy(x.getOrderBy()); x.setOrderBy(null); x.setQuery(queryBlock1);
public SQLSubqueryTableSource(SQLSelectQuery query){ this(new SQLSelect(query)); }
public boolean selectItemHasAllColumn(boolean recursive) { for (SQLSelectItem item : this.selectList) { SQLExpr expr = item.getExpr(); boolean allColumn = expr instanceof SQLAllColumnExpr || (expr instanceof SQLPropertyExpr && ((SQLPropertyExpr) expr).getName().equals("*")); if (allColumn) { if (recursive && from instanceof SQLSubqueryTableSource) { SQLSelect subSelect = ((SQLSubqueryTableSource) from).select; SQLSelectQueryBlock queryBlock = subSelect.getQueryBlock(); if (queryBlock != null) { return queryBlock.selectItemHasAllColumn(); } } return true; } } return false; }
@Override public SQLSelectBuilderImpl orderBy(String... columns) { SQLSelect select = this.getSQLSelect(); SQLOrderBy orderBy = select.getOrderBy(); if (orderBy == null) { orderBy = createOrderBy(); select.setOrderBy(orderBy); } for (String column : columns) { SQLSelectOrderByItem orderByItem = SQLUtils.toOrderByItem(column, dbType); orderBy.addItem(orderByItem); } return this; }