<id>s that begin with _ are reserved to the implementation and may
not be used by the user.
+<version>
+
+ A JSON string that contains a version number that matches
+ [0-9]+\.[0-9]+\.[0-9]+
+
<boolean>
A JSON true or false value.
A JSON object with the following members:
"name": <id> required
+ "version": <version> required
+ "cksum": <string> optional
"tables": {<id>: <table-schema>, ...} required
The "name" identifies the database as a whole. It must be
operated on. The value of "tables" is a JSON object whose names
are table names and whose values are <table-schema>s.
+ The "version" reports the version of the database schema. Because
+ this is a recent addition to the schema format, OVSDB permits it
+ to be omitted, but future versions of OVSDB will require it to be
+ present. Open vSwitch semantics for "version" are described in
+ ovs-vswitchd.conf.db(5).
+
+ The "cksum" optionally reports an implementation-defined checksum
+ for the database schema.
+
<table-schema>
A JSON object with the following members:
"columns": {<id>: <column-schema>, ...} required
"maxRows": <integer> optional
+ "isRoot": <boolean> optional
The value of "columns" is a JSON object whose names are column
names and whose values are <column-schema>s.
the database process is stopped and then started again, each
"_version" also changes to a new random value.
+ If "isRoot" is omitted or specified as false, then any given row
+ in the table may exist only when there is at least one reference
+ to it, with refType "strong", from a different row (in the same
+ table or a different table). This is a "deferred" action:
+ unreferenced rows in the table are deleted just before transaction
+ commit. If "isRoot" is specified as true, then rows in the table
+ exist independent of any references (they can be thought of as
+ part of the "root set" in a garbage collector).
+
+ For compatibility with schemas created before "isRoot" was
+ introduced, if "isRoot" is omitted or false in every
+ <table-schema> in a given <database-schema>, then every table is
+ part of the root set.
+
If "maxRows" is specified, as a positive integer, it limits the
maximum number of rows that may be present in the table. This is
a "deferred" constraint, enforced only at transaction commit time
(see the "transact" request below). If "maxRows" is not
specified, the size of the table is limited only by the resources
- available to the database server.
+ available to the database server. "maxRows" constraints are
+ enforced after unreferenced rows are deleted from tables with a
+ false "isRoot".
<column-schema>
"minInteger": <integer> optional, integers only
"maxInteger": <integer> optional, integers only
"minReal": <real> optional, reals only
- "maxReal": <real> optional, reals only
+ "maxReal": <real> optional, reals only
"minLength": <integer> optional, strings only
"maxLength": <integer> optional, strings only
"refTable": <id> optional, uuids only
This JSON-RPC notification instructs the database server to
immediately complete or cancel the "transact" request whose "id" is
-the same as the notification's "params" value.
+the same as the notification's "params" value.
If the "transact" request can be completed immediately, then the
server sends a response in the form described for "transact", above.
A 2-element JSON array that represents the UUID of a row inserted
in an "insert" operation within the same transaction. The first
element of the array must be the string "named-uuid" and the
- second element should be the string specified as the "uuid-name"
+ second element should be the <id> specified as the "uuid-name"
for an "insert" operation within the same transaction. For
example, if an "insert" operation within this transaction
specifies a "uuid-name" of "myrow", the following <named-uuid>
column specified in "row".
The "_uuid" and "_version" columns of a table may not be directly
- updated with this operation. Columns designated read-only in the
+ updated with this operation. Columns designated read-only in the
schema also may not be updated.
The "count" member of the result specifies the number of rows
restarted later, after a change in the database makes it possible
for the operation to succeed. The client will not receive a
response until the operation permanently succeeds or fails.
-
+
If "until" is "!=", the sense of the test is negated. That is, as
long as the query on "table" specified by "where" and "columns"
returns "rows", the transaction will be rolled back and restarted