AT_BANNER([OVSDB -- schemas]) OVSDB_CHECK_POSITIVE_CPY([schema with valid refTables], [[parse-schema \ '{"name": "mydb", "version": "4.2.1", "tables": { "a": { "columns": { "map": { "type": { "key": { "type": "uuid", "refTable": "b"}, "value": { "type": "uuid", "refTable": "a"}}}}}, "b": { "columns": { "aRef": { "type": { "key": { "type": "uuid", "refTable": "a"}}}}}}}']], [[{"name":"mydb","tables":{"a":{"columns":{"map":{"type":{"key":{"refTable":"b","type":"uuid"},"value":{"refTable":"a","type":"uuid"}}}}},"b":{"columns":{"aRef":{"type":{"key":{"refTable":"a","type":"uuid"}}}}}},"version":"4.2.1"}]]) dnl Ephemeral strong references to root set tables are OK. dnl Ephemeral strong references to non-root set tables are forced to be dnl persistent. OVSDB_CHECK_POSITIVE_CPY([schema with ephemeral strong references], [[parse-schema \ '{"name": "mydb", "version": "4.2.1", "tables": { "a": { "columns": { "x": { "type": { "key": { "type": "uuid", "refTable": "b"}}, "ephemeral": true}, "y": { "type": { "key": { "type": "uuid", "refTable": "a"}}, "ephemeral": true}}}, "b": { "columns": { "aRef": { "type": { "key": { "type": "uuid", "refTable": "a"}}}}, "isRoot": true}}}']], [[{"name":"mydb","tables":{"a":{"columns":{"x":{"ephemeral":true,"type":{"key":{"refTable":"b","type":"uuid"}}},"y":{"type":{"key":{"refTable":"a","type":"uuid"}}}}},"b":{"columns":{"aRef":{"type":{"key":{"refTable":"a","type":"uuid"}}}},"isRoot":true}},"version":"4.2.1"}]]) dnl Immutable weak references are forced to be mutable. OVSDB_CHECK_POSITIVE_CPY([schema with immutable weak references], [[parse-schema \ '{"name": "mydb", "version": "4.2.1", "tables": { "a": { "columns": { "x": { "type": { "key": { "type": "uuid", "refTable": "a", "refType": "weak"}}, "mutable": false}}}}}']], [[{"name":"mydb","tables":{"a":{"columns":{"x":{"type":{"key":{"refTable":"a","refType":"weak","type":"uuid"}}}}}},"version":"4.2.1"}]]) dnl Schemas without version numbers are accepted for backward dnl compatibility, but this is a deprecated feature. OVSDB_CHECK_POSITIVE_CPY([schema without version number], [[parse-schema \ '{"name": "mydb", "tables": { "x": { "columns": { "y": { "type": "integer"}}}}}']], [{"name":"mydb","tables":{"x":{"columns":{"y":{"type":"integer"}}}}}]) OVSDB_CHECK_NEGATIVE_CPY([schema with invalid refTables], [[parse-schema \ '{"name": "mydb", "tables": { "a": { "columns": { "map": { "type": { "key": { "type": "uuid", "refTable": "c"}, "value": { "type": "uuid", "refTable": "a"}}}}}, "b": { "columns": { "aRef": { "type": { "key": { "type": "uuid", "refTable": "a"}}}}}}}']], [[syntax error: column map key refers to undefined table c]]) OVSDB_CHECK_NEGATIVE_CPY([schema with invalid version number], [[parse-schema \ '{"name": "mydb", "tables": { "x": { "columns": { "y": { "type": "integer"}}}}, "version": "xxx"}']], [[schema version "xxx" not in format x.y.z]])