public static Object getScriptValueWithQuote(SQLExpr expr, String quote) throws SqlParseException { if (expr instanceof SQLIdentifierExpr || expr instanceof SQLPropertyExpr || expr instanceof SQLVariantRefExpr) { return "doc['" + expr.toString() + "'].value"; } else if (expr instanceof SQLCharExpr) { return quote + ((SQLCharExpr) expr).getValue() + quote; } else if (expr instanceof SQLIntegerExpr) { return ((SQLIntegerExpr) expr).getValue(); } else if (expr instanceof SQLNumericLiteralExpr) { return ((SQLNumericLiteralExpr) expr).getNumber(); } else if (expr instanceof SQLNullExpr) { return ((SQLNullExpr) expr).toString().toLowerCase(); } else if (expr instanceof SQLBinaryOpExpr) { //zhongshu-comment 该分支由忠树添加 String left = "doc['" + ((SQLBinaryOpExpr) expr).getLeft().toString() + "'].value"; String operator = ((SQLBinaryOpExpr) expr).getOperator().getName(); String right = "doc['" + ((SQLBinaryOpExpr) expr).getRight().toString() + "'].value"; return left + operator + right; } throw new SqlParseException("could not parse sqlBinaryOpExpr need to be identifier/valuable got " + expr.getClass().toString() + " with value:" + expr.toString()); }
@Override public boolean visit(MySqlSelectQueryBlock.Limit x) { print0(ucase ? "LIMIT " : "limit "); int offset = Integer.MIN_VALUE; if (x.getOffset() != null) { if (x.getOffset() instanceof SQLIntegerExpr && !pr.getMergeContext().isOrderBySplitSql()) { SQLIntegerExpr offsetExpr = (SQLIntegerExpr) x.getOffset(); offset = (Integer) offsetExpr.getValue(); offsetExpr.setNumber(0); offsetExpr.accept(this); } else { x.getOffset().accept(this); } print0(", "); } int limit = Integer.MAX_VALUE; if (x.getRowCount() instanceof SQLIntegerExpr && !pr.getMergeContext().isOrderBySplitSql()) { SQLIntegerExpr rowCountExpr = (SQLIntegerExpr) x.getRowCount(); if (offset != Integer.MIN_VALUE) { limit = (Integer) rowCountExpr.getValue(); rowCountExpr.setNumber(offset + limit); } rowCountExpr.accept(this); } else { x.getRowCount().accept(this); } return false; }
public static Object getScriptValueWithQuote(SQLExpr expr, String quote) throws SqlParseException { if (expr instanceof SQLIdentifierExpr || expr instanceof SQLPropertyExpr || expr instanceof SQLVariantRefExpr) { return "doc['" + expr.toString() + "'].value"; } else if (expr instanceof SQLCharExpr) { return quote + ((SQLCharExpr) expr).getValue() + quote; } else if (expr instanceof SQLIntegerExpr) { return ((SQLIntegerExpr) expr).getValue(); } else if (expr instanceof SQLNumericLiteralExpr) { return ((SQLNumericLiteralExpr) expr).getNumber(); } else if (expr instanceof SQLNullExpr) { return ((SQLNullExpr) expr).toString().toLowerCase(); } throw new SqlParseException("could not parse sqlBinaryOpExpr need to be identifier/valuable got" + expr.getClass().toString() + " with value:" + expr.toString()); }