vlog: Output configuration list in alphabetical order.
[openvswitch] / ovsdb / SPECS
index 3a9af9f39a7acd91ca67e79a38926aab680c2262..951c0976e54d46265e1705d67d14bee812f2e67b 100644 (file)
@@ -132,6 +132,7 @@ is represented by <database-schema>, as described below.
         "columns": {<id>: <column-schema>, ...}   required
         "maxRows": <integer>                      optional
         "isRoot": <boolean>                       optional
         "columns": {<id>: <column-schema>, ...}   required
         "maxRows": <integer>                      optional
         "isRoot": <boolean>                       optional
+        "indexes": [<column-set>*]                optional
 
     The value of "columns" is a JSON object whose names are column
     names and whose values are <column-schema>s.
 
     The value of "columns" is a JSON object whose names are column
     names and whose values are <column-schema>s.
@@ -176,6 +177,15 @@ is represented by <database-schema>, as described below.
     enforced after unreferenced rows are deleted from tables with a
     false "isRoot".
 
     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
+    <column-set>s.  A <column-set> is an array of one or more strings,
+    each of which names a column.  Each <column-set> 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.
+
 <column-schema>
 
     A JSON object with the following members:
 <column-schema>
 
     A JSON object with the following members:
@@ -184,12 +194,18 @@ is represented by <database-schema>, as described below.
         "ephemeral": <boolean>                    optional
         "mutable": <boolean>                      optional
 
         "ephemeral": <boolean>                    optional
         "mutable": <boolean>                      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
     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.
 
 <type>
 
 
 <type>
 
@@ -426,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 <table-schema>).
 
         The number of rows in a table exceeds the maximum number
         permitted by the table's "maxRows" value (see <table-schema>).
 
+    "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 <error> 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
 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