OVSDB_CHECK_POSITIVE_CPY([schema with valid refTables],
[[parse-schema \
'{"name": "mydb",
+ "version": "4.2.1",
"tables": {
"a": {
"columns": {
"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"}}}}}}}]])
+ [[{"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 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 \
"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]])