{ "schemas": [ { "name": "myUDT", // Question: what should the namespace/structure of schema identifiers. "id": 1, "type": "schema", // Optional: implied at the top-level (only "schema" types can be defined at the root of schemas) "options": { "disallowUnschematized": false // Optional: defaults to false }, "properties": [ { "path": "a", "type": { "type": "int8", "storage": "fixed" } }, { "path": "b", "type": { "type": "utf8", "storage": "variable" } } ] }, { "name": "someTable", "id": -1, "options": { "disallowUnschematized": true }, "properties": [ { "path": "myBool", "comment": "A sample fixed boolean column", "type": { "type": "bool", "storage": "fixed" } }, { "path": "myInt8", "comment": "A sample fixed 8-byte integer column", "type": { "type": "int8", "storage": "fixed" } }, { "path": "nested.x", "comment": "A sample nested integer column", "type": { "type": "int32", "storage": "fixed" } }, { "path": "nested.y", "comment": "A sample nested float column", "type": { "type": "float32", "storage": "fixed" } }, { "path": "nested.deeper.z", "comment": "A sample deeper nested double column", "type": { "type": "float64", "storage": "fixed" } }, { "path": "State", "comment": "A sample fixed 2-byte UTF-8 encoded text column", "type": { "type": "utf8", "storage": "fixed", "length": 2 } }, { "path": "myString", "comment": "A sample variable length UTF-8 encoded text column (up to 127 bytes)", "type": { "type": "utf8", "storage": "variable" } }, { "path": "lob", "comment": "A sample extended UTF-8 encoded text column (up to 2M bytes)", "type": { "type": "utf8", "storage": "sparse" } }, { "path": "canbelob", "comment": "A sample extended UTF-8 encoded text column (up to 2M bytes) that stores variable if 'small' (<127 bytes), but sparse if 'large'", "type": { "type": "utf8", "storage": "variable" } }, { "path": "primitiveArray", "comment": "A sample array of primitives (4-byte ints)", "type": { "type": "array", "items": { "type": "int32" } } }, { "path": "shreddedArray[0]", "comment": "A sample fixed-length array of primitives", "type": { "type": "int32" } }, { "path": "shreddedArray[1]", "comment": "A sample fixed-length array of primitives", "type": { "type": "int32" } }, { "path": "nestedArray", "comment": "A sample array of nested arrays", "type": { "type": "array", "items": { "type": "array", "items": { "type": "int32" } } } }, { "path": "nestedNestedArray", "comment": "A sample array of nested nested arrays", "type": { "type": "array", "items": { "type": "array", "items": { "type": "array", "items": { "type": "int32" } } } } }, { "path": "arrayOfObject", "comment": "A sample array of semi-structured objects", "type": { "type": "array", "items": { "type": "object", "properties": [ { "path": "a", "type": { "type": "int8" } }, { "path": "b", "type": { "type": "utf8" } } ] } } }, { "path": "arrayOfAny", "comment": "A sample heterogenous array", "type": { "type": "array", "items": { "type": "any" } } }, { "path": "arrayOfUDT", "comment": "A sample array of schematized rows", "type": { "type": "array", "items": { "type": "schema", "name": "myUDT" // see definition above - should this be called $ref or ref or something? } } }, { "path": "nestedObject", "comment": "A sample nested objects", "type": { "type": "object", "properties": [ { "path": "a", "type": { "type": "int8" } }, { "path": "b", "type": { "type": "utf8" } } ] } } ] } ] }