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;
}
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);
}
}
Aggregations