/** Binary boolean expression in executable SQL statement */ public Integer execBoolBinarySql(HplsqlParser.Bool_expr_binaryContext ctx) { StringBuilder sql = new StringBuilder(); sql.append(evalPop(ctx.expr(0)).toString()); sql.append(" " + exec.getFormattedText(ctx.bool_expr_binary_operator()) + " "); sql.append(evalPop(ctx.expr(1)).toString()); exec.stackPush(sql); return 0; }
/** Comparison operator */ public void operatorCompare( HplsqlParser.Bool_expr_binaryContext ctx, HplsqlParser.Bool_expr_binary_operatorContext op) { Var v1 = evalPop(ctx.expr(0)); Var v2 = evalPop(ctx.expr(1)); int cmp = v1.compareTo(v2); boolean bool = false; if (op.T_GREATER() != null) { if (cmp > 0) { bool = true; } } else if (op.T_GREATEREQUAL() != null) { if (cmp >= 0) { bool = true; } } if (op.T_LESS() != null) { if (cmp < 0) { bool = true; } } else if (op.T_LESSEQUAL() != null) { if (cmp <= 0) { bool = true; } } exec.stackPush(bool); }
/** Equality operator */ public void operatorEqual(HplsqlParser.Bool_expr_binaryContext ctx, boolean equal) { Var v1 = evalPop(ctx.expr(0)); Var v2 = evalPop(ctx.expr(1)); boolean eq = v1.equals(v2); if (!equal) { eq = !eq; } exec.stackPush(eq); }
/** Binary boolean expression */ public Integer execBoolBinary(HplsqlParser.Bool_expr_binaryContext ctx) { HplsqlParser.Bool_expr_binary_operatorContext op = ctx.bool_expr_binary_operator(); if (op.T_EQUAL() != null || op.T_EQUAL2() != null) { operatorEqual(ctx, true); } else if (op.T_NOTEQUAL() != null || op.T_NOTEQUAL2() != null) { operatorEqual(ctx, false); } else if (op.T_GREATER() != null || op.T_LESS() != null || op.T_GREATEREQUAL() != null || op.T_LESSEQUAL() != null) { operatorCompare(ctx, op); } else { exec.stackPush(false); } return 0; }