ovsdb: Make ovsdb_column_set_from_json() take table schema instead of table.
authorBen Pfaff <blp@nicira.com>
Wed, 1 Jun 2011 23:14:46 +0000 (16:14 -0700)
committerBen Pfaff <blp@nicira.com>
Mon, 6 Jun 2011 15:58:02 +0000 (08:58 -0700)
This function took a struct ovsdb_table but only used the 'schema' member.
An upcoming patch needs to parse a column set when only the schema is
available, so to prepare for that this patch changes
ovsdb_column_set_from_json() to only take the schema that it really needs.

ovsdb/column.c
ovsdb/column.h
ovsdb/execution.c
tests/test-ovsdb.c

index a22e1a237021dba1f4e242ff41a3e191f0d5869d..be346e4d6062f4c2150f089d8998a5549ec03278 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009, 2010 Nicira Networks
+/* Copyright (c) 2009, 2010, 2011 Nicira Networks
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -136,14 +136,14 @@ ovsdb_column_set_clone(struct ovsdb_column_set *new,
 
 struct ovsdb_error *
 ovsdb_column_set_from_json(const struct json *json,
-                           const struct ovsdb_table *table,
+                           const struct ovsdb_table_schema *schema,
                            struct ovsdb_column_set *set)
 {
     ovsdb_column_set_init(set);
     if (!json) {
         struct shash_node *node;
 
-        SHASH_FOR_EACH (node, &table->schema->columns) {
+        SHASH_FOR_EACH (node, &schema->columns) {
             const struct ovsdb_column *column = node->data;
             ovsdb_column_set_add(set, column);
         }
@@ -167,7 +167,7 @@ ovsdb_column_set_from_json(const struct json *json,
             }
 
             s = json->u.array.elems[i]->u.string;
-            column = shash_find_data(&table->schema->columns, s);
+            column = shash_find_data(&schema->columns, s);
             if (!column) {
                 error = ovsdb_syntax_error(json, NULL, "%s is not a valid "
                                            "column name", s);
index b6f324c0f5398ef6adfe2c6e6fcd3151e4862c7d..d90c12adbb4cc3d20a3a4ccac68211b8bcede226 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009, 2010 Nicira Networks
+/* Copyright (c) 2009, 2010, 2011 Nicira Networks
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -21,6 +21,7 @@
 #include "ovsdb-types.h"
 
 struct ovsdb_table;
+struct ovsdb_table_schema;
 
 /* A column or a column schema (currently there is no distinction). */
 struct ovsdb_column {
@@ -68,9 +69,9 @@ void ovsdb_column_set_init(struct ovsdb_column_set *);
 void ovsdb_column_set_destroy(struct ovsdb_column_set *);
 void ovsdb_column_set_clone(struct ovsdb_column_set *,
                             const struct ovsdb_column_set *);
-struct ovsdb_error *ovsdb_column_set_from_json(const struct json *,
-                                               const struct ovsdb_table *,
-                                               struct ovsdb_column_set *);
+struct ovsdb_error *ovsdb_column_set_from_json(
+    const struct json *, const struct ovsdb_table_schema *,
+    struct ovsdb_column_set *);
 struct json *ovsdb_column_set_to_json(const struct ovsdb_column_set *);
 
 void ovsdb_column_set_add(struct ovsdb_column_set *,
index cb1bec3eebba289f25a0d132fdbe4637f262a1fd..416016fd9ef3ff89758d6c87bd51653f6e54f51a 100644 (file)
@@ -364,10 +364,11 @@ ovsdb_execute_select(struct ovsdb_execution *x, struct ovsdb_parser *parser,
                                           &condition);
     }
     if (!error) {
-        error = ovsdb_column_set_from_json(columns_json, table, &columns);
+        error = ovsdb_column_set_from_json(columns_json, table->schema,
+                                           &columns);
     }
     if (!error) {
-        error = ovsdb_column_set_from_json(sort_json, table, &sort);
+        error = ovsdb_column_set_from_json(sort_json, table->schema, &sort);
     }
     if (!error) {
         struct ovsdb_row_set rows = OVSDB_ROW_SET_INITIALIZER;
@@ -606,7 +607,8 @@ ovsdb_execute_wait(struct ovsdb_execution *x, struct ovsdb_parser *parser,
                                           &condition);
     }
     if (!error) {
-        error = ovsdb_column_set_from_json(columns_json, table, &columns);
+        error = ovsdb_column_set_from_json(columns_json, table->schema,
+                                           &columns);
     }
     if (!error) {
         if (timeout) {
index 8fe1727671527d3647acd7a5b037880ab160719b..5b8f4519cb8bca095fe30310d9933d091420e48d 100644 (file)
@@ -1109,7 +1109,8 @@ do_query_distinct(int argc OVS_UNUSED, char *argv[])
 
     /* Parse column set. */
     json = parse_json(argv[4]);
-    check_ovsdb_error(ovsdb_column_set_from_json(json, table, &columns));
+    check_ovsdb_error(ovsdb_column_set_from_json(json, table->schema,
+                                                 &columns));
     json_destroy(json);
 
     /* Parse rows, add to table. */