@Override public Object visit(final ASTIN node, final Object data) { Object value = node.jjtGetChild(0).jjtAccept(this, data); boolean result = false; for (int i = 1; i < node.jjtGetNumChildren(); i++) { final Object inValue = node.jjtGetChild(i).jjtAccept(this, data); if (value != null && inValue instanceof BigDecimal) { value = new BigDecimal(value.toString()); } if ((value == null && inValue == null) || (value != null && value.equals(inValue))) { result = true; break; } } return node.not != result; }
final public void InEval() throws ParseException {/*@bgen(jjtree) IN */ ASTIN jjtn000 = new ASTIN(JJTIN); boolean jjtc000 = true; jjtree.openNodeScope(jjtn000);
final public void InEval() throws ParseException {/*@bgen(jjtree) IN */ ASTIN jjtn000 = new ASTIN(JJTIN); boolean jjtc000 = true; jjtree.openNodeScope(jjtn000);
@Override public Object visit(final ASTIN node, final Object data) { Object value = node.jjtGetChild(0).jjtAccept(this, data); boolean result = false; for (int i = 1; i < node.jjtGetNumChildren(); i++) { final Object inValue = node.jjtGetChild(i).jjtAccept(this, data); if (value != null && inValue instanceof BigDecimal) { value = new BigDecimal(value.toString()); } if ((value == null && inValue == null) || (value != null && value.equals(inValue))) { result = true; break; } } return node.not != result; }
@Override public Object visit(final ASTIN node, final Object data) { final Object lhs = node.jjtGetChild(0).jjtAccept(this, data); final StringBuilder builder = new StringBuilder(); for (int i = 1; i < node.jjtGetNumChildren(); i++) { final Object inValue = node.jjtGetChild(i).jjtAccept(this, data); if (i != 1) { builder.append(","); } if (inValue instanceof String) { builder.append("'").append(inValue).append("'"); } else { builder.append(inValue); } } final PartitionCol partCol = partitionColumns.get(lhs.toString().toLowerCase()); if (partCol != null) { partCol.occurred(); optimized = false; final String operator = node.not ? "not in" : "in"; return String.format("%s %s (%s)", getSQLExpression(partCol), operator, builder.toString()); } else { throw new RuntimeException("Invalid expression key " + lhs); } }
@Override public Object visit(final ASTIN node, final Object data) { final Object lhs = node.jjtGetChild(0).jjtAccept(this, data); final StringBuilder builder = new StringBuilder(); for (int i = 1; i < node.jjtGetNumChildren(); i++) { final Object inValue = node.jjtGetChild(i).jjtAccept(this, data); if (i != 1) { builder.append(","); } if (inValue instanceof String) { builder.append("'").append(inValue).append("'"); } else { builder.append(inValue); } } final PartitionCol partCol = partitionColumns.get(lhs.toString().toLowerCase()); if (partCol != null) { partCol.occurred(); optimized = false; final String operator = node.not ? "not in" : "in"; return String.format("%s %s (%s)", getSQLExpression(partCol), operator, builder.toString()); } else { throw new RuntimeException("Invalid expression key " + lhs); } }