The following schemas present various examples of schema matching. Some have matching schemas, while others do not.
/*fail due to name of symbol mismatch*/
SELECT SchemaMatch(
'{ "type": "enum",
"name": "Suit",
"symbols" : ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
}'
,
'{ "type": "enum",
"name": "Suits",
"symbols" : ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
}');
Result:
> 0
/*fail due to structural mismatch*/
SELECT SchemaMatch(
'{ "type": "enum",
"name": "Suit",
"symbols" : ["SPADES", "HEARTS", "DIAMONDS", "CLUBS"]
}'
,
'{ "type" : "array",
"items" : {
"type": "record",
"name": "test",
"doc": "this is unique01",
"fields" : [
{"name": "a", "type": "long"},
{"name": "b", "type": "string"}
]
}}');
Result:
> 0
/*success - doc is ignored, ordering of names does not matter, long promotes to double, and int promotes to float*/
SELECT SchemaMatch(
'{ "type" : "array",
"items" : {
"type": "record",
"name": "test",
"doc": "this is unique01",
"fields" : [
{"name": "a", "type": "long"},
{"name": "b", "type": "int"}
]
}}',
'{ "type" : "array",
"items" : {
"type": "record",
"name": "test",
"doc": "this is unique02",
"fields" : [
{"name": "b", "type": "float"},
{"name": "a", "type": "double"}
]
}}');
Result:
> 1