Object javaValue = TypeHelper.getJavaValue(type, value); if (javaValue instanceof Long) { return KuduPredicate.newComparisonPredicate(columnSchema, op, (Long) javaValue); return KuduPredicate.newComparisonPredicate(columnSchema, op, (Integer) javaValue); return KuduPredicate.newComparisonPredicate(columnSchema, op, (Short) javaValue); return KuduPredicate.newComparisonPredicate(columnSchema, op, (Byte) javaValue); return KuduPredicate.newComparisonPredicate(columnSchema, op, (String) javaValue); return KuduPredicate.newComparisonPredicate(columnSchema, op, (Double) javaValue); return KuduPredicate.newComparisonPredicate(columnSchema, op, (Float) javaValue); return KuduPredicate.newComparisonPredicate(columnSchema, op, (Boolean) javaValue); return KuduPredicate.newComparisonPredicate(columnSchema, op, (byte[]) javaValue);
KuduPredicate predicate = KuduPredicate.newComparisonPredicate(column, predicateOp, startkey); scannerBuilder.addPredicate(predicate);
return KuduPredicate.newComparisonPredicate(column, operator, (byte[]) key); case BOOL: return KuduPredicate.newComparisonPredicate(column, operator, (Boolean) key); case DOUBLE: return KuduPredicate.newComparisonPredicate(column, operator, (Double) key); case FLOAT: return KuduPredicate.newComparisonPredicate(column, operator, (Float) key); case INT16: return KuduPredicate.newComparisonPredicate(column, operator, (Short) key); case INT32: return KuduPredicate.newComparisonPredicate(column, operator, (Integer) key); case INT64: return KuduPredicate.newComparisonPredicate(column, operator, (Long) key); case INT8: return KuduPredicate.newComparisonPredicate(column, operator, (Byte) key); case STRING: return KuduPredicate.newComparisonPredicate(column, operator, (String) key); case UNIXTIME_MICROS: default:
predicate = KuduPredicate.newComparisonPredicate(column, comparison, (String)this.value); break; case FLOAT: predicate = KuduPredicate.newComparisonPredicate(column, comparison, (Float)this.value); break; case INT8: predicate = KuduPredicate.newComparisonPredicate(column, comparison, (Byte)this.value); break; case INT16: predicate = KuduPredicate.newComparisonPredicate(column, comparison, (Short)this.value); break; case INT32: predicate = KuduPredicate.newComparisonPredicate(column, comparison, (Integer)this.value); break; case INT64: predicate = KuduPredicate.newComparisonPredicate(column, comparison, (Long)this.value); break; case DOUBLE: predicate = KuduPredicate.newComparisonPredicate(column, comparison, (Double)this.value); break; case BOOL: predicate = KuduPredicate.newComparisonPredicate(column, comparison, (Boolean)this.value); break; case UNIXTIME_MICROS: Long time = (Long)this.value; predicate = KuduPredicate.newComparisonPredicate(column, comparison, time*1000); break; case BINARY: predicate = KuduPredicate.newComparisonPredicate(column, comparison, (byte[])this.value);
private KuduPredicate createComparisonPredicate(ColumnSchema columnSchema, KuduPredicate.ComparisonOp op, Object value) { com.facebook.presto.spi.type.Type type = TypeHelper.fromKuduColumn(columnSchema); Object javaValue = TypeHelper.getJavaValue(type, value); if (javaValue instanceof Long) { return KuduPredicate.newComparisonPredicate(columnSchema, op, (Long) javaValue); } else if (javaValue instanceof Integer) { return KuduPredicate.newComparisonPredicate(columnSchema, op, (Integer) javaValue); } else if (javaValue instanceof Short) { return KuduPredicate.newComparisonPredicate(columnSchema, op, (Short) javaValue); } else if (javaValue instanceof Byte) { return KuduPredicate.newComparisonPredicate(columnSchema, op, (Byte) javaValue); } else if (javaValue instanceof String) { return KuduPredicate.newComparisonPredicate(columnSchema, op, (String) javaValue); } else if (javaValue instanceof Double) { return KuduPredicate.newComparisonPredicate(columnSchema, op, (Double) javaValue); } else if (javaValue instanceof Float) { return KuduPredicate.newComparisonPredicate(columnSchema, op, (Float) javaValue); } else if (javaValue instanceof Boolean) { return KuduPredicate.newComparisonPredicate(columnSchema, op, (Boolean) javaValue); } else if (javaValue instanceof byte[]) { return KuduPredicate.newComparisonPredicate(columnSchema, op, (byte[]) javaValue); } else if (javaValue == null) { throw new IllegalStateException("Unexpected null java value for column " + columnSchema.getName()); } else { throw new IllegalStateException("Unexpected java value for column " + columnSchema.getName() + ": " + javaValue + "(" + javaValue.getClass() + ")"); } }
Object javaValue = TypeHelper.getJavaValue(type, value); if (javaValue instanceof Long) { return KuduPredicate.newComparisonPredicate(columnSchema, op, (Long) javaValue); return KuduPredicate.newComparisonPredicate(columnSchema, op, (Integer) javaValue); return KuduPredicate.newComparisonPredicate(columnSchema, op, (Short) javaValue); return KuduPredicate.newComparisonPredicate(columnSchema, op, (Byte) javaValue); return KuduPredicate.newComparisonPredicate(columnSchema, op, (String) javaValue); return KuduPredicate.newComparisonPredicate(columnSchema, op, (Double) javaValue); return KuduPredicate.newComparisonPredicate(columnSchema, op, (Float) javaValue); return KuduPredicate.newComparisonPredicate(columnSchema, op, (Boolean) javaValue); return KuduPredicate.newComparisonPredicate(columnSchema, op, (byte[]) javaValue);
/** * Creates a new comparison predicate on a timestamp column. * @param column the column schema * @param op the comparison operation * @param value the value to compare against */ public static KuduPredicate newComparisonPredicate(ColumnSchema column, ComparisonOp op, Timestamp value) { checkColumn(column, Type.UNIXTIME_MICROS); long micros = TimestampUtil.timestampToMicros(value); return newComparisonPredicate(column, op, micros); }
@Test public void TestDecimalCoercion() { Assert.assertEquals( KuduPredicate.newComparisonPredicate(decimal32Col, LESS, BigDecimal.valueOf(123)), KuduPredicate.newComparisonPredicate(decimal32Col, LESS, BigDecimal.valueOf(12300, 2)) ); Assert.assertEquals( KuduPredicate.newComparisonPredicate(decimal32Col, GREATER, BigDecimal.valueOf(123, 1)), KuduPredicate.newComparisonPredicate(decimal32Col, GREATER, BigDecimal.valueOf(1230, 2)) ); Assert.assertEquals( KuduPredicate.newComparisonPredicate(decimal32Col, EQUAL, BigDecimal.valueOf(1, 0)), KuduPredicate.newComparisonPredicate(decimal32Col, EQUAL, BigDecimal.valueOf(100, 2)) ); }
return KuduPredicate.newComparisonPredicate(column, op, Bytes.getBoolean(bound)); case INT8: return KuduPredicate.newComparisonPredicate(column, op, Bytes.getByte(bound)); case INT16: return KuduPredicate.newComparisonPredicate(column, op, Bytes.getShort(bound)); case INT32: return KuduPredicate.newComparisonPredicate(column, op, Bytes.getInt(bound)); case INT64: case UNIXTIME_MICROS: return KuduPredicate.newComparisonPredicate(column, op, Bytes.getLong(bound)); case FLOAT: return KuduPredicate.newComparisonPredicate(column, op, Bytes.getFloat(bound)); case DOUBLE: return KuduPredicate.newComparisonPredicate(column, op, Bytes.getDouble(bound)); case STRING: return KuduPredicate.newComparisonPredicate(column, op, Bytes.getString(bound)); case BINARY: return KuduPredicate.newComparisonPredicate(column, op, bound); case DECIMAL32: case DECIMAL64: case DECIMAL128: ColumnTypeAttributes typeAttributes = column.getTypeAttributes(); return KuduPredicate.newComparisonPredicate(column, op, Bytes.getDecimal(bound, typeAttributes.getPrecision(), typeAttributes.getScale())); default:
@Test public void testLessEqual() { Assert.assertEquals(KuduPredicate.newComparisonPredicate(byteCol, LESS_EQUAL, 10), KuduPredicate.newComparisonPredicate(byteCol, LESS, 11)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(shortCol, LESS_EQUAL, 10), KuduPredicate.newComparisonPredicate(shortCol, LESS, 11)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(intCol, LESS_EQUAL, 10), KuduPredicate.newComparisonPredicate(intCol, LESS, 11)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(longCol, LESS_EQUAL, 10), KuduPredicate.newComparisonPredicate(longCol, LESS, 11)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(floatCol, LESS_EQUAL, 12.345f), KuduPredicate.newComparisonPredicate(floatCol, LESS, Math.nextAfter(12.345f, Float.POSITIVE_INFINITY))); Assert.assertEquals(KuduPredicate.newComparisonPredicate(doubleCol, LESS_EQUAL, 12.345), KuduPredicate.newComparisonPredicate(doubleCol, LESS, Math.nextAfter(12.345, Float.POSITIVE_INFINITY))); Assert.assertEquals( KuduPredicate.newComparisonPredicate(decimal32Col, LESS_EQUAL, BigDecimal.valueOf(12345,2)), KuduPredicate.newComparisonPredicate(decimal32Col, LESS, BigDecimal.valueOf(12346,2))); Assert.assertEquals(KuduPredicate.newComparisonPredicate(stringCol, LESS_EQUAL, "a"), KuduPredicate.newComparisonPredicate(stringCol, LESS, "a\0")); Assert.assertEquals(KuduPredicate.newComparisonPredicate(binaryCol, LESS_EQUAL, new byte[] { (byte) 10 }), 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),
@Test public void testGreater() { Assert.assertEquals(KuduPredicate.newComparisonPredicate(byteCol, GREATER_EQUAL, 11), KuduPredicate.newComparisonPredicate(byteCol, GREATER, 10)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(shortCol, GREATER_EQUAL, 11), KuduPredicate.newComparisonPredicate(shortCol, GREATER, 10)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(intCol, GREATER_EQUAL, 11), KuduPredicate.newComparisonPredicate(intCol, GREATER, 10)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(longCol, GREATER_EQUAL, 11), KuduPredicate.newComparisonPredicate(longCol, GREATER, 10)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(floatCol, GREATER_EQUAL, Math.nextAfter(12.345f, Float.MAX_VALUE)), KuduPredicate.newComparisonPredicate(floatCol, GREATER, 12.345f)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(doubleCol, GREATER_EQUAL, Math.nextAfter(12.345, Float.MAX_VALUE)), KuduPredicate.newComparisonPredicate(doubleCol, GREATER, 12.345)); Assert.assertEquals( KuduPredicate.newComparisonPredicate(decimal32Col, GREATER_EQUAL, BigDecimal.valueOf(12346, 2)), KuduPredicate.newComparisonPredicate(decimal32Col, GREATER, BigDecimal.valueOf(12345, 2))); Assert.assertEquals(KuduPredicate.newComparisonPredicate(stringCol, GREATER_EQUAL, "a\0"), KuduPredicate.newComparisonPredicate(stringCol, GREATER, "a")); Assert.assertEquals(KuduPredicate.newComparisonPredicate(binaryCol, GREATER_EQUAL, new byte[] { (byte) 10, (byte) 0 }), KuduPredicate.newComparisonPredicate(binaryCol, GREATER, new byte[] { (byte) 10 })); KuduPredicate.newComparisonPredicate(byteCol, GREATER, Byte.MAX_VALUE)); Assert.assertEquals(KuduPredicate.none(shortCol), KuduPredicate.newComparisonPredicate(shortCol, GREATER, Short.MAX_VALUE)); Assert.assertEquals(KuduPredicate.none(intCol), KuduPredicate.newComparisonPredicate(intCol, GREATER, Integer.MAX_VALUE)); Assert.assertEquals(KuduPredicate.none(longCol), KuduPredicate.newComparisonPredicate(longCol, GREATER, Long.MAX_VALUE)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(floatCol, GREATER_EQUAL, Float.POSITIVE_INFINITY),
@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)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(byteCol, GREATER_EQUAL, Byte.MAX_VALUE), KuduPredicate.newComparisonPredicate(byteCol, EQUAL, Byte.MAX_VALUE));
KuduPredicate.newComparisonPredicate(boolCol, GREATER_EQUAL, false)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(boolCol, EQUAL, true), KuduPredicate.newComparisonPredicate(boolCol, GREATER, false)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(boolCol, EQUAL, false), KuduPredicate.newComparisonPredicate(boolCol, EQUAL, false)); KuduPredicate.newComparisonPredicate(boolCol, LESS, false)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(boolCol, EQUAL, false), KuduPredicate.newComparisonPredicate(boolCol, LESS_EQUAL, false)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(boolCol, EQUAL, true), KuduPredicate.newComparisonPredicate(boolCol, GREATER_EQUAL, true)); KuduPredicate.newComparisonPredicate(boolCol, GREATER, true)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(boolCol, EQUAL, true), KuduPredicate.newComparisonPredicate(boolCol, EQUAL, true)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(boolCol, EQUAL, false), KuduPredicate.newComparisonPredicate(boolCol, LESS, true)); KuduPredicate.newComparisonPredicate(boolCol, LESS_EQUAL, true)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(boolCol, EQUAL, true), boolInList(true, true, true));
@Test public void testLess() { Assert.assertEquals(KuduPredicate.newComparisonPredicate(byteCol, LESS, Byte.MIN_VALUE), KuduPredicate.none(byteCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(shortCol, LESS, Short.MIN_VALUE), KuduPredicate.none(shortCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(intCol, LESS, Integer.MIN_VALUE), KuduPredicate.none(intCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(longCol, LESS, Long.MIN_VALUE), KuduPredicate.none(longCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(floatCol, LESS, Float.NEGATIVE_INFINITY), KuduPredicate.none(floatCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(doubleCol, LESS, Double.NEGATIVE_INFINITY), KuduPredicate.none(doubleCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(decimal32Col, LESS, DecimalUtil.minValue(DecimalUtil.MAX_DECIMAL32_PRECISION, 2)), KuduPredicate.none(decimal32Col)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(decimal64Col, LESS, DecimalUtil.minValue(DecimalUtil.MAX_DECIMAL64_PRECISION, 2)), KuduPredicate.none(decimal64Col)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(decimal128Col, LESS, DecimalUtil.minValue(DecimalUtil.MAX_DECIMAL128_PRECISION, 2)), KuduPredicate.none(decimal128Col)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(stringCol, LESS, ""), KuduPredicate.none(stringCol)); Assert.assertEquals(KuduPredicate.newComparisonPredicate(binaryCol, LESS, new byte[] {}), KuduPredicate.none(binaryCol)); }
@Override public List<String> listSchemaNames() { try { if (rawSchemasTable == null) { if (!client.tableExists(rawSchemasTableName)) { createAndFillSchemasTable(); } rawSchemasTable = getSchemasTable(); } ColumnSchema tenantColumn = rawSchemasTable.getSchema().getColumnByIndex(0); KuduScanner scanner = client.newScannerBuilder(rawSchemasTable) .addPredicate(KuduPredicate.newComparisonPredicate(tenantColumn, KuduPredicate.ComparisonOp.EQUAL, tenantPrefix)) .setProjectedColumnIndexes(ImmutableList.of(1)) .build(); RowResultIterator iterator = scanner.nextRows(); ArrayList<String> result = new ArrayList<>(); while (iterator != null) { for (RowResult row : iterator) { result.add(row.getString(0)); } iterator = scanner.nextRows(); } return result; } catch (KuduException e) { throw new PrestoException(GENERIC_INTERNAL_ERROR, e); } }
KuduPredicate predicate = KuduPredicate.newComparisonPredicate( table.getSchema().getColumnByIndex(0), KuduPredicate.ComparisonOp.EQUAL, key); KuduScanner scanner = getScannerBuilder()
for (long v : testValues) { KuduPredicate equal = KuduPredicate.newComparisonPredicate(col, ComparisonOp.EQUAL, v); Assert.assertEquals(values.contains(v) ? 1 : 0, countRows(table, equal)); KuduPredicate.newComparisonPredicate(col, ComparisonOp.GREATER_EQUAL, v); Assert.assertEquals(values.tailSet(v).size(), countRows(table, greaterEqual)); KuduPredicate.newComparisonPredicate(col, ComparisonOp.LESS_EQUAL, v); Assert.assertEquals(values.headSet(v, true).size(), countRows(table, lessEqual)); KuduPredicate.newComparisonPredicate(col, ComparisonOp.GREATER, v); Assert.assertEquals(values.tailSet(v, false).size(), countRows(table, greater)); KuduPredicate.newComparisonPredicate(col, ComparisonOp.LESS, v); Assert.assertEquals(values.headSet(v).size(), countRows(table, less));
KuduPredicate.newComparisonPredicate(b, ComparisonOp.EQUAL, 0), KuduPredicate.newInListPredicate(c, ImmutableList.of((byte) 0, (byte) 1))); KuduPredicate.newComparisonPredicate(b, ComparisonOp.EQUAL, 1), KuduPredicate.newInListPredicate(c, ImmutableList.of((byte) 0, (byte) 1)));
KuduPredicate equal = KuduPredicate.newComparisonPredicate(col, ComparisonOp.EQUAL, v); Assert.assertEquals(values.subSet(v, true, v, true).size(), countRows(table, equal)); KuduPredicate.newComparisonPredicate(col, ComparisonOp.GREATER_EQUAL, v); Assert.assertEquals(values.tailSet(v).size(), countRows(table, greaterEqual)); KuduPredicate.newComparisonPredicate(col, ComparisonOp.LESS_EQUAL, v); Assert.assertEquals(values.headSet(v, true).size(), countRows(table, lessEqual)); KuduPredicate.newComparisonPredicate(col, ComparisonOp.GREATER, v); Assert.assertEquals(values.tailSet(v, false).size(), countRows(table, greater)); KuduPredicate.newComparisonPredicate(col, ComparisonOp.LESS, v); Assert.assertEquals(values.headSet(v).size(), countRows(table, less));
KuduPredicate equal = KuduPredicate.newComparisonPredicate(col, ComparisonOp.EQUAL, v); Assert.assertEquals(values.subSet(v, true, v, true).size(), countRows(table, equal)); KuduPredicate.newComparisonPredicate(col, ComparisonOp.GREATER_EQUAL, v); Assert.assertEquals(values.tailSet(v).size(), countRows(table, greaterEqual)); KuduPredicate.newComparisonPredicate(col, ComparisonOp.LESS_EQUAL, v); Assert.assertEquals(values.headSet(v, true).size(), countRows(table, lessEqual)); KuduPredicate.newComparisonPredicate(col, ComparisonOp.GREATER, v); Assert.assertEquals(values.tailSet(v, false).size(), countRows(table, greater)); KuduPredicate.newComparisonPredicate(col, ComparisonOp.LESS, v); Assert.assertEquals(values.headSet(v).size(), countRows(table, less));