Search in sources :

Example 16 with SQLParsingException

use of io.seata.sqlparser.SQLParsingException in project seata by seata.

the class MySQLInsertRecognizer method getInsertRows.

@Override
public List<List<Object>> getInsertRows(Collection<Integer> primaryKeyIndex) {
    List<SQLInsertStatement.ValuesClause> valuesClauses = ast.getValuesList();
    List<List<Object>> rows = new ArrayList<>(valuesClauses.size());
    for (SQLInsertStatement.ValuesClause valuesClause : valuesClauses) {
        List<SQLExpr> exprs = valuesClause.getValues();
        List<Object> row = new ArrayList<>(exprs.size());
        rows.add(row);
        for (int i = 0, len = exprs.size(); i < len; i++) {
            SQLExpr expr = exprs.get(i);
            if (expr instanceof SQLNullExpr) {
                row.add(Null.get());
            } else if (expr instanceof SQLValuableExpr) {
                row.add(((SQLValuableExpr) expr).getValue());
            } else if (expr instanceof SQLVariantRefExpr) {
                row.add(((SQLVariantRefExpr) expr).getName());
            } else if (expr instanceof SQLMethodInvokeExpr) {
                row.add(SqlMethodExpr.get());
            } else {
                if (primaryKeyIndex.contains(i)) {
                    throw new SQLParsingException("Unknown SQLExpr: " + expr.getClass() + " " + expr);
                }
                row.add(NotPlaceholderExpr.get());
            }
        }
    }
    return rows;
}
Also used : SQLMethodInvokeExpr(com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr) ArrayList(java.util.ArrayList) SQLNullExpr(com.alibaba.druid.sql.ast.expr.SQLNullExpr) SQLExpr(com.alibaba.druid.sql.ast.SQLExpr) SQLValuableExpr(com.alibaba.druid.sql.ast.expr.SQLValuableExpr) SQLParsingException(io.seata.sqlparser.SQLParsingException) SQLInsertStatement(com.alibaba.druid.sql.ast.statement.SQLInsertStatement) SQLVariantRefExpr(com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr) ArrayList(java.util.ArrayList) List(java.util.List)

Example 17 with SQLParsingException

use of io.seata.sqlparser.SQLParsingException in project seata by seata.

the class DruidDelegatingSQLRecognizerFactory method setClassLoader.

/**
 * Only for unit test
 *
 * @param classLoader classLoader
 */
void setClassLoader(ClassLoader classLoader) {
    try {
        Class<?> recognizerFactoryImplClass = classLoader.loadClass("io.seata.sqlparser.druid.DruidSQLRecognizerFactoryImpl");
        Constructor<?> implConstructor = recognizerFactoryImplClass.getDeclaredConstructor();
        implConstructor.setAccessible(true);
        try {
            recognizerFactoryImpl = (SQLRecognizerFactory) implConstructor.newInstance();
        } finally {
            implConstructor.setAccessible(false);
        }
    } catch (Exception e) {
        throw new SQLParsingException(e);
    }
}
Also used : SQLParsingException(io.seata.sqlparser.SQLParsingException) SQLParsingException(io.seata.sqlparser.SQLParsingException)

Aggregations

SQLParsingException (io.seata.sqlparser.SQLParsingException)17 SQLExpr (com.alibaba.druid.sql.ast.SQLExpr)12 ArrayList (java.util.ArrayList)12 SQLIdentifierExpr (com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr)6 SQLValuableExpr (com.alibaba.druid.sql.ast.expr.SQLValuableExpr)6 SQLVariantRefExpr (com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr)6 SQLUpdateSetItem (com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem)6 SQLMethodInvokeExpr (com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr)3 SQLNullExpr (com.alibaba.druid.sql.ast.expr.SQLNullExpr)3 SQLPropertyExpr (com.alibaba.druid.sql.ast.expr.SQLPropertyExpr)3 SQLInsertStatement (com.alibaba.druid.sql.ast.statement.SQLInsertStatement)3 SQLSelect (com.alibaba.druid.sql.ast.statement.SQLSelect)3 SQLSelectQueryBlock (com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock)3 List (java.util.List)3 SQLSequenceExpr (com.alibaba.druid.sql.ast.expr.SQLSequenceExpr)2 SqlSequenceExpr (io.seata.sqlparser.struct.SqlSequenceExpr)2 SQLDefaultExpr (com.alibaba.druid.sql.ast.expr.SQLDefaultExpr)1