private static List<JsonStringArrayList<Long>> listOfLists(int size) { List<JsonStringArrayList<Long>> listOfLists = new ArrayList<>(size); for (int i = 0; i < size; i++) { final JsonStringArrayList<Long> list = new JsonStringArrayList<>(INNER_LIST_SIZE); for (int j = 0; j < INNER_LIST_SIZE; j++) { list.add((long)j + i); } listOfLists.add(list); } return listOfLists; }
/** * Convenience method to create a {@link JsonStringArrayList list} from the given values. */ public static JsonStringArrayList<Object> listOf(Object... values) { final JsonStringArrayList<Object> list = new JsonStringArrayList<>(); for (Object value:values) { if (value instanceof CharSequence) { list.add(new Text(value.toString())); } else { list.add(value); } } return list; }
private Object convertAvroValToDremio(Object value, boolean root) { if (value instanceof ByteBuffer) { ByteBuffer bb = ((ByteBuffer)value); byte[] val = new byte[((ByteBuffer)value).remaining()]; bb.get(val); bb.position(0); value = val; } else if (!root && value instanceof CharSequence) { value = new Text(value.toString()); } else if (value instanceof GenericData.Array) { GenericData.Array array = ((GenericData.Array) value); final JsonStringArrayList<Object> list = new JsonStringArrayList<>(); for (Object o : array) { list.add(convertAvroValToDremio(o, false)); } value = list; } else if (value instanceof GenericData.EnumSymbol) { value = value.toString(); } else if (value instanceof GenericData.Record) { GenericData.Record rec = ((GenericData.Record) value); final JsonStringHashMap<String, Object> newRecord = new JsonStringHashMap<>(); for (Schema.Field field : rec.getSchema().getFields()) { Object val = rec.get(field.name()); newRecord.put(field.name(), convertAvroValToDremio(val, false)); } value = newRecord; } return value; }
@Test public void testArrayOfIPv4() throws Exception { String ip1 = "10.0.0.1"; String ip2 = "192.168.0.1"; String ip3 = "10.0.8.6"; String ip4 = "10.0.8.5"; ElasticsearchCluster.ColumnData[] data = new ElasticsearchCluster.ColumnData[]{ new ElasticsearchCluster.ColumnData("ip_field", IP, null, new Object[][]{ new Object[]{ip1, ip2, ip3}, new Object[]{ip4, ip1} }) }; elastic.load(schema, table, data); JsonStringArrayList<Text> values1 = new JsonStringArrayList<>(); JsonStringArrayList<Text> values2 = new JsonStringArrayList<>(); values1.add(new Text(ip1)); values1.add(new Text(ip2)); values1.add(new Text(ip3)); values2.add(new Text(ip4)); values2.add(new Text(ip1)); testBuilder() .sqlQuery("select ip_field from elasticsearch." + schema + "." + table) .baselineColumns("ip_field") .unOrdered() .baselineValues(values1) .baselineValues(values2) .go(); }