sungwy commented on code in PR #3:
URL:
https://github.com/apache/iceberg-verification/pull/3#discussion_r4086946931
##########
table-spec/schema/core/cases.json:
##########
@@ -0,0 +1,693 @@
+{
+ "cases": [
+ {
+ "id": "flat-required-and-optional",
+ "valid": true,
+ "input": {
+ "type": "struct",
+ "schema-id": 0,
+ "fields": [
+ {
+ "id": 1,
+ "name": "id",
+ "required": true,
+ "type": "long"
+ },
+ {
+ "id": 2,
+ "name": "data",
+ "required": false,
+ "type": "string"
+ }
+ ]
+ },
+ "decoded": {
+ "schema-id": 0,
+ "identifier-field-ids": [],
+ "fields": [
+ { "id": 1, "name": "id", "parent": null, "required": true, "type":
"long", "doc": null },
+ { "id": 2, "name": "data", "parent": null, "required": false,
"type": "string", "doc": null }
+ ]
+ }
+ },
+ {
+ "id": "fields-not-in-id-order",
+ "valid": true,
+ "input": {
+ "type": "struct",
+ "schema-id": 0,
+ "fields": [
+ {
+ "id": 3,
+ "name": "c",
+ "required": true,
+ "type": "int"
+ },
+ {
+ "id": 1,
+ "name": "a",
+ "required": true,
+ "type": "int"
+ },
+ {
+ "id": 2,
+ "name": "b",
+ "required": false,
+ "type": "int"
+ }
+ ]
+ },
+ "decoded": {
+ "schema-id": 0,
+ "identifier-field-ids": [],
+ "fields": [
+ { "id": 3, "name": "c", "parent": null, "required": true, "type":
"int", "doc": null },
+ { "id": 1, "name": "a", "parent": null, "required": true, "type":
"int", "doc": null },
+ { "id": 2, "name": "b", "parent": null, "required": false, "type":
"int", "doc": null }
+ ]
+ }
+ },
+ {
+ "id": "nested-struct",
+ "valid": true,
+ "input": {
+ "type": "struct",
+ "schema-id": 0,
+ "fields": [
+ {
+ "id": 1,
+ "name": "id",
+ "required": true,
+ "type": "long"
+ },
+ {
+ "id": 2,
+ "name": "location",
+ "required": false,
+ "type": {
+ "type": "struct",
+ "fields": [
+ {
+ "id": 3,
+ "name": "lat",
+ "required": true,
+ "type": "double"
+ },
+ {
+ "id": 4,
+ "name": "lon",
+ "required": true,
+ "type": "double"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "decoded": {
+ "schema-id": 0,
+ "identifier-field-ids": [],
+ "fields": [
+ { "id": 1, "name": "id", "parent": null, "required": true, "type":
"long", "doc": null },
+ { "id": 2, "name": "location", "parent": null, "required": false,
"type": "struct", "doc": null },
+ { "id": 3, "name": "lat", "parent": 2, "required": true, "type":
"double", "doc": null },
+ { "id": 4, "name": "lon", "parent": 2, "required": true, "type":
"double", "doc": null }
+ ]
+ }
+ },
+ {
+ "id": "list-of-primitive",
+ "valid": true,
+ "input": {
+ "type": "struct",
+ "schema-id": 0,
+ "fields": [
+ {
+ "id": 1,
+ "name": "id",
+ "required": true,
+ "type": "long"
+ },
+ {
+ "id": 2,
+ "name": "tags",
+ "required": true,
+ "type": {
+ "type": "list",
+ "element-id": 3,
+ "element-required": false,
+ "element": "string"
+ }
+ }
+ ]
+ },
+ "decoded": {
+ "schema-id": 0,
+ "identifier-field-ids": [],
+ "fields": [
+ { "id": 1, "name": "id", "parent": null, "required": true, "type":
"long", "doc": null },
+ { "id": 2, "name": "tags", "parent": null, "required": true, "type":
"list", "doc": null },
+ { "id": 3, "name": "element", "parent": 2, "required": false,
"type": "string", "doc": null }
+ ]
+ }
+ },
+ {
+ "id": "map-of-primitive",
+ "valid": true,
+ "input": {
+ "type": "struct",
+ "schema-id": 0,
+ "fields": [
+ {
+ "id": 1,
+ "name": "id",
+ "required": true,
+ "type": "long"
+ },
+ {
+ "id": 2,
+ "name": "props",
+ "required": true,
+ "type": {
+ "type": "map",
+ "key-id": 3,
+ "key": "string",
+ "value-id": 4,
+ "value-required": false,
+ "value": "int"
+ }
+ }
+ ]
+ },
+ "decoded": {
+ "schema-id": 0,
+ "identifier-field-ids": [],
+ "fields": [
+ { "id": 1, "name": "id", "parent": null, "required": true, "type":
"long", "doc": null },
+ { "id": 2, "name": "props", "parent": null, "required": true,
"type": "map", "doc": null },
+ { "id": 3, "name": "key", "parent": 2, "required": true, "type":
"string", "doc": null },
+ { "id": 4, "name": "value", "parent": 2, "required": false, "type":
"int", "doc": null }
+ ]
+ }
+ },
+ {
+ "id": "list-of-struct",
+ "valid": true,
+ "input": {
+ "type": "struct",
+ "schema-id": 0,
+ "fields": [
+ {
+ "id": 1,
+ "name": "id",
+ "required": true,
+ "type": "long"
+ },
+ {
+ "id": 2,
+ "name": "points",
+ "required": true,
+ "type": {
+ "type": "list",
+ "element-id": 3,
+ "element-required": true,
+ "element": {
+ "type": "struct",
+ "fields": [
+ {
+ "id": 4,
+ "name": "x",
+ "required": true,
+ "type": "int"
+ },
+ {
+ "id": 5,
+ "name": "y",
+ "required": false,
+ "type": "int"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "decoded": {
+ "schema-id": 0,
+ "identifier-field-ids": [],
+ "fields": [
+ { "id": 1, "name": "id", "parent": null, "required": true, "type":
"long", "doc": null },
+ { "id": 2, "name": "points", "parent": null, "required": true,
"type": "list", "doc": null },
+ { "id": 3, "name": "element", "parent": 2, "required": true, "type":
"struct", "doc": null },
+ { "id": 4, "name": "x", "parent": 3, "required": true, "type":
"int", "doc": null },
+ { "id": 5, "name": "y", "parent": 3, "required": false, "type":
"int", "doc": null }
+ ]
+ }
+ },
+ {
+ "id": "map-with-struct-value",
+ "valid": true,
+ "input": {
+ "type": "struct",
+ "schema-id": 0,
+ "fields": [
+ {
+ "id": 1,
+ "name": "id",
+ "required": true,
+ "type": "long"
+ },
+ {
+ "id": 2,
+ "name": "by_name",
+ "required": false,
+ "type": {
+ "type": "map",
+ "key-id": 3,
+ "key": "string",
+ "value-id": 4,
+ "value-required": false,
+ "value": {
+ "type": "struct",
+ "fields": [
+ {
+ "id": 5,
+ "name": "count",
+ "required": true,
+ "type": "long"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "decoded": {
+ "schema-id": 0,
+ "identifier-field-ids": [],
+ "fields": [
+ { "id": 1, "name": "id", "parent": null, "required": true, "type":
"long", "doc": null },
+ { "id": 2, "name": "by_name", "parent": null, "required": false,
"type": "map", "doc": null },
+ { "id": 3, "name": "key", "parent": 2, "required": true, "type":
"string", "doc": null },
+ { "id": 4, "name": "value", "parent": 2, "required": false, "type":
"struct", "doc": null },
+ { "id": 5, "name": "count", "parent": 4, "required": true, "type":
"long", "doc": null }
+ ]
+ }
+ },
+ {
+ "id": "schema-id-and-identifier-fields",
+ "valid": true,
+ "input": {
+ "type": "struct",
+ "schema-id": 7,
+ "identifier-field-ids": [
+ 1,
+ 2
+ ],
+ "fields": [
+ {
+ "id": 1,
+ "name": "tenant",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "id": 2,
+ "name": "key",
+ "required": true,
+ "type": "long"
+ },
+ {
+ "id": 3,
+ "name": "payload",
+ "required": false,
+ "type": "string"
+ }
+ ]
+ },
+ "decoded": {
+ "schema-id": 7,
+ "identifier-field-ids": [1, 2],
+ "fields": [
+ { "id": 1, "name": "tenant", "parent": null, "required": true,
"type": "string", "doc": null },
+ { "id": 2, "name": "key", "parent": null, "required": true, "type":
"long", "doc": null },
+ { "id": 3, "name": "payload", "parent": null, "required": false,
"type": "string", "doc": null }
+ ]
+ }
+ },
+ {
+ "id": "field-doc",
+ "valid": true,
+ "input": {
+ "type": "struct",
+ "schema-id": 0,
+ "fields": [
+ {
+ "id": 1,
+ "name": "id",
+ "required": true,
+ "type": "long",
+ "doc": "primary key"
+ },
+ {
+ "id": 2,
+ "name": "data",
+ "required": false,
+ "type": "string"
+ }
+ ]
+ },
+ "decoded": {
+ "schema-id": 0,
+ "identifier-field-ids": [],
+ "fields": [
+ { "id": 1, "name": "id", "parent": null, "required": true, "type":
"long", "doc": "primary key" },
+ { "id": 2, "name": "data", "parent": null, "required": false,
"type": "string", "doc": null }
+ ]
+ }
+ },
+ {
+ "id": "all-primitive-types",
+ "valid": true,
+ "input": {
+ "type": "struct",
+ "schema-id": 0,
+ "fields": [
+ {
+ "id": 1,
+ "name": "f_boolean",
+ "required": false,
+ "type": "boolean"
+ },
+ {
+ "id": 2,
+ "name": "f_int",
+ "required": false,
+ "type": "int"
+ },
+ {
+ "id": 3,
+ "name": "f_long",
+ "required": false,
+ "type": "long"
+ },
+ {
+ "id": 4,
+ "name": "f_float",
+ "required": false,
+ "type": "float"
+ },
+ {
+ "id": 5,
+ "name": "f_double",
+ "required": false,
+ "type": "double"
+ },
+ {
+ "id": 6,
+ "name": "f_date",
+ "required": false,
+ "type": "date"
+ },
+ {
+ "id": 7,
+ "name": "f_time",
+ "required": false,
+ "type": "time"
+ },
+ {
+ "id": 8,
+ "name": "f_timestamp",
+ "required": false,
+ "type": "timestamp"
+ },
+ {
+ "id": 9,
+ "name": "f_timestamptz",
+ "required": false,
+ "type": "timestamptz"
+ },
+ {
+ "id": 10,
+ "name": "f_string",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "id": 11,
+ "name": "f_uuid",
+ "required": false,
+ "type": "uuid"
+ },
+ {
+ "id": 12,
+ "name": "f_fixed",
+ "required": false,
+ "type": "fixed[16]"
+ },
+ {
+ "id": 13,
+ "name": "f_binary",
+ "required": false,
+ "type": "binary"
+ },
+ {
+ "id": 14,
+ "name": "f_decimal",
+ "required": false,
+ "type": "decimal(9,2)"
+ }
+ ]
+ },
+ "decoded": {
+ "schema-id": 0,
+ "identifier-field-ids": [],
+ "fields": [
+ { "id": 1, "name": "f_boolean", "parent": null, "required": false,
"type": "boolean", "doc": null },
+ { "id": 2, "name": "f_int", "parent": null, "required": false,
"type": "int", "doc": null },
+ { "id": 3, "name": "f_long", "parent": null, "required": false,
"type": "long", "doc": null },
+ { "id": 4, "name": "f_float", "parent": null, "required": false,
"type": "float", "doc": null },
+ { "id": 5, "name": "f_double", "parent": null, "required": false,
"type": "double", "doc": null },
+ { "id": 6, "name": "f_date", "parent": null, "required": false,
"type": "date", "doc": null },
+ { "id": 7, "name": "f_time", "parent": null, "required": false,
"type": "time", "doc": null },
+ { "id": 8, "name": "f_timestamp", "parent": null, "required": false,
"type": "timestamp", "doc": null },
+ { "id": 9, "name": "f_timestamptz", "parent": null, "required":
false, "type": "timestamptz", "doc": null },
+ { "id": 10, "name": "f_string", "parent": null, "required": false,
"type": "string", "doc": null },
+ { "id": 11, "name": "f_uuid", "parent": null, "required": false,
"type": "uuid", "doc": null },
+ { "id": 12, "name": "f_fixed", "parent": null, "required": false,
"type": { "type": "fixed", "length": 16 }, "doc": null },
+ { "id": 13, "name": "f_binary", "parent": null, "required": false,
"type": "binary", "doc": null },
+ { "id": 14, "name": "f_decimal", "parent": null, "required": false,
"type": { "type": "decimal", "precision": 9, "scale": 2 }, "doc": null }
+ ]
+ }
+ },
+ {
+ "id": "decimal-max-precision",
+ "valid": true,
+ "input": {
+ "type": "struct",
+ "schema-id": 0,
+ "fields": [
+ {
+ "id": 1,
+ "name": "id",
+ "required": true,
+ "type": "long"
+ },
+ {
+ "id": 2,
+ "name": "amount",
+ "required": false,
+ "type": "decimal(38, 10)"
Review Comment:
Agreed this is a gap, but as noted above, I think we'll cover these cases in
#9
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]