/
NikolayIvkin
/
sqlancer2
Обзор
Документация
Войти
/
NikolayIvkin
/
sqlancer2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/sqlancer/oceanbase/ast/OceanBaseUnaryPostfixOperation.java
58 строк
2 KB
bashaojing
support oceanbase
15 дек 2021, 06:43
15 дек 2021, 06:43
3f29b04
Код
Авторство
О чём код?
package sqlancer.oceanbase.ast; public class OceanBaseUnaryPostfixOperation implements OceanBaseExpression { private final OceanBaseExpression expression; private final UnaryPostfixOperator operator; private boolean negate; public enum UnaryPostfixOperator { IS_NULL, IS_TRUE, IS_FALSE; } public OceanBaseUnaryPostfixOperation(OceanBaseExpression expr, UnaryPostfixOperator op, boolean negate) { this.expression = expr; this.operator = op; this.setNegate(negate); } public OceanBaseExpression getExpression() { return expression; } public UnaryPostfixOperator getOperator() { return operator; } public boolean isNegated() { return negate; } public void setNegate(boolean negate) { this.negate = negate; } @Override public OceanBaseConstant getExpectedValue() { boolean val; OceanBaseConstant expectedValue = expression.getExpectedValue(); switch (operator) { case IS_NULL: val = expectedValue.isNull(); break; case IS_FALSE: val = !expectedValue.isNull() && !expectedValue.asBooleanNotNull(); break; case IS_TRUE: val = !expectedValue.isNull() && expectedValue.asBooleanNotNull(); break; default: throw new AssertionError(operator); } if (negate) { val = !val; } return OceanBaseConstant.createIntConstant(val ? 1 : 0); } }