private ColumnMetaData addColumn(String path, ValueType type, ColumnMetaData parent, boolean isArray) { ColumnMetaData column = new ColumnMetaData(path, type); if (parent != null) column.setParent(parent); column.isArray(isArray); columns.add(column); arrayWidths.add(1); // placeholder return column; }
@Test public void testMap() throws Exception { String s = "{\"type\":\"map\",\"values\":"+SIMPLE_RECORD+"}"; ColumnMetaData p = new ColumnMetaData(">", ValueType.NULL).isArray(true); check(Schema.parse(s), p, new ColumnMetaData(">key", ValueType.STRING).setParent(p), new ColumnMetaData(">value#x", ValueType.INT).setParent(p), new ColumnMetaData(">value#y", ValueType.STRING).setParent(p)); }
@Test public void testSimpleMap() throws Exception { String s = "{\"type\":\"map\",\"values\":\"long\"}"; ColumnMetaData p = new ColumnMetaData(">", ValueType.NULL).isArray(true); check(Schema.parse(s), p, new ColumnMetaData(">key", ValueType.STRING).setParent(p), new ColumnMetaData(">value", ValueType.LONG).setParent(p)); }
@Test public void testUnionInArray() throws Exception { String s = "{\"type\":\"record\",\"name\":\"S\",\"fields\":[" +"{\"name\":\"a\",\"type\":{\"type\":\"array\",\"items\":"+UNION+"}}" +"]}"; ColumnMetaData p = new ColumnMetaData("a[]",ValueType.NULL).isArray(true); ColumnMetaData r = new ColumnMetaData("a[]/R", ValueType.NULL) .setParent(p) .isArray(true); check(Schema.parse(s), p, new ColumnMetaData("a[]/int", ValueType.INT) .setParent(p) .isArray(true), r, new ColumnMetaData("a[]/R#x", ValueType.INT).setParent(r), new ColumnMetaData("a[]/R#y", ValueType.STRING).setParent(r)); }
static ColumnMetaData read(InputBuffer in, ColumnFileReader file) throws IOException { ColumnMetaData result = new ColumnMetaData(); MetaData.read(in, result); result.name = result.getString(NAME_KEY); result.type = ValueType.forName(result.getString(TYPE_KEY)); result.values = result.getBoolean(VALUES_KEY); result.isArray = result.getBoolean(ARRAY_KEY); String parentName = result.getString(PARENT_KEY); if (parentName != null) result.setParent(file.getColumnMetaData(parentName)); return result; }
@Test public void testArrayInUnion() throws Exception { String s = "{\"type\":\"record\",\"name\":\"S\",\"fields\":[" +"{\"name\":\"a\",\"type\":[\"int\","+RECORD_ARRAY+"]}]}"; ColumnMetaData q = new ColumnMetaData("a/array",ValueType.NULL) .isArray(true); ColumnMetaData r = new ColumnMetaData("a/array[]", ValueType.NULL) .setParent(q) .isArray(true); check(Schema.parse(s), new ColumnMetaData("a/int", ValueType.INT).isArray(true), q, r, new ColumnMetaData("a/array[]#x", ValueType.INT).setParent(r), new ColumnMetaData("a/array[]#y", ValueType.STRING).setParent(r)); }
@Test public void testUnion() throws Exception { ColumnMetaData p = new ColumnMetaData("R", ValueType.NULL).isArray(true); check(Schema.parse(UNION), new ColumnMetaData("int", ValueType.INT).isArray(true), p, new ColumnMetaData("R#x", ValueType.INT).setParent(p), new ColumnMetaData("R#y", ValueType.STRING).setParent(p)); }
@Test public void testNestedArray() throws Exception { String s = "{\"type\":\"record\",\"name\":\"S\",\"fields\":[" +"{\"name\":\"x\",\"type\":\"int\"}," +"{\"name\":\"A\",\"type\":"+RECORD_ARRAY+"}," +"{\"name\":\"y\",\"type\":\"string\"}" +"]}"; ColumnMetaData p = new ColumnMetaData("A[]", ValueType.NULL).isArray(true); check(Schema.parse(s), new ColumnMetaData("x", ValueType.INT), p, new ColumnMetaData("A[]#x", ValueType.INT).setParent(p), new ColumnMetaData("A[]#y", ValueType.STRING).setParent(p), new ColumnMetaData("y", ValueType.STRING)); }
@Test public void testNestedUnion() throws Exception { String s = "{\"type\":\"record\",\"name\":\"S\",\"fields\":[" +"{\"name\":\"x\",\"type\":\"int\"}," +"{\"name\":\"u\",\"type\":"+UNION+"}," +"{\"name\":\"y\",\"type\":\"string\"}" +"]}"; ColumnMetaData p = new ColumnMetaData("u/R", ValueType.NULL).isArray(true); check(Schema.parse(s), new ColumnMetaData("x", ValueType.INT), new ColumnMetaData("u/int", ValueType.INT).isArray(true), p, new ColumnMetaData("u/R#x", ValueType.INT).setParent(p), new ColumnMetaData("u/R#y", ValueType.STRING).setParent(p), new ColumnMetaData("y", ValueType.STRING)); }
private ColumnMetaData addColumn(String path, ValueType type, ColumnMetaData parent, boolean isArray) { ColumnMetaData column = new ColumnMetaData(path, type); if (parent != null) column.setParent(parent); column.isArray(isArray); columns.add(column); arrayWidths.add(1); // placeholder return column; }
@Test public void testMap() throws Exception { String s = "{\"type\":\"map\",\"values\":"+SIMPLE_RECORD+"}"; ColumnMetaData p = new ColumnMetaData(">", ValueType.NULL).isArray(true); check(Schema.parse(s), p, new ColumnMetaData(">key", ValueType.STRING).setParent(p), new ColumnMetaData(">value#x", ValueType.INT).setParent(p), new ColumnMetaData(">value#y", ValueType.STRING).setParent(p)); }
@Test public void testSimpleMap() throws Exception { String s = "{\"type\":\"map\",\"values\":\"long\"}"; ColumnMetaData p = new ColumnMetaData(">", ValueType.NULL).isArray(true); check(Schema.parse(s), p, new ColumnMetaData(">key", ValueType.STRING).setParent(p), new ColumnMetaData(">value", ValueType.LONG).setParent(p)); }
@Test public void testUnionInArray() throws Exception { String s = "{\"type\":\"record\",\"name\":\"S\",\"fields\":[" +"{\"name\":\"a\",\"type\":{\"type\":\"array\",\"items\":"+UNION+"}}" +"]}"; ColumnMetaData p = new ColumnMetaData("a[]",ValueType.NULL).isArray(true); ColumnMetaData r = new ColumnMetaData("a[]/R", ValueType.NULL) .setParent(p) .isArray(true); check(Schema.parse(s), p, new ColumnMetaData("a[]/int", ValueType.INT) .setParent(p) .isArray(true), r, new ColumnMetaData("a[]/R#x", ValueType.INT).setParent(r), new ColumnMetaData("a[]/R#y", ValueType.STRING).setParent(r)); }
static ColumnMetaData read(InputBuffer in, ColumnFileReader file) throws IOException { ColumnMetaData result = new ColumnMetaData(); MetaData.read(in, result); result.name = result.getString(NAME_KEY); result.type = ValueType.forName(result.getString(TYPE_KEY)); result.values = result.getBoolean(VALUES_KEY); result.isArray = result.getBoolean(ARRAY_KEY); String parentName = result.getString(PARENT_KEY); if (parentName != null) result.setParent(file.getColumnMetaData(parentName)); return result; }
@Test public void testArrayInUnion() throws Exception { String s = "{\"type\":\"record\",\"name\":\"S\",\"fields\":[" +"{\"name\":\"a\",\"type\":[\"int\","+RECORD_ARRAY+"]}]}"; ColumnMetaData q = new ColumnMetaData("a/array",ValueType.NULL) .isArray(true); ColumnMetaData r = new ColumnMetaData("a/array[]", ValueType.NULL) .setParent(q) .isArray(true); check(Schema.parse(s), new ColumnMetaData("a/int", ValueType.INT).isArray(true), q, r, new ColumnMetaData("a/array[]#x", ValueType.INT).setParent(r), new ColumnMetaData("a/array[]#y", ValueType.STRING).setParent(r)); }
@Test public void testUnion() throws Exception { ColumnMetaData p = new ColumnMetaData("R", ValueType.NULL).isArray(true); check(Schema.parse(UNION), new ColumnMetaData("int", ValueType.INT).isArray(true), p, new ColumnMetaData("R#x", ValueType.INT).setParent(p), new ColumnMetaData("R#y", ValueType.STRING).setParent(p)); }
@Test public void testNestedArray() throws Exception { String s = "{\"type\":\"record\",\"name\":\"S\",\"fields\":[" +"{\"name\":\"x\",\"type\":\"int\"}," +"{\"name\":\"A\",\"type\":"+RECORD_ARRAY+"}," +"{\"name\":\"y\",\"type\":\"string\"}" +"]}"; ColumnMetaData p = new ColumnMetaData("A[]", ValueType.NULL).isArray(true); check(Schema.parse(s), new ColumnMetaData("x", ValueType.INT), p, new ColumnMetaData("A[]#x", ValueType.INT).setParent(p), new ColumnMetaData("A[]#y", ValueType.STRING).setParent(p), new ColumnMetaData("y", ValueType.STRING)); }
@Test public void testNestedUnion() throws Exception { String s = "{\"type\":\"record\",\"name\":\"S\",\"fields\":[" +"{\"name\":\"x\",\"type\":\"int\"}," +"{\"name\":\"u\",\"type\":"+UNION+"}," +"{\"name\":\"y\",\"type\":\"string\"}" +"]}"; ColumnMetaData p = new ColumnMetaData("u/R", ValueType.NULL).isArray(true); check(Schema.parse(s), new ColumnMetaData("x", ValueType.INT), new ColumnMetaData("u/int", ValueType.INT).isArray(true), p, new ColumnMetaData("u/R#x", ValueType.INT).setParent(p), new ColumnMetaData("u/R#y", ValueType.STRING).setParent(p), new ColumnMetaData("y", ValueType.STRING)); }