builder.addPredicate(KuduPredicate.newIsNotNullPredicate(columnSchema));
@Override public void exitIS_NOT_NULL_FILTER_EXP(KuduSQLExpressionParser.IS_NOT_NULL_FILTER_EXPContext ctx) { super.exitIS_NOT_NULL_FILTER_EXP(ctx); String columnName = extractColumnNameFromContext(ctx.idorcolumnname()); if (columnSchemaLookups.containsKey(columnName)) { kuduPredicateList.add(KuduPredicate.newIsNotNullPredicate(columnSchemaLookups.get(columnName))); } else { LOG.error(columnName + " is not a valid column name for this kudu table"); isSuccessfullyParsed = false; } }
/** * Builds an IN list predicate from a collection of raw values. The collection * must be sorted and deduplicated. * * @param column the column * @param values the IN list values * @return an IN list predicate */ private static KuduPredicate buildInList(ColumnSchema column, Collection<byte[]> values) { // IN (true, false) predicates can be simplified to IS NOT NULL. if (column.getType().getDataType(column.getTypeAttributes()) == Common.DataType.BOOL && values.size() > 1) { return newIsNotNullPredicate(column); } switch (values.size()) { case 0: return KuduPredicate.none(column); case 1: return new KuduPredicate(PredicateType.EQUALITY, column, values.iterator().next(), null); default: return new KuduPredicate(column, values.toArray(new byte[values.size()][])); } }
public KuduPredicate toPredicate(ColumnSchema column) { KuduPredicate predicate; switch (this.type) { case IS_IN: predicate = KuduPredicate.newInListPredicate(column, (List) this.value); break; case IS_NULL: predicate = KuduPredicate.newIsNullPredicate(column); break; case IS_NOT_NULL: predicate = KuduPredicate.newIsNotNullPredicate(column); break; default: predicate = predicateComparator(column); break; } return predicate; }
case GREATER_EQUAL: if (value.length == 0) { return newIsNotNullPredicate(column);
case GREATER_EQUAL: if (bytes.length == 0) { return newIsNotNullPredicate(column);
if (op == ComparisonOp.LESS_EQUAL) { if (value == Double.POSITIVE_INFINITY) { return newIsNotNullPredicate(column); case GREATER_EQUAL: if (value == Double.NEGATIVE_INFINITY) { return newIsNotNullPredicate(column); } else if (value == Double.POSITIVE_INFINITY) { return new KuduPredicate(PredicateType.EQUALITY, column, bytes, null);
if (op == ComparisonOp.LESS_EQUAL) { if (value == Float.POSITIVE_INFINITY) { return newIsNotNullPredicate(column); case GREATER_EQUAL: if (value == Float.NEGATIVE_INFINITY) { return newIsNotNullPredicate(column); } else if (value == Float.POSITIVE_INFINITY) { return new KuduPredicate(PredicateType.EQUALITY, column, bytes, null);
return new KuduPredicate(PredicateType.EQUALITY, column, Bytes.fromBoolean(true), null); } else { return newIsNotNullPredicate(column); return newIsNotNullPredicate(column); } else { return new KuduPredicate(PredicateType.EQUALITY, column, Bytes.fromBoolean(false), null);
return newIsNotNullPredicate(column); case IS_NULL: return newIsNullPredicate(column);
@Test public void testGreaterEqual() { Assert.assertEquals(KuduPredicate.newComparisonPredicate(byteCol, GREATER_EQUAL, Byte.MIN_VALUE), KuduPredicate.newIsNotNullPredicate(byteCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(shortCol, GREATER_EQUAL, Short.MIN_VALUE), KuduPredicate.newIsNotNullPredicate(shortCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(intCol, GREATER_EQUAL, Integer.MIN_VALUE), KuduPredicate.newIsNotNullPredicate(intCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(longCol, GREATER_EQUAL, Long.MIN_VALUE), KuduPredicate.newIsNotNullPredicate(longCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(floatCol, GREATER_EQUAL, Float.NEGATIVE_INFINITY), KuduPredicate.newIsNotNullPredicate(floatCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(doubleCol, GREATER_EQUAL, Double.NEGATIVE_INFINITY), KuduPredicate.newIsNotNullPredicate(doubleCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(decimal32Col, GREATER_EQUAL, DecimalUtil.minValue(DecimalUtil.MAX_DECIMAL32_PRECISION, 2)), KuduPredicate.newIsNotNullPredicate(decimal32Col)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(decimal64Col, GREATER_EQUAL, DecimalUtil.minValue(DecimalUtil.MAX_DECIMAL64_PRECISION, 2)), KuduPredicate.newIsNotNullPredicate(decimal64Col)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(decimal128Col, GREATER_EQUAL, DecimalUtil.minValue(DecimalUtil.MAX_DECIMAL128_PRECISION, 2)), KuduPredicate.newIsNotNullPredicate(decimal128Col)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(stringCol, GREATER_EQUAL, ""), KuduPredicate.newIsNotNullPredicate(stringCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(binaryCol, GREATER_EQUAL, new byte[] {}), KuduPredicate.newIsNotNullPredicate(binaryCol));
KuduPredicate.newComparisonPredicate(binaryCol, LESS, new byte[] { (byte) 10, (byte) 0 })); Assert.assertEquals(KuduPredicate.newComparisonPredicate(byteCol, LESS_EQUAL, Byte.MAX_VALUE), KuduPredicate.newIsNotNullPredicate(byteCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(shortCol, LESS_EQUAL, Short.MAX_VALUE), KuduPredicate.newIsNotNullPredicate(shortCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(intCol, LESS_EQUAL, Integer.MAX_VALUE), KuduPredicate.newIsNotNullPredicate(intCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(longCol, LESS_EQUAL, Long.MAX_VALUE), KuduPredicate.newIsNotNullPredicate(longCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(floatCol, LESS_EQUAL, Float.MAX_VALUE), KuduPredicate.newComparisonPredicate(floatCol, LESS, Float.POSITIVE_INFINITY)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(floatCol, LESS_EQUAL, Float.POSITIVE_INFINITY), KuduPredicate.newIsNotNullPredicate(floatCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(doubleCol, LESS_EQUAL, Double.MAX_VALUE), KuduPredicate.newComparisonPredicate(doubleCol, LESS, Double.POSITIVE_INFINITY)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(doubleCol, LESS_EQUAL, Double.POSITIVE_INFINITY), KuduPredicate.newIsNotNullPredicate(doubleCol));
KuduPredicate isNotNull = KuduPredicate.newIsNotNullPredicate(col); Assert.assertEquals(values.size(), countRows(table, isNotNull));
builder.addPredicate(KuduPredicate.newIsNullPredicate(columnSchema)); } else if (domain.getValues().isAll() && domain.isNullAllowed()) { builder.addPredicate(KuduPredicate.newIsNotNullPredicate(columnSchema)); } else if (domain.isSingleValue()) { KuduPredicate predicate = createEqualsPredicate(columnSchema, domain.getSingleValue());
KuduPredicate isNotNull = KuduPredicate.newIsNotNullPredicate(col); Assert.assertEquals(values.size(), countRows(table, isNotNull));
KuduPredicate isNotNull = KuduPredicate.newIsNotNullPredicate(col); Assert.assertEquals(values.size(), countRows(table, isNotNull));
KuduPredicate isNotNull = KuduPredicate.newIsNotNullPredicate(col); Assert.assertEquals(values.size(), countRows(table, isNotNull));
Assert.assertEquals(KuduPredicate.newIsNotNullPredicate(boolCol), KuduPredicate.newComparisonPredicate(boolCol, GREATER_EQUAL, false)); KuduPredicate.newComparisonPredicate(boolCol, LESS, true)); Assert.assertEquals(KuduPredicate.newIsNotNullPredicate(boolCol), KuduPredicate.newComparisonPredicate(boolCol, LESS_EQUAL, true)); Assert.assertEquals(KuduPredicate.newIsNotNullPredicate(boolCol), boolInList(false, true, false, true));
KuduPredicate isNotNull = KuduPredicate.newIsNotNullPredicate(col); Assert.assertEquals(values.size(), countRows(table, isNotNull));
testMerge(KuduPredicate.newIsNotNullPredicate(stringCol), stringInList("a", "c", "b", ""), stringInList("", "a", "b", "c"));