X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ovsdb%2FSPECS;h=951c0976e54d46265e1705d67d14bee812f2e67b;hb=184b5de475ea6dcb91d4e89271303af04e75f7de;hp=326293c7171d3e3ca3c3336a69a94afb7c099f71;hpb=c5c7c7c5c0d379c49121d63b77067aa32bce22b7;p=openvswitch diff --git a/ovsdb/SPECS b/ovsdb/SPECS index 326293c7..951c0976 100644 --- a/ovsdb/SPECS +++ b/ovsdb/SPECS @@ -33,6 +33,11 @@ values. Additional notation is presented later. s that begin with _ are reserved to the implementation and may not be used by the user. + + + A JSON string that contains a version number that matches + [0-9]+\.[0-9]+\.[0-9]+ + A JSON true or false value. @@ -102,6 +107,8 @@ is represented by , as described below. A JSON object with the following members: "name": required + "version": required + "cksum": optional "tables": {: , ...} required The "name" identifies the database as a whole. It must be @@ -109,12 +116,23 @@ is represented by , as described below. operated on. The value of "tables" is a JSON object whose names are table names and whose values are 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. + A JSON object with the following members: "columns": {: , ...} required "maxRows": optional + "isRoot": optional + "indexes": [*] optional The value of "columns" is a JSON object whose names are column names and whose values are s. @@ -136,12 +154,37 @@ is represented by , as described below. 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 + in a given , 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". + + If "indexes" is specified, it must be an array of zero or more + s. A is an array of one or more strings, + each of which names a column. Each is a set of + columns whose values, taken together within any given row, must be + unique within the table. This is a "deferred" constraint, + enforced only at transaction commit time, after unreferenced rows + are deleted and dangling weak references are removed. Ephemeral + columns may not be part of indexes. @@ -151,12 +194,18 @@ is represented by , as described below. "ephemeral": optional "mutable": optional - The "type" specifies the type of data stored in this column. If - "ephemeral" is specified as true, then this column's values are + The "type" specifies the type of data stored in this column. + + If "ephemeral" is specified as true, then this column's values are not guaranteed to be durable; they may be lost when the database - restarts. If "mutable" is specified as false, then this column's - values may not be modified after they are initially set with the - "insert" operation. + restarts. A column whose type (either key or value) is a strong + reference to a table that is not part of the root set is always + durable, regardless of this value. (Otherwise, restarting the + database could lose entire rows.) + + If "mutable" is specified as false, then this column's values may + not be modified after they are initially set with the "insert" + operation. @@ -393,6 +442,16 @@ include at least the following: The number of rows in a table exceeds the maximum number permitted by the table's "maxRows" value (see ). + "error": "constraint violation" + + Two or more rows in a table had the same values in the columns + that comprise an index. + + "error": "resources exhausted" + "error": "I/O error" + + As described in the definition of above. + If "params" contains one or more "wait" operations, then the transaction may take an arbitrary amount of time to complete. The database implementation must be capable of accepting, executing, and @@ -663,7 +722,7 @@ Notation for the Wire Protocol 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 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