ovsdb: Fix commit to disk of rows added to a table with all-default values.
authorBen Pfaff <blp@nicira.com>
Fri, 12 Feb 2010 19:13:24 +0000 (11:13 -0800)
committerBen Pfaff <blp@nicira.com>
Mon, 15 Feb 2010 19:28:39 +0000 (11:28 -0800)
ovsdb/file.c
tests/ovsdb-execution.at

index 716ea89c5c7ea2c01be234ef86dd75feac4394e6..31086af84cf04431f2bbafa3257d5997a39fddff 100644 (file)
@@ -254,7 +254,7 @@ ovsdb_file_replica_change_cb(const struct ovsdb_row *old,
     } else {
         struct shash_node *node;
 
-        row = NULL;
+        row = old ? NULL : json_object_create();
         SHASH_FOR_EACH (node, &new->table->schema->columns) {
             const struct ovsdb_column *column = node->data;
             const struct ovsdb_type *type = &column->type;
index ca155a1ebf3b8ebf866e179d6d503dac473f2d44..ed28b2a9d39cac2fe066b78c8bc5eaf4fae92f0b 100644 (file)
@@ -51,6 +51,22 @@ m4_define([OVSDB_CHECK_EXECUTION],
    AT_CLEANUP])
 
 m4_define([EXECUTION_EXAMPLES], [
+dnl At one point the "commit" code ignored new rows with all-default values,
+dnl so this checks for that problem.
+OVSDB_CHECK_EXECUTION([insert default row, query table],
+  [ORDINAL_SCHEMA], 
+  [[[["ordinals",
+      {"op": "insert",
+       "table": "ordinals",
+       "row": {}}]]],
+   [[["ordinals",
+      {"op": "select",
+       "table": "ordinals",
+       "where": []}]]]],
+  [[[{"uuid":["uuid","<0>"]}]
+[{"rows":[{"_uuid":["uuid","<0>"],"_version":["uuid","<1>"],"name":"","number":0}]}]
+]])
+
 OVSDB_CHECK_EXECUTION([insert row, query table],
   [ORDINAL_SCHEMA], 
   [[[["ordinals",