public static Object getScriptValue(SQLExpr expr) throws SqlParseException { if (expr instanceof SQLIdentifierExpr || expr instanceof SQLPropertyExpr || expr instanceof SQLVariantRefExpr) { return "doc['" + expr.toString() + "'].value"; } else if (expr instanceof SQLValuableExpr) { return ((SQLValuableExpr) expr).getValue(); } throw new SqlParseException("could not parse sqlBinaryOpExpr need to be identifier/valuable got" + expr.getClass().toString() + " with value:" + expr.toString()); }
@Override public List<List<Object>> getInsertRows() { 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 (SQLExpr expr : valuesClause.getValues()) { if (expr instanceof SQLValuableExpr) { row.add(((SQLValuableExpr)expr).getValue()); } else { throw new SQLParsingException("Unknown SQLExpr: " + expr.getClass() + " " + expr); } } } return rows; } }
@Override public List<Object> getUpdateValues() { List<SQLUpdateSetItem> updateSetItems = ast.getItems(); List<Object> list = new ArrayList<>(updateSetItems.size()); for (SQLUpdateSetItem updateSetItem : updateSetItems) { SQLExpr expr = updateSetItem.getValue(); if (expr instanceof SQLValuableExpr) { list.add(((SQLValuableExpr) expr).getValue()); } else if (expr instanceof SQLVariantRefExpr) { list.add(new VMarker()); } else { throw new SQLParsingException("Unknown SQLExpr: " + expr.getClass() + " " + expr); } } return list; }
Object setValue; if (item.value instanceof SQLValuableExpr) { setValue = ((SQLValuableExpr) item.value).getValue(); } else { int index = ((SQLVariantRefExpr) item.value).getIndex(); Object filterValue; if (filterValueExpr instanceof SQLValuableExpr) { filterValue = ((SQLValuableExpr) filterValueExpr).getValue(); } else { int index = ((SQLVariantRefExpr) filterValueExpr).getIndex();
public static Object expr2Object(SQLExpr expr, String charWithQuote) { Object value = null; if (expr instanceof SQLNumericLiteralExpr) { value = ((SQLNumericLiteralExpr) expr).getNumber(); } else if (expr instanceof SQLCharExpr) { value = charWithQuote + ((SQLCharExpr) expr).getText() + charWithQuote; } else if (expr instanceof SQLIdentifierExpr) { value = expr.toString(); } else if (expr instanceof SQLPropertyExpr) { value = expr.toString(); } else if (expr instanceof SQLVariantRefExpr) { value = expr.toString(); } else if (expr instanceof SQLAllColumnExpr) { value = "*"; } else if (expr instanceof SQLValuableExpr) { value = ((SQLValuableExpr) expr).getValue(); } else if (expr instanceof SQLBooleanExpr) { value = ((SQLBooleanExpr) expr).getValue(); } else { //throw new SqlParseException("can not support this type " + expr.getClass()); } return value; }
public static Object eval(String dbType, SQLObject sqlObject, List<Object> parameters, boolean throwError) { SQLEvalVisitor visitor = createEvalVisitor(dbType); visitor.setParameters(parameters); Object value; if (sqlObject instanceof SQLValuableExpr) { value = ((SQLValuableExpr) sqlObject).getValue(); } else { sqlObject.accept(visitor); value = getValue(sqlObject); if (value == null) { if (throwError && !sqlObject.getAttributes().containsKey(EVAL_VALUE)) { throw new DruidRuntimeException("eval error : " + SQLUtils.toSQLString(sqlObject, dbType)); } } } return value; }
private static Object parseValue(Object value, List<Object> params) { if (value instanceof SQLValuableExpr) { return ((SQLValuableExpr) value).getValue(); } else if (value instanceof SQLVariantRefExpr) { SQLVariantRefExpr ref = (SQLVariantRefExpr) value; return params.get(ref.getIndex()); } return value; }
private static void parseValueList(Set<Object> evalSet, List<Object> params, List<SQLExpr> columns, List<SQLInsertStatement.ValuesClause> valuesList, String column) { SQLInsertStatement.ValuesClause values = valuesList.get(0); for (int i = 0; i < columns.size(); i++) { SQLName columnObj = (SQLName) columns.get(i); if (evalColumn(columnObj.getSimpleName(), column)) { SQLExpr sqlExpr = values.getValues().get(i); if (sqlExpr instanceof SQLVariantRefExpr) { SQLVariantRefExpr ref = (SQLVariantRefExpr) sqlExpr; evalSet.add(params.get(ref.getIndex())); } else if (sqlExpr instanceof SQLValuableExpr) { evalSet.add(((SQLValuableExpr) sqlExpr).getValue()); } break; } } }
Object setValue; if (item.value instanceof SQLValuableExpr) { setValue = ((SQLValuableExpr) item.value).getValue(); } else { int index = ((SQLVariantRefExpr) item.value).getIndex(); Object filterValue; if (filterValueExpr instanceof SQLValuableExpr) { filterValue = ((SQLValuableExpr) filterValueExpr).getValue(); } else { int index = ((SQLVariantRefExpr) filterValueExpr).getIndex();
public static Object eval(String dbType, SQLObject sqlObject, List<Object> parameters, boolean throwError) { SQLEvalVisitor visitor = createEvalVisitor(dbType); visitor.setParameters(parameters); Object value; if (sqlObject instanceof SQLValuableExpr) { value = ((SQLValuableExpr) sqlObject).getValue(); } else { sqlObject.accept(visitor); value = getValue(sqlObject); if (value == null) { if (throwError && !sqlObject.getAttributes().containsKey(EVAL_VALUE)) { throw new DruidRuntimeException("eval error : " + SQLUtils.toSQLString(sqlObject, dbType)); } } } return value; }
public static Object getScriptValue(SQLExpr expr) throws SqlParseException { if (expr instanceof SQLIdentifierExpr || expr instanceof SQLPropertyExpr || expr instanceof SQLVariantRefExpr) { return "doc['" + expr.toString() + "'].value"; } else if (expr instanceof SQLValuableExpr) { return ((SQLValuableExpr) expr).getValue(); } throw new SqlParseException("could not parse sqlBinaryOpExpr need to be identifier/valuable got" + expr.getClass().toString() + " with value:" + expr.toString()); }
public static Object expr2Object(SQLExpr expr, String charWithQuote) { Object value = null; if (expr instanceof SQLNumericLiteralExpr) { value = ((SQLNumericLiteralExpr) expr).getNumber(); } else if (expr instanceof SQLCharExpr) { value = charWithQuote + ((SQLCharExpr) expr).getText() + charWithQuote; } else if (expr instanceof SQLIdentifierExpr) { value = expr.toString(); } else if (expr instanceof SQLPropertyExpr) { value = expr.toString(); } else if (expr instanceof SQLVariantRefExpr) { value = expr.toString(); } else if (expr instanceof SQLAllColumnExpr) { value = "*"; } else if (expr instanceof SQLValuableExpr) { value = ((SQLValuableExpr) expr).getValue(); } else { //throw new SqlParseException("can not support this type " + expr.getClass()); } return value; }
@Override public List<Object> getUpdateValues() { List<SQLUpdateSetItem> updateSetItems = ast.getItems(); List<Object> list = new ArrayList<>(updateSetItems.size()); for (SQLUpdateSetItem updateSetItem : updateSetItems) { SQLExpr expr = updateSetItem.getValue(); if (expr instanceof SQLValuableExpr) { list.add(((SQLValuableExpr) expr).getValue()); } else if (expr instanceof SQLVariantRefExpr) { list.add(new VMarker()); } else { throw new SQLParsingException("Unknown SQLExpr: " + expr.getClass() + " " + expr); } } return list; }
@Override public List<List<Object>> getInsertRows() { 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 (SQLExpr expr : valuesClause.getValues()) { if (expr instanceof SQLValuableExpr) { row.add(((SQLValuableExpr)expr).getValue()); } else { throw new SQLParsingException("Unknown SQLExpr: " + expr.getClass() + " " + expr); } } } return rows; } }