public void jsonColumn(Column column) { string = reader.getJson(column).toString(); } }
public Value getJson(Column column) { // TODO check type? return getJson(column.getIndex()); }
@Override public void jsonColumn(Column column) { if (record.isNull(column)) { visit(column, null); } else { visit(column, record.getJson(column)); } } }
public void jsonColumn(Column column) { if (!pageReader.isNull(column)) { record.add(pageReader.getJson(column)); } } });
@Override public void jsonColumn(Column inputColumn) { int index = indexMapping[inputColumn.getIndex()]; if (index >= 0) { if (pageReader.isNull(inputColumn)) { pageBuilder.setNull(index); } else { pageBuilder.setJson(index, pageReader.getJson(inputColumn)); } } } });
private void checkPage(Schema schema, Page page, final Object... objects) { this.reader = new PageReader(schema); reader.setPage(page); int idx = 0; while (idx < objects.length && reader.nextRecord()) { for (int column = 0; column < reader.getSchema().getColumnCount(); ++column) { Object value = objects[idx++]; if (value == null) { assertEquals(true, reader.isNull(column)); } else if (value instanceof Boolean) { assertEquals(value, reader.getBoolean(column)); } else if (value instanceof Double) { assertEquals(value, reader.getDouble(column)); } else if (value instanceof Long) { assertEquals(value, reader.getLong(column)); } else if (value instanceof String) { assertEquals(value, reader.getString(column)); } else if (value instanceof Timestamp) { assertEquals(value, reader.getTimestamp(column)); } else if (value instanceof Value) { assertEquals(value, reader.getJson(column)); } else { throw new IllegalStateException( "Unsupported type in test utils: " + value.toString()); } } } }
@Test public void testDoubleWriteJsonsToRow() { MockPageOutput output = new MockPageOutput(); Schema schema = Schema.builder() .add("col0", JSON) .add("col1", JSON) .add("col2", JSON) .build(); builder = new PageBuilder(bufferAllocator, schema, output); builder.setJson(0, newString("v0")); builder.setJson(1, newString("v1")); builder.setNull(2); builder.setJson(0, newString("v2")); // store to page for col0 builder.setNull(1); // null is stored to page for col1 builder.setJson(2, newString("v3")); // store to page for col2 builder.addRecord(); builder.finish(); builder.close(); reader = new PageReader(schema); reader.setPage(output.pages.get(0)); assertTrue(reader.nextRecord()); assertEquals(reader.getJson(0), newString("v2")); assertTrue(reader.isNull(1)); assertEquals(reader.getJson(2), newString("v3")); assertFalse(reader.nextRecord()); reader.close(); }
@Override public void jsonColumn(Column outputColumn) { Column inputColumn = outputInputColumnMap.get(outputColumn); if (inputColumn == null || pageReader.isNull(inputColumn)) { Value defaultValue = (Value) outputDefaultMap.get(outputColumn); if (defaultValue == null) { pageBuilder.setNull(outputColumn); } else { String jsonPath = new StringBuilder("$['").append(Utils.escape(outputColumn.getName(), true)).append("']").toString(); pageBuilder.setJson(outputColumn, jsonVisitor.visit(jsonPath, defaultValue)); } } else { Value value = pageReader.getJson(inputColumn); String jsonPath = new StringBuilder("$['").append(Utils.escape(outputColumn.getName(), true)).append("']").toString(); pageBuilder.setJson(outputColumn, jsonVisitor.visit(jsonPath, value)); } }