public boolean containsColumn(long columnNameHash) { for (SQLSelectOrderByItem item : columns) { SQLExpr expr = item.getExpr(); if (expr instanceof SQLIdentifierExpr) { if (((SQLIdentifierExpr) expr).nameHashCode64() == columnNameHash) { return true; } } } return false; }
public PGOrderByStatVisitor(SQLOrderBy orderBy){ this.orderBy = orderBy; for (SQLSelectOrderByItem item : orderBy.getItems()) { item.getExpr().setParent(item); } }
@Override public boolean visit(MySqlPrimaryKey x) { for (SQLSelectOrderByItem item : x.getColumns()) { SQLExpr expr = item.getExpr(); expr.accept(this); } return false; }
public MySqlOrderByStatVisitor(SQLOrderBy orderBy){ this.orderBy = orderBy; for (SQLSelectOrderByItem item : orderBy.getItems()) { item.getExpr().setParent(item); } }
public OrderByStatVisitor(SQLOrderBy orderBy){ this.orderBy = orderBy; for (SQLSelectOrderByItem item : orderBy.getItems()) { item.getExpr().setParent(item); } }
public OracleOrderByStatVisitor(SQLOrderBy orderBy){ this.orderBy = orderBy; for (SQLSelectOrderByItem item : orderBy.getItems()) { item.getExpr().setParent(item); } }
public boolean containsColumn(String column) { for (SQLSelectOrderByItem item : columns) { SQLExpr expr = item.getExpr(); if (expr instanceof SQLIdentifierExpr) { if (SQLUtils.nameEquals(((SQLIdentifierExpr) expr).getName(), column)) { return true; } } } return false; }
public boolean applyDropColumn(SQLName columnName) { for (int i = columns.size() - 1; i >= 0; i--) { SQLExpr expr = columns.get(i).getExpr(); if (expr instanceof SQLName && SQLUtils.nameEquals((SQLName) expr, columnName)) { columns.remove(i); return true; } if (expr instanceof SQLMethodInvokeExpr && SQLUtils.nameEquals(((SQLMethodInvokeExpr) expr).getMethodName(), columnName.getSimpleName())) { columns.remove(i); return true; } } return false; } }
public boolean applyDropColumn(SQLName columnName) { for (int i = columns.size() - 1; i >= 0; i--) { SQLExpr expr = columns.get(i).getExpr(); if (expr instanceof SQLName && SQLUtils.nameEquals((SQLName) expr, columnName)) { columns.remove(i); return true; } if (expr instanceof SQLMethodInvokeExpr && SQLUtils.nameEquals(((SQLMethodInvokeExpr) expr).getMethodName(), columnName.getSimpleName())) { columns.remove(i); return true; } } return false; } }
public boolean applyColumnRename(SQLName columnName, SQLName to) { for (SQLSelectOrderByItem orderByItem : columns) { SQLExpr expr = orderByItem.getExpr(); if (expr instanceof SQLName && SQLUtils.nameEquals((SQLName) expr, columnName)) { orderByItem.setExpr(to.clone()); return true; } } return false; }
public boolean applyColumnRename(SQLName columnName, SQLName to) { for (SQLSelectOrderByItem orderByItem : columns) { SQLExpr expr = orderByItem.getExpr(); if (expr instanceof SQLName && SQLUtils.nameEquals((SQLName) expr, columnName)) { orderByItem.setExpr(to.clone()); return true; } } return false; }
public SQLTableElement findIndex(String columnName) { for (SQLTableElement element : tableElementList) { if (element instanceof SQLUniqueConstraint) { SQLUniqueConstraint unique = (SQLUniqueConstraint) element; for (SQLSelectOrderByItem item : unique.getColumns()) { SQLExpr columnExpr = item.getExpr(); if (columnExpr instanceof SQLIdentifierExpr) { String keyColumName = ((SQLIdentifierExpr) columnExpr).getName(); keyColumName = SQLUtils.normalize(keyColumName); if (keyColumName.equalsIgnoreCase(columnName)) { return element; } } } } else if (element instanceof MySqlTableIndex) { List<SQLSelectOrderByItem> indexColumns = ((MySqlTableIndex) element).getColumns(); for (SQLSelectOrderByItem orderByItem : indexColumns) { SQLExpr columnExpr = orderByItem.getExpr(); if (columnExpr instanceof SQLIdentifierExpr) { String keyColumName = ((SQLIdentifierExpr) columnExpr).getName(); keyColumName = SQLUtils.normalize(keyColumName); if (keyColumName.equalsIgnoreCase(columnName)) { return element; } } } } } return null; }
/** * only for show columns */ public boolean isUNI(String columnName) { for (SQLTableElement element : this.tableElementList) { if (element instanceof MySqlUnique) { MySqlUnique unique = (MySqlUnique) element; if (unique.getColumns().size() == 0) { continue; } SQLExpr column = unique.getColumns().get(0).getExpr(); if (column instanceof SQLIdentifierExpr && SQLUtils.nameEquals(columnName, ((SQLIdentifierExpr) column).getName())) { return unique.columns.size() == 1; } else if (column instanceof SQLMethodInvokeExpr && SQLUtils.nameEquals(((SQLMethodInvokeExpr) column).getMethodName(), columnName)) { return true; } } } return false; }
/** * only for show columns */ public boolean isMUL(String columnName) { for (SQLTableElement element : this.tableElementList) { if (element instanceof MySqlUnique) { MySqlUnique unique = (MySqlUnique) element; SQLExpr column = unique.getColumns().get(0).getExpr(); if (column instanceof SQLIdentifierExpr && SQLUtils.nameEquals(columnName, ((SQLIdentifierExpr) column).getName())) { return unique.columns.size() > 1; } else if (column instanceof SQLMethodInvokeExpr && SQLUtils.nameEquals(((SQLMethodInvokeExpr) column).getMethodName(), columnName)) { return true; } } else if (element instanceof MySqlKey) { MySqlKey unique = (MySqlKey) element; SQLExpr column = unique.getColumns().get(0).getExpr(); if (column instanceof SQLIdentifierExpr && SQLUtils.nameEquals(columnName, ((SQLIdentifierExpr) column).getName())) { return true; } else if (column instanceof SQLMethodInvokeExpr && SQLUtils.nameEquals(((SQLMethodInvokeExpr) column).getMethodName(), columnName)) { return true; } } } return false; }
public void simplify() { super.simplify(); for (SQLSelectOrderByItem item : columns) { SQLExpr column = item.getExpr(); if (column instanceof SQLIdentifierExpr) { SQLIdentifierExpr identExpr = (SQLIdentifierExpr) column; String columnName = identExpr.getName(); String normalized = SQLUtils.normalize(columnName, dbType); if (normalized != columnName) { item.setExpr(new SQLIdentifierExpr(columnName)); } } } }
public boolean visit(SQLOrderBy x) { final SQLASTVisitor orderByVisitor = createOrderByVisitor(x); SQLSelectQueryBlock query = null; if (x.getParent() instanceof SQLSelectQueryBlock) { query = (SQLSelectQueryBlock) x.getParent(); } if (query != null) { for (SQLSelectOrderByItem item : x.getItems()) { SQLExpr expr = item.getExpr(); if (expr instanceof SQLIntegerExpr) { int intValue = ((SQLIntegerExpr) expr).getNumber().intValue() - 1; if (intValue < query.getSelectList().size()) { SQLSelectItem selectItem = query.getSelectList().get(intValue); selectItem.getExpr().accept(orderByVisitor); } } else if (expr instanceof MySqlExpr || expr instanceof OracleExpr) { continue; } } } x.accept(orderByVisitor); for (SQLSelectOrderByItem orderByItem : x.getItems()) { statExpr( orderByItem.getExpr()); } return false; }
public boolean visit(SQLSelectOrderByItem x) { x.getExpr().accept(this); if (x.getType() != null) { print(' '); String typeName = x.getType().name(); print0(ucase ? typeName.toUpperCase() : typeName.toLowerCase()); } if (x.getNullsOrderType() != null) { print(' '); print0(x.getNullsOrderType().toFormalString()); } return false; }
@Override public boolean visit(SQLCreateIndexStatement x) { setMode(x, Mode.CreateIndex); SQLName name = (SQLName) ((SQLExprTableSource) x.getTable()).getExpr(); String table = name.toString(); TableStat stat = getTableStat(name); stat.incrementCreateIndexCount(); for (SQLSelectOrderByItem item : x.getItems()) { SQLExpr expr = item.getExpr(); if (expr instanceof SQLIdentifierExpr) { SQLIdentifierExpr identExpr = (SQLIdentifierExpr) expr; String columnName = identExpr.getName(); addColumn(table, columnName); } } return false; }
private void addOrderByToSelect(Select select, List<SQLSelectOrderByItem> items, String alias) throws SqlParseException { for (SQLSelectOrderByItem sqlSelectOrderByItem : items) { SQLExpr expr = sqlSelectOrderByItem.getExpr(); Field f = FieldMaker.makeField(expr, null, null); String orderByName = f.toString(); if (sqlSelectOrderByItem.getType() == null) { sqlSelectOrderByItem.setType(SQLOrderingSpecification.ASC); //zhongshu-comment 默认是升序排序 } String type = sqlSelectOrderByItem.getType().toString(); orderByName = orderByName.replace("`", ""); if (alias != null) orderByName = orderByName.replaceFirst(alias + "\\.", ""); ScriptSortBuilder.ScriptSortType scriptSortType = judgeIsStringSort(expr); select.addOrderBy(f.getNestedPath(), orderByName, type, scriptSortType); } }
public boolean visit(SQLSelectOrderByItem x) { SQLExpr expr = x.getExpr(); if (expr instanceof SQLIntegerExpr) { print(((SQLIntegerExpr) expr).getNumber().longValue()); } else { printExpr(expr); } SQLOrderingSpecification type = x.getType(); if (type != null) { print(' '); print0(ucase ? type.name : type.name_lcase); } String collate = x.getCollate(); if (collate != null) { print0(ucase ? " COLLATE " : " collate "); print0(collate); } SQLSelectOrderByItem.NullsOrderType nullsOrderType = x.getNullsOrderType(); if (nullsOrderType != null) { print(' '); print0(nullsOrderType.toFormalString()); } return false; }