@Override public Expression wrap(Expression lhs, Expression rhs, boolean rowKeyOrderOptimizable) throws SQLException { PDataType lhsType = lhs.getDataType(); Expression e = CoerceExpression.create(rhs, lhsType, lhs.getSortOrder(), lhs.getMaxLength(), rowKeyOrderOptimizable); return e; }
public static Expression create(Expression expression, PDataType toType) throws SQLException { if (toType == expression.getDataType()) { return expression; } return new CoerceExpression(expression, toType); }
@Override public boolean requiresFinalEvaluation() { return super.requiresFinalEvaluation() || this.hasElse(); } }
public static boolean isTrue(Expression child) { if (child!=null) { return child == BOOLEAN_EXPRESSIONS[Determinism.values().length+child.getDeterminism().ordinal()]; } return false; }
public static boolean isFalse(Expression child) { if (child!=null) { return child == BOOLEAN_EXPRESSIONS[child.getDeterminism().ordinal()]; } return false; }
@Override public void readFields(DataInput input) throws IOException { super.readFields(input); init(); }
@Override public boolean requiresFinalEvaluation() { return super.requiresFinalEvaluation() || !this.isNegate(); } }
private void testSetBit(byte[] bytes, int offset, int newValue, PBinaryBase dataType, byte[] expected) throws SQLException { LiteralExpression dataExpr, offsetExpr, newValueExpr; dataExpr = LiteralExpression.newConstant(bytes, dataType, SortOrder.ASC); offsetExpr = LiteralExpression.newConstant(offset, PInteger.INSTANCE, SortOrder.ASC); newValueExpr = LiteralExpression.newConstant(newValue, PInteger.INSTANCE, SortOrder.ASC); testSetBitExpression(dataExpr, offsetExpr, newValueExpr, expected); dataExpr = LiteralExpression.newConstant(bytes, dataType, SortOrder.DESC); offsetExpr = LiteralExpression.newConstant(offset, PInteger.INSTANCE, SortOrder.DESC); newValueExpr = LiteralExpression.newConstant(newValue, PInteger.INSTANCE, SortOrder.DESC); testSetBitExpression(dataExpr, offsetExpr, newValueExpr, expected); }
private static void test(String string, String delimiter, String nullString, PhoenixArray expected, SortOrder stringSortOrder, SortOrder delimiterSortOrder, SortOrder nullStringSortOrder, PDataType stringType, PDataType delimiterType, PDataType nullStringType) throws SQLException { LiteralExpression arrayLiteral, delimiterLiteral, nullStringLiteral; arrayLiteral = LiteralExpression.newConstant(string, stringType, null, null, stringSortOrder, Determinism.ALWAYS); delimiterLiteral = LiteralExpression.newConstant(delimiter, delimiterType, null, null, delimiterSortOrder, Determinism.ALWAYS); nullStringLiteral = LiteralExpression.newConstant(nullString, nullStringType, null, null, nullStringSortOrder, Determinism.ALWAYS); testExpression(arrayLiteral, delimiterLiteral, nullStringLiteral, expected); }
private static void test(Number value, PNumericType dataType, double expected) throws SQLException { LiteralExpression literal; literal = LiteralExpression.newConstant(value, dataType, SortOrder.ASC); testExpression(literal, expected); literal = LiteralExpression.newConstant(value, dataType, SortOrder.DESC); testExpression(literal, expected); }
private static void test(PhoenixArray array, Object element, PDataType arrayDataType, Integer arrMaxLen, Integer arrScale, PDataType elementDataType, Integer elemMaxLen, Integer elemScale, PhoenixArray expected, SortOrder arraySortOrder, SortOrder elementSortOrder) throws SQLException { LiteralExpression arrayLiteral, elementLiteral; arrayLiteral = LiteralExpression.newConstant(array, arrayDataType, arrMaxLen, arrScale, arraySortOrder, Determinism.ALWAYS); elementLiteral = LiteralExpression.newConstant(element, elementDataType, elemMaxLen, elemScale, elementSortOrder, Determinism.ALWAYS); testExpression(arrayLiteral, elementLiteral, expected); }
private static void test(PhoenixArray array1, PhoenixArray array2, PDataType array1DataType, Integer arr1MaxLen, Integer arr1Scale, PDataType array2DataType, Integer arr2MaxLen, Integer arr2Scale, PhoenixArray expected, SortOrder array1SortOrder, SortOrder array2SortOrder) throws SQLException { LiteralExpression array1Literal, array2Literal; array1Literal = LiteralExpression.newConstant(array1, array1DataType, arr1MaxLen, arr1Scale, array1SortOrder, Determinism.ALWAYS); array2Literal = LiteralExpression.newConstant(array2, array2DataType, arr2MaxLen, arr2Scale, array2SortOrder, Determinism.ALWAYS); testExpression(array1Literal, array2Literal, expected); }
private void testOctetLength(byte[] bytes, PBinaryBase dataType, int expected) throws SQLException { LiteralExpression dataExpr; dataExpr = LiteralExpression.newConstant(bytes, dataType, SortOrder.ASC); testOctetLengthExpression(dataExpr, expected); dataExpr = LiteralExpression.newConstant(bytes, dataType, SortOrder.DESC); testOctetLengthExpression(dataExpr, expected); }
private void testSetByte(byte[] bytes, int offset, int newValue, PBinaryBase dataType, byte[] expected) throws SQLException { LiteralExpression dataExpr, offsetExpr, newValueExpr; dataExpr = LiteralExpression.newConstant(bytes, dataType, SortOrder.ASC); offsetExpr = LiteralExpression.newConstant(offset, PInteger.INSTANCE, SortOrder.ASC); newValueExpr = LiteralExpression.newConstant(newValue, PInteger.INSTANCE, SortOrder.ASC); testSetByteExpression(dataExpr, offsetExpr, newValueExpr, expected); dataExpr = LiteralExpression.newConstant(bytes, dataType, SortOrder.DESC); offsetExpr = LiteralExpression.newConstant(offset, PInteger.INSTANCE, SortOrder.DESC); newValueExpr = LiteralExpression.newConstant(newValue, PInteger.INSTANCE, SortOrder.DESC); testSetByteExpression(dataExpr, offsetExpr, newValueExpr, expected); }
private void testGetBit(byte[] bytes, int offset, PBinaryBase dataType, int expected) throws SQLException { LiteralExpression dataExpr, offsetExpr; dataExpr = LiteralExpression.newConstant(bytes, dataType, SortOrder.ASC); offsetExpr = LiteralExpression.newConstant(offset, PInteger.INSTANCE, SortOrder.ASC); testGetBitExpression(dataExpr, offsetExpr, expected); dataExpr = LiteralExpression.newConstant(bytes, dataType, SortOrder.DESC); offsetExpr = LiteralExpression.newConstant(offset, PInteger.INSTANCE, SortOrder.DESC); testGetBitExpression(dataExpr, offsetExpr, expected); }
private static void test(PhoenixArray array, Object element, PDataType arrayDataType, Integer arrMaxLen, Integer arrScale, PDataType elementDataType, Integer elemMaxLen, Integer elemScale, PhoenixArray expected, SortOrder arraySortOrder, SortOrder elementSortOrder) throws SQLException { LiteralExpression arrayLiteral, elementLiteral; arrayLiteral = LiteralExpression.newConstant(array, arrayDataType, arrMaxLen, arrScale, arraySortOrder, Determinism.ALWAYS); elementLiteral = LiteralExpression.newConstant(element, elementDataType, elemMaxLen, elemScale, elementSortOrder, Determinism.ALWAYS); testExpression(arrayLiteral, elementLiteral, expected); }
private static void test(PhoenixArray array, Object element, PDataType arrayDataType, Integer arrMaxLen, Integer arrScale, PDataType elementDataType, Integer elemMaxLen, Integer elemScale, PhoenixArray expected, SortOrder arraySortOrder, SortOrder elementSortOrder) throws SQLException { LiteralExpression arrayLiteral, elementLiteral; arrayLiteral = LiteralExpression.newConstant(array, arrayDataType, arrMaxLen, arrScale, arraySortOrder, Determinism.ALWAYS); elementLiteral = LiteralExpression.newConstant(element, elementDataType, elemMaxLen, elemScale, elementSortOrder, Determinism.ALWAYS); testExpression(arrayLiteral, elementLiteral, expected); }
private void testGetByte(byte[] bytes, int offset, PBinaryBase dataType, int expected) throws SQLException { LiteralExpression dataExpr, offsetExpr; dataExpr = LiteralExpression.newConstant(bytes, dataType, SortOrder.ASC); offsetExpr = LiteralExpression.newConstant(offset, PInteger.INSTANCE, SortOrder.ASC); testGetByteExpression(dataExpr, offsetExpr, expected); dataExpr = LiteralExpression.newConstant(bytes, dataType, SortOrder.DESC); offsetExpr = LiteralExpression.newConstant(offset, PInteger.INSTANCE, SortOrder.DESC); testGetByteExpression(dataExpr, offsetExpr, expected); }
private static void test(PhoenixArray array, PDataType arrayDataType, Integer arrMaxLen, Integer arrScale, String delimiter, String nullString, String expected, SortOrder arraySortOrder, SortOrder delimiterSortOrder, SortOrder nullStringSortOrder) throws SQLException { LiteralExpression arrayLiteral, delimiterLiteral, nullStringLiteral; arrayLiteral = LiteralExpression.newConstant(array, arrayDataType, arrMaxLen, arrScale, arraySortOrder, Determinism.ALWAYS); delimiterLiteral = LiteralExpression.newConstant(delimiter, PVarchar.INSTANCE, null, null, delimiterSortOrder, Determinism.ALWAYS); nullStringLiteral = LiteralExpression.newConstant(nullString, PVarchar.INSTANCE, null, null, nullStringSortOrder, Determinism.ALWAYS); testExpression(arrayLiteral, delimiterLiteral, nullStringLiteral, expected); }
private static void test(Object element, Object length, PDataType elementDataType, Integer elementMaxLen, Integer elementScale, PDataType lengthDataType, Integer lengthMaxlen, Integer lengthScale, PhoenixArray expected, SortOrder elementSortOrder, SortOrder lengthSortOrder) throws SQLException { LiteralExpression elementLiteral, lengthLiteral; elementLiteral = LiteralExpression.newConstant(element, elementDataType, elementMaxLen, elementScale, elementSortOrder, Determinism.ALWAYS); lengthLiteral = LiteralExpression.newConstant(length, lengthDataType, lengthMaxlen, lengthScale, lengthSortOrder, Determinism.ALWAYS); testExpression(elementLiteral, lengthLiteral, expected); }