(op string, literal *dag.PrimitiveExpr, min, max *dag.ThisExpr)
| 87 | } |
| 88 | |
| 89 | func rangePrunerPred(op string, literal *dag.PrimitiveExpr, min, max *dag.ThisExpr) *dag.BinaryExpr { |
| 90 | switch op { |
| 91 | case "<": |
| 92 | // key < CONST |
| 93 | return compare("<=", literal, min) |
| 94 | case "<=": |
| 95 | // key <= CONST |
| 96 | return compare("<", literal, min) |
| 97 | case ">": |
| 98 | // key > CONST |
| 99 | return compare(">=", literal, max) |
| 100 | case ">=": |
| 101 | // key >= CONST |
| 102 | return compare(">", literal, max) |
| 103 | case "==": |
| 104 | // key == CONST |
| 105 | return dag.NewBinaryExpr("or", |
| 106 | compare(">", min, literal), |
| 107 | compare("<", max, literal)) |
| 108 | } |
| 109 | panic("rangePrunerPred unknown op " + op) |
| 110 | } |
| 111 | |
| 112 | // compare returns a DAG expression for a standard comparison operator but |
| 113 | // uses a call to the SuperSQL function "compare()" as standard comparisons |
no test coverage detected