Search in sources :

Example 96 with SQLIdentifierExpr

use of com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr in project druid by alibaba.

the class MySqlSchemaStatVisitor method visit.

@Override
public boolean visit(MySqlReplaceStatement x) {
    setMode(x, Mode.Replace);
    setAliasMap();
    SQLName tableName = x.getTableName();
    String ident = null;
    if (tableName instanceof SQLIdentifierExpr) {
        ident = ((SQLIdentifierExpr) tableName).getName();
    } else if (tableName instanceof SQLPropertyExpr) {
        SQLPropertyExpr propertyExpr = (SQLPropertyExpr) tableName;
        if (propertyExpr.getOwner() instanceof SQLIdentifierExpr) {
            ident = propertyExpr.toString();
        }
    }
    if (ident != null) {
        setCurrentTable(x, ident);
        TableStat stat = getTableStat(ident);
        stat.incrementInsertCount();
        Map<String, String> aliasMap = getAliasMap();
        putAliasMap(aliasMap, ident, ident);
    }
    accept(x.getColumns());
    accept(x.getValuesList());
    accept(x.getQuery());
    return false;
}
Also used : SQLName(com.alibaba.druid.sql.ast.SQLName) SQLIdentifierExpr(com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr) TableStat(com.alibaba.druid.stat.TableStat) SQLPropertyExpr(com.alibaba.druid.sql.ast.expr.SQLPropertyExpr)

Example 97 with SQLIdentifierExpr

use of com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr in project druid by alibaba.

the class SchemaStatVisitor method visit.

@Override
public boolean visit(SQLArrayExpr x) {
    accept(x.getValues());
    SQLExpr exp = x.getExpr();
    if (exp instanceof SQLIdentifierExpr) {
        if (((SQLIdentifierExpr) exp).getName().equals("ARRAY")) {
            return false;
        }
    }
    exp.accept(this);
    return false;
}
Also used : SQLIdentifierExpr(com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr) SQLExpr(com.alibaba.druid.sql.ast.SQLExpr)

Example 98 with SQLIdentifierExpr

use of com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr in project druid by alibaba.

the class WallVisitorUtils method queryBlockFromIsNull.

public static boolean queryBlockFromIsNull(WallVisitor visitor, SQLSelectQuery query, boolean checkSelectConst) {
    if (query instanceof SQLSelectQueryBlock) {
        SQLSelectQueryBlock queryBlock = (SQLSelectQueryBlock) query;
        SQLTableSource from = queryBlock.getFrom();
        if (queryBlock.getSelectList().size() < 1) {
            return false;
        }
        if (from == null) {
            boolean itemIsConst = true;
            boolean itemHasAlias = false;
            for (SQLSelectItem item : queryBlock.getSelectList()) {
                if (item.getExpr() instanceof SQLIdentifierExpr || item.getExpr() instanceof SQLPropertyExpr) {
                    itemIsConst = false;
                    break;
                }
                if (item.getAlias() != null) {
                    itemHasAlias = true;
                    break;
                }
            }
            if (itemIsConst && !itemHasAlias) {
                return true;
            } else {
                return false;
            }
        }
        if (from instanceof SQLExprTableSource) {
            SQLExpr fromExpr = ((SQLExprTableSource) from).getExpr();
            if (fromExpr instanceof SQLName) {
                String name = fromExpr.toString();
                name = form(name);
                if (name.equalsIgnoreCase("DUAL")) {
                    return true;
                }
            }
        }
        if (queryBlock.getSelectList().size() == 1 && queryBlock.getSelectList().get(0).getExpr() instanceof SQLAllColumnExpr) {
            if (from instanceof SQLSubqueryTableSource) {
                SQLSelectQuery subQuery = ((SQLSubqueryTableSource) from).getSelect().getQuery();
                if (queryBlockFromIsNull(visitor, subQuery)) {
                    return true;
                }
            }
        }
        if (checkSelectConst) {
            SQLExpr where = queryBlock.getWhere();
            if (where != null) {
                Object whereValue = getValue(visitor, where);
                if (Boolean.TRUE == whereValue) {
                    boolean allIsConst = true;
                    for (SQLSelectItem item : queryBlock.getSelectList()) {
                        if (getValue(visitor, item.getExpr()) == null) {
                            allIsConst = false;
                            break;
                        }
                    }
                    if (allIsConst) {
                        return true;
                    }
                }
            }
        }
    }
    return false;
}
Also used : SQLName(com.alibaba.druid.sql.ast.SQLName) SQLIdentifierExpr(com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr) SQLPropertyExpr(com.alibaba.druid.sql.ast.expr.SQLPropertyExpr) SQLExpr(com.alibaba.druid.sql.ast.SQLExpr) SQLAllColumnExpr(com.alibaba.druid.sql.ast.expr.SQLAllColumnExpr) SQLObject(com.alibaba.druid.sql.ast.SQLObject)

Example 99 with SQLIdentifierExpr

use of com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr in project druid by alibaba.

the class WallVisitorUtils method createTenantCondition.

@Deprecated
private static SQLBinaryOpExpr createTenantCondition(WallVisitor visitor, String alias, StatementType statementType, String tableName) {
    SQLExpr left, right;
    if (alias != null) {
        left = new SQLPropertyExpr(new SQLIdentifierExpr(alias), visitor.getConfig().getTenantColumn());
    } else {
        left = new SQLIdentifierExpr(visitor.getConfig().getTenantColumn());
    }
    right = generateTenantValue(visitor, alias, statementType, tableName);
    SQLBinaryOpExpr tenantCondition = new SQLBinaryOpExpr(left, SQLBinaryOperator.Equality, right);
    return tenantCondition;
}
Also used : SQLIdentifierExpr(com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr) SQLBinaryOpExpr(com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr) SQLPropertyExpr(com.alibaba.druid.sql.ast.expr.SQLPropertyExpr) SQLExpr(com.alibaba.druid.sql.ast.SQLExpr)

Example 100 with SQLIdentifierExpr

use of com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr in project Mycat_plus by coderczp.

the class ParseUtil method changeInsertAddSlot.

public static String changeInsertAddSlot(String sql, int slotValue) {
    SQLStatementParser parser = new MycatStatementParser(sql);
    MySqlInsertStatement insert = (MySqlInsertStatement) parser.parseStatement();
    insert.getColumns().add(new SQLIdentifierExpr("_slot"));
    insert.getValues().getValues().add(new SQLIntegerExpr(slotValue));
    return insert.toString();
}
Also used : SQLStatementParser(com.alibaba.druid.sql.parser.SQLStatementParser) MycatStatementParser(io.mycat.route.parser.druid.MycatStatementParser) SQLIdentifierExpr(com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr) SQLIntegerExpr(com.alibaba.druid.sql.ast.expr.SQLIntegerExpr) MySqlInsertStatement(com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlInsertStatement)

Aggregations

SQLIdentifierExpr (com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr)152 SQLExpr (com.alibaba.druid.sql.ast.SQLExpr)68 SQLPropertyExpr (com.alibaba.druid.sql.ast.expr.SQLPropertyExpr)45 SQLBinaryOpExpr (com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr)19 SQLStatement (com.alibaba.druid.sql.ast.SQLStatement)18 SQLExprTableSource (com.alibaba.druid.sql.ast.statement.SQLExprTableSource)17 SQLCharExpr (com.alibaba.druid.sql.ast.expr.SQLCharExpr)16 SQLIntegerExpr (com.alibaba.druid.sql.ast.expr.SQLIntegerExpr)16 SQLSelectItem (com.alibaba.druid.sql.ast.statement.SQLSelectItem)15 SQLSelectQueryBlock (com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock)15 SQLAggregateExpr (com.alibaba.druid.sql.ast.expr.SQLAggregateExpr)14 MySqlStatementParser (com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser)13 SQLVariantRefExpr (com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr)11 SQLAssignItem (com.alibaba.druid.sql.ast.statement.SQLAssignItem)11 SQLMethodInvokeExpr (com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr)10 SQLColumnDefinition (com.alibaba.druid.sql.ast.statement.SQLColumnDefinition)10 MySqlSelectQueryBlock (com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock)10 SQLAllColumnExpr (com.alibaba.druid.sql.ast.expr.SQLAllColumnExpr)9 ArrayList (java.util.ArrayList)9 SQLName (com.alibaba.druid.sql.ast.SQLName)8