diff mbox

[ovs-dev,2/3] ovsdb-idl: Avoid new expression.

Message ID 20170807180133.19988-3-joe@ovn.org
State Changes Requested
Headers show

Commit Message

Joe Stringer Aug. 7, 2017, 6:01 p.m. UTC
In C++, 'new' is a keyword. If this is used as the name for a field,
then C++ compilers can get confused about the context and fail to
compile references to such fields. Rename the field to 'new_' to avoid
this issue.

Signed-off-by: Joe Stringer <joe@ovn.org>
---
 lib/ovsdb-data.h         |  4 +--
 lib/ovsdb-idl-provider.h |  2 +-
 lib/ovsdb-idl.c          | 76 ++++++++++++++++++++++++------------------------
 3 files changed, 41 insertions(+), 41 deletions(-)

Comments

Gao Zhenyu Aug. 8, 2017, 7:46 a.m. UTC | #1
Thanks for working on it!

I  think new_ is not a good name. Could you please try to revise it?
like: old --> old_datum
       new -->new_datum

BTW, you also need to update 'new' in the description of struct
ovsdb_idl_row which in the top of lib/ovsdb-idl-provider.h


Thanks
Zhenyu Gao

2017-08-08 2:01 GMT+08:00 Joe Stringer <joe@ovn.org>:

> In C++, 'new' is a keyword. If this is used as the name for a field,
> then C++ compilers can get confused about the context and fail to
> compile references to such fields. Rename the field to 'new_' to avoid
> this issue.
>
> Signed-off-by: Joe Stringer <joe@ovn.org>
> ---
>  lib/ovsdb-data.h         |  4 +--
>  lib/ovsdb-idl-provider.h |  2 +-
>  lib/ovsdb-idl.c          | 76 ++++++++++++++++++++++++------
> ------------------
>  3 files changed, 41 insertions(+), 41 deletions(-)
>
> diff --git a/lib/ovsdb-data.h b/lib/ovsdb-data.h
> index 1bf90d59c30f..521bc553897a 100644
> --- a/lib/ovsdb-data.h
> +++ b/lib/ovsdb-data.h
> @@ -222,10 +222,10 @@ void ovsdb_datum_subtract(struct ovsdb_datum *a,
>  /* Generate and apply diffs */
>  void ovsdb_datum_diff(struct ovsdb_datum *diff,
>                        const struct ovsdb_datum *old,
> -                      const struct ovsdb_datum *new,
> +                      const struct ovsdb_datum *new_,
>                        const struct ovsdb_type *type);
>
> -struct ovsdb_error *ovsdb_datum_apply_diff(struct ovsdb_datum *new,
> +struct ovsdb_error *ovsdb_datum_apply_diff(struct ovsdb_datum *new_,
>                                             const struct ovsdb_datum *old,
>                                             const struct ovsdb_datum *diff,
>                                             const struct ovsdb_type *type)
> diff --git a/lib/ovsdb-idl-provider.h b/lib/ovsdb-idl-provider.h
> index 09cff143f07f..3578f89cb07c 100644
> --- a/lib/ovsdb-idl-provider.h
> +++ b/lib/ovsdb-idl-provider.h
> @@ -70,7 +70,7 @@ struct ovsdb_idl_row {
>      struct ovsdb_datum *old;    /* Committed data (null if orphaned). */
>
>      /* Transactional data. */
> -    struct ovsdb_datum *new;    /* Modified data (null to delete row). */
> +    struct ovsdb_datum *new_;    /* Modified data (null to delete row). */
>      unsigned long int *prereqs; /* Bitmap of columns to verify in "old".
> */
>      unsigned long int *written; /* Bitmap of columns from "new" to write.
> */
>      struct hmap_node txn_node;  /* Node in ovsdb_idl_txn's list. */
> diff --git a/lib/ovsdb-idl.c b/lib/ovsdb-idl.c
> index d0ecad7cf097..41f98a7df74c 100644
> --- a/lib/ovsdb-idl.c
> +++ b/lib/ovsdb-idl.c
> @@ -761,11 +761,11 @@ ovsdb_idl_check_consistency(const struct ovsdb_idl
> *idl)
>          const struct ovsdb_idl_row *row;
>          HMAP_FOR_EACH (row, hmap_node, &table->rows) {
>              size_t n_dsts = 0;
> -            if (row->new) {
> +            if (row->new_) {
>                  size_t n_columns = shash_count(&row->table->columns);
>                  for (size_t j = 0; j < n_columns; j++) {
>                      const struct ovsdb_type *type =
> &class->columns[j].type;
> -                    const struct ovsdb_datum *datum = &row->new[j];
> +                    const struct ovsdb_datum *datum = &row->new_[j];
>                      add_row_references(&type->key,
>                                         datum->keys, datum->n, &row->uuid,
>                                         &dsts, &n_dsts, &allocated_dsts);
> @@ -1978,7 +1978,7 @@ ovsdb_idl_row_apply_diff(struct ovsdb_idl_row *row,
>  static bool
>  ovsdb_idl_row_is_orphan(const struct ovsdb_idl_row *row)
>  {
> -    return !row->old && !row->new;
> +    return !row->old && !row->new_;
>  }
>
>  /* Returns true if 'row' is conceptually part of the database as modified
> by
> @@ -2000,7 +2000,7 @@ ovsdb_idl_row_is_orphan(const struct ovsdb_idl_row
> *row)
>  static bool
>  ovsdb_idl_row_exists(const struct ovsdb_idl_row *row)
>  {
> -    return row->new != NULL;
> +    return row->new_ != NULL;
>  }
>
>  static void
> @@ -2030,7 +2030,7 @@ ovsdb_idl_row_unparse(struct ovsdb_idl_row *row)
>  static void
>  ovsdb_idl_row_clear_old(struct ovsdb_idl_row *row)
>  {
> -    ovs_assert(row->old == row->new);
> +    ovs_assert(row->old == row->new_);
>      if (!ovsdb_idl_row_is_orphan(row)) {
>          const struct ovsdb_idl_table_class *class = row->table->class_;
>          size_t i;
> @@ -2039,28 +2039,28 @@ ovsdb_idl_row_clear_old(struct ovsdb_idl_row *row)
>              ovsdb_datum_destroy(&row->old[i], &class->columns[i].type);
>          }
>          free(row->old);
> -        row->old = row->new = NULL;
> +        row->old = row->new_ = NULL;
>      }
>  }
>
>  static void
>  ovsdb_idl_row_clear_new(struct ovsdb_idl_row *row)
>  {
> -    if (row->old != row->new) {
> -        if (row->new) {
> +    if (row->old != row->new_) {
> +        if (row->new_) {
>              const struct ovsdb_idl_table_class *class =
> row->table->class_;
>              size_t i;
>
>              if (row->written) {
>                  BITMAP_FOR_EACH_1 (i, class->n_columns, row->written) {
> -                    ovsdb_datum_destroy(&row->new[i],
> &class->columns[i].type);
> +                    ovsdb_datum_destroy(&row->new_[i],
> &class->columns[i].type);
>                  }
>              }
> -            free(row->new);
> +            free(row->new_);
>              free(row->written);
>              row->written = NULL;
>          }
> -        row->new = row->old;
> +        row->new_ = row->old;
>      }
>  }
>
> @@ -2226,8 +2226,8 @@ ovsdb_idl_insert_row(struct ovsdb_idl_row *row,
> const struct json *row_json)
>      const struct ovsdb_idl_table_class *class = row->table->class_;
>      size_t i;
>
> -    ovs_assert(!row->old && !row->new);
> -    row->old = row->new = xmalloc(class->n_columns * sizeof *row->old);
> +    ovs_assert(!row->old && !row->new_);
> +    row->old = row->new_ = xmalloc(class->n_columns * sizeof *row->old);
>      for (i = 0; i < class->n_columns; i++) {
>          ovsdb_datum_init_default(&row->old[i], &class->columns[i].type);
>      }
> @@ -2330,7 +2330,7 @@ ovsdb_idl_get_row_arc(struct ovsdb_idl_row *src,
>           *
>           * Just return the destination row, if there is one and it has
> not been
>           * deleted. */
> -        if (dst && (hmap_node_is_null(&dst->txn_node) || dst->new)) {
> +        if (dst && (hmap_node_is_null(&dst->txn_node) || dst->new_)) {
>              return dst;
>          }
>          return NULL;
> @@ -2427,11 +2427,11 @@ ovsdb_idl_read(const struct ovsdb_idl_row *row,
>      class = row->table->class_;
>      column_idx = column - class->columns;
>
> -    ovs_assert(row->new != NULL);
> +    ovs_assert(row->new_ != NULL);
>      ovs_assert(column_idx < class->n_columns);
>
>      if (row->written && bitmap_is_set(row->written, column_idx)) {
> -        return &row->new[column_idx];
> +        return &row->new_[column_idx];
>      } else if (row->old) {
>          return &row->old[column_idx];
>      } else {
> @@ -2470,7 +2470,7 @@ bool
>  ovsdb_idl_is_mutable(const struct ovsdb_idl_row *row,
>                       const struct ovsdb_idl_column *column)
>  {
> -    return column->mutable || (row->new && !row->old);
> +    return column->mutable || (row->new_ && !row->old);
>  }
>
>  /* Returns false if 'row' was obtained from the IDL, true if it was
> initialized
> @@ -2699,7 +2699,7 @@ substitute_uuids(struct json *json, const struct
> ovsdb_idl_txn *txn)
>              const struct ovsdb_idl_row *row;
>
>              row = ovsdb_idl_txn_get_row(txn, &uuid);
> -            if (row && !row->old && row->new) {
> +            if (row && !row->old && row->new_) {
>                  json_destroy(json);
>
>                  return json_array_create_2(
> @@ -2788,8 +2788,8 @@ ovsdb_idl_txn_extract_mutations(struct
> ovsdb_idl_row *row,
>              value_type = column->type.value.type;
>
>              /* Get the value to be changed */
> -            if (row->new && row->written && bitmap_is_set(row->written,idx))
> {
> -                old_datum = &row->new[idx];
> +            if (row->new_ && row->written && bitmap_is_set(row->written,idx))
> {
> +                old_datum = &row->new_[idx];
>              } else if (row->old != NULL) {
>                  old_datum = &row->old[idx];
>              } else {
> @@ -2896,8 +2896,8 @@ ovsdb_idl_txn_extract_mutations(struct
> ovsdb_idl_row *row,
>              key_type = column->type.key.type;
>
>              /* Get the value to be changed */
> -            if (row->new && row->written && bitmap_is_set(row->written,idx))
> {
> -                old_datum = &row->new[idx];
> +            if (row->new_ && row->written && bitmap_is_set(row->written,idx))
> {
> +                old_datum = &row->new_[idx];
>              } else if (row->old != NULL) {
>                  old_datum = &row->old[idx];
>              } else {
> @@ -3072,7 +3072,7 @@ ovsdb_idl_txn_commit(struct ovsdb_idl_txn *txn)
>      HMAP_FOR_EACH (row, txn_node, &txn->txn_rows) {
>          const struct ovsdb_idl_table_class *class = row->table->class_;
>
> -        if (!row->new) {
> +        if (!row->new_) {
>              if (class->is_root) {
>                  struct json *op = json_object_create();
>                  json_object_put_string(op, "op", "delete");
> @@ -3083,7 +3083,7 @@ ovsdb_idl_txn_commit(struct ovsdb_idl_txn *txn)
>              } else {
>                  /* Let ovsdb-server decide whether to really delete it. */
>              }
> -        } else if (row->old != row->new) {
> +        } else if (row->old != row->new_) {
>              struct json *row_json;
>              struct json *op;
>              size_t idx;
> @@ -3118,11 +3118,11 @@ ovsdb_idl_txn_commit(struct ovsdb_idl_txn *txn)
>
>  &class->columns[idx];
>
>                      if (row->old
> -                        || !ovsdb_datum_is_default(&row->new[idx],
> +                        || !ovsdb_datum_is_default(&row->new_[idx],
>                                                    &column->type)) {
>                          json_object_put(row_json, column->name,
>                                          substitute_uuids(
> -                                            ovsdb_datum_to_json(&row->new[
> idx],
> +                                            ovsdb_datum_to_json(&row->new_
> [idx],
>
>  &column->type),
>                                              txn));
>
> @@ -3131,7 +3131,7 @@ ovsdb_idl_txn_commit(struct ovsdb_idl_txn *txn)
>                           * or transactions would become nonatomic (see
> the big
>                           * comment inside ovsdb_idl_txn_write()). */
>                          if (!any_updates && row->old &&
> -                            !ovsdb_datum_equals(&row->old[idx],
> &row->new[idx],
> +                            !ovsdb_datum_equals(&row->old[idx],
> &row->new_[idx],
>                                                  &column->type)) {
>                              any_updates = true;
>                          }
> @@ -3370,7 +3370,7 @@ ovsdb_idl_txn_write__(const struct ovsdb_idl_row
> *row_,
>      column_idx = column - class->columns;
>      write_only = row->table->modes[column_idx] == OVSDB_IDL_MONITOR;
>
> -    ovs_assert(row->new != NULL);
> +    ovs_assert(row->new_ != NULL);
>      ovs_assert(column_idx < class->n_columns);
>      ovs_assert(row->old == NULL ||
>                 row->table->modes[column_idx] & OVSDB_IDL_MONITOR);
> @@ -3401,24 +3401,24 @@ ovsdb_idl_txn_write__(const struct ovsdb_idl_row
> *row_,
>          hmap_insert(&row->table->idl->txn->txn_rows, &row->txn_node,
>                      uuid_hash(&row->uuid));
>      }
> -    if (row->old == row->new) {
> -        row->new = xmalloc(class->n_columns * sizeof *row->new);
> +    if (row->old == row->new_) {
> +        row->new_ = xmalloc(class->n_columns * sizeof *row->new_);
>      }
>      if (!row->written) {
>          row->written = bitmap_allocate(class->n_columns);
>      }
>      if (bitmap_is_set(row->written, column_idx)) {
> -        ovsdb_datum_destroy(&row->new[column_idx], &column->type);
> +        ovsdb_datum_destroy(&row->new_[column_idx], &column->type);
>      } else {
>          bitmap_set1(row->written, column_idx);
>      }
>      if (owns_datum) {
> -        row->new[column_idx] = *datum;
> +        row->new_[column_idx] = *datum;
>      } else {
> -        ovsdb_datum_clone(&row->new[column_idx], datum, &column->type);
> +        ovsdb_datum_clone(&row->new_[column_idx], datum, &column->type);
>      }
>      (column->unparse)(row);
> -    (column->parse)(row, &row->new[column_idx]);
> +    (column->parse)(row, &row->new_[column_idx]);
>      return;
>
>  discard_datum:
> @@ -3511,7 +3511,7 @@ ovsdb_idl_txn_verify(const struct ovsdb_idl_row
> *row_,
>      class = row->table->class_;
>      column_idx = column - class->columns;
>
> -    ovs_assert(row->new != NULL);
> +    ovs_assert(row->new_ != NULL);
>      ovs_assert(row->old == NULL ||
>                 row->table->modes[column_idx] & OVSDB_IDL_MONITOR);
>      if (!row->old
> @@ -3545,7 +3545,7 @@ ovsdb_idl_txn_delete(const struct ovsdb_idl_row
> *row_)
>          return;
>      }
>
> -    ovs_assert(row->new != NULL);
> +    ovs_assert(row->new_ != NULL);
>      if (!row->old) {
>          ovsdb_idl_row_unparse(row);
>          ovsdb_idl_row_clear_new(row);
> @@ -3560,7 +3560,7 @@ ovsdb_idl_txn_delete(const struct ovsdb_idl_row
> *row_)
>                      uuid_hash(&row->uuid));
>      }
>      ovsdb_idl_row_clear_new(row);
> -    row->new = NULL;
> +    row->new_ = NULL;
>  }
>
>  /* Inserts and returns a new row in the table with the specified 'class'
> in the
> @@ -3590,7 +3590,7 @@ ovsdb_idl_txn_insert(struct ovsdb_idl_txn *txn,
>      }
>
>      row->table = ovsdb_idl_table_from_class(txn->idl, class);
> -    row->new = xmalloc(class->n_columns * sizeof *row->new);
> +    row->new_ = xmalloc(class->n_columns * sizeof *row->new_);
>      hmap_insert(&row->table->rows, &row->hmap_node,
> uuid_hash(&row->uuid));
>      hmap_insert(&txn->txn_rows, &row->txn_node, uuid_hash(&row->uuid));
>      return row;
> --
> 2.13.3
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
Joe Stringer Aug. 9, 2017, 12:05 a.m. UTC | #2
On 8 August 2017 at 00:46, Gao Zhenyu <sysugaozhenyu@gmail.com> wrote:
> Thanks for working on it!
>
> I  think new_ is not a good name. Could you please try to revise it?
> like: old --> old_datum
>        new -->new_datum

Sure thing, that's a better name.

> BTW, you also need to update 'new' in the description of struct
> ovsdb_idl_row which in the top of lib/ovsdb-idl-provider.h

Good spotting. I'll wait a little while to see if there is any more
feedback, then respin the series to address these points.

Cheers,
Joe
diff mbox

Patch

diff --git a/lib/ovsdb-data.h b/lib/ovsdb-data.h
index 1bf90d59c30f..521bc553897a 100644
--- a/lib/ovsdb-data.h
+++ b/lib/ovsdb-data.h
@@ -222,10 +222,10 @@  void ovsdb_datum_subtract(struct ovsdb_datum *a,
 /* Generate and apply diffs */
 void ovsdb_datum_diff(struct ovsdb_datum *diff,
                       const struct ovsdb_datum *old,
-                      const struct ovsdb_datum *new,
+                      const struct ovsdb_datum *new_,
                       const struct ovsdb_type *type);
 
-struct ovsdb_error *ovsdb_datum_apply_diff(struct ovsdb_datum *new,
+struct ovsdb_error *ovsdb_datum_apply_diff(struct ovsdb_datum *new_,
                                            const struct ovsdb_datum *old,
                                            const struct ovsdb_datum *diff,
                                            const struct ovsdb_type *type)
diff --git a/lib/ovsdb-idl-provider.h b/lib/ovsdb-idl-provider.h
index 09cff143f07f..3578f89cb07c 100644
--- a/lib/ovsdb-idl-provider.h
+++ b/lib/ovsdb-idl-provider.h
@@ -70,7 +70,7 @@  struct ovsdb_idl_row {
     struct ovsdb_datum *old;    /* Committed data (null if orphaned). */
 
     /* Transactional data. */
-    struct ovsdb_datum *new;    /* Modified data (null to delete row). */
+    struct ovsdb_datum *new_;    /* Modified data (null to delete row). */
     unsigned long int *prereqs; /* Bitmap of columns to verify in "old". */
     unsigned long int *written; /* Bitmap of columns from "new" to write. */
     struct hmap_node txn_node;  /* Node in ovsdb_idl_txn's list. */
diff --git a/lib/ovsdb-idl.c b/lib/ovsdb-idl.c
index d0ecad7cf097..41f98a7df74c 100644
--- a/lib/ovsdb-idl.c
+++ b/lib/ovsdb-idl.c
@@ -761,11 +761,11 @@  ovsdb_idl_check_consistency(const struct ovsdb_idl *idl)
         const struct ovsdb_idl_row *row;
         HMAP_FOR_EACH (row, hmap_node, &table->rows) {
             size_t n_dsts = 0;
-            if (row->new) {
+            if (row->new_) {
                 size_t n_columns = shash_count(&row->table->columns);
                 for (size_t j = 0; j < n_columns; j++) {
                     const struct ovsdb_type *type = &class->columns[j].type;
-                    const struct ovsdb_datum *datum = &row->new[j];
+                    const struct ovsdb_datum *datum = &row->new_[j];
                     add_row_references(&type->key,
                                        datum->keys, datum->n, &row->uuid,
                                        &dsts, &n_dsts, &allocated_dsts);
@@ -1978,7 +1978,7 @@  ovsdb_idl_row_apply_diff(struct ovsdb_idl_row *row,
 static bool
 ovsdb_idl_row_is_orphan(const struct ovsdb_idl_row *row)
 {
-    return !row->old && !row->new;
+    return !row->old && !row->new_;
 }
 
 /* Returns true if 'row' is conceptually part of the database as modified by
@@ -2000,7 +2000,7 @@  ovsdb_idl_row_is_orphan(const struct ovsdb_idl_row *row)
 static bool
 ovsdb_idl_row_exists(const struct ovsdb_idl_row *row)
 {
-    return row->new != NULL;
+    return row->new_ != NULL;
 }
 
 static void
@@ -2030,7 +2030,7 @@  ovsdb_idl_row_unparse(struct ovsdb_idl_row *row)
 static void
 ovsdb_idl_row_clear_old(struct ovsdb_idl_row *row)
 {
-    ovs_assert(row->old == row->new);
+    ovs_assert(row->old == row->new_);
     if (!ovsdb_idl_row_is_orphan(row)) {
         const struct ovsdb_idl_table_class *class = row->table->class_;
         size_t i;
@@ -2039,28 +2039,28 @@  ovsdb_idl_row_clear_old(struct ovsdb_idl_row *row)
             ovsdb_datum_destroy(&row->old[i], &class->columns[i].type);
         }
         free(row->old);
-        row->old = row->new = NULL;
+        row->old = row->new_ = NULL;
     }
 }
 
 static void
 ovsdb_idl_row_clear_new(struct ovsdb_idl_row *row)
 {
-    if (row->old != row->new) {
-        if (row->new) {
+    if (row->old != row->new_) {
+        if (row->new_) {
             const struct ovsdb_idl_table_class *class = row->table->class_;
             size_t i;
 
             if (row->written) {
                 BITMAP_FOR_EACH_1 (i, class->n_columns, row->written) {
-                    ovsdb_datum_destroy(&row->new[i], &class->columns[i].type);
+                    ovsdb_datum_destroy(&row->new_[i], &class->columns[i].type);
                 }
             }
-            free(row->new);
+            free(row->new_);
             free(row->written);
             row->written = NULL;
         }
-        row->new = row->old;
+        row->new_ = row->old;
     }
 }
 
@@ -2226,8 +2226,8 @@  ovsdb_idl_insert_row(struct ovsdb_idl_row *row, const struct json *row_json)
     const struct ovsdb_idl_table_class *class = row->table->class_;
     size_t i;
 
-    ovs_assert(!row->old && !row->new);
-    row->old = row->new = xmalloc(class->n_columns * sizeof *row->old);
+    ovs_assert(!row->old && !row->new_);
+    row->old = row->new_ = xmalloc(class->n_columns * sizeof *row->old);
     for (i = 0; i < class->n_columns; i++) {
         ovsdb_datum_init_default(&row->old[i], &class->columns[i].type);
     }
@@ -2330,7 +2330,7 @@  ovsdb_idl_get_row_arc(struct ovsdb_idl_row *src,
          *
          * Just return the destination row, if there is one and it has not been
          * deleted. */
-        if (dst && (hmap_node_is_null(&dst->txn_node) || dst->new)) {
+        if (dst && (hmap_node_is_null(&dst->txn_node) || dst->new_)) {
             return dst;
         }
         return NULL;
@@ -2427,11 +2427,11 @@  ovsdb_idl_read(const struct ovsdb_idl_row *row,
     class = row->table->class_;
     column_idx = column - class->columns;
 
-    ovs_assert(row->new != NULL);
+    ovs_assert(row->new_ != NULL);
     ovs_assert(column_idx < class->n_columns);
 
     if (row->written && bitmap_is_set(row->written, column_idx)) {
-        return &row->new[column_idx];
+        return &row->new_[column_idx];
     } else if (row->old) {
         return &row->old[column_idx];
     } else {
@@ -2470,7 +2470,7 @@  bool
 ovsdb_idl_is_mutable(const struct ovsdb_idl_row *row,
                      const struct ovsdb_idl_column *column)
 {
-    return column->mutable || (row->new && !row->old);
+    return column->mutable || (row->new_ && !row->old);
 }
 
 /* Returns false if 'row' was obtained from the IDL, true if it was initialized
@@ -2699,7 +2699,7 @@  substitute_uuids(struct json *json, const struct ovsdb_idl_txn *txn)
             const struct ovsdb_idl_row *row;
 
             row = ovsdb_idl_txn_get_row(txn, &uuid);
-            if (row && !row->old && row->new) {
+            if (row && !row->old && row->new_) {
                 json_destroy(json);
 
                 return json_array_create_2(
@@ -2788,8 +2788,8 @@  ovsdb_idl_txn_extract_mutations(struct ovsdb_idl_row *row,
             value_type = column->type.value.type;
 
             /* Get the value to be changed */
-            if (row->new && row->written && bitmap_is_set(row->written,idx)) {
-                old_datum = &row->new[idx];
+            if (row->new_ && row->written && bitmap_is_set(row->written,idx)) {
+                old_datum = &row->new_[idx];
             } else if (row->old != NULL) {
                 old_datum = &row->old[idx];
             } else {
@@ -2896,8 +2896,8 @@  ovsdb_idl_txn_extract_mutations(struct ovsdb_idl_row *row,
             key_type = column->type.key.type;
 
             /* Get the value to be changed */
-            if (row->new && row->written && bitmap_is_set(row->written,idx)) {
-                old_datum = &row->new[idx];
+            if (row->new_ && row->written && bitmap_is_set(row->written,idx)) {
+                old_datum = &row->new_[idx];
             } else if (row->old != NULL) {
                 old_datum = &row->old[idx];
             } else {
@@ -3072,7 +3072,7 @@  ovsdb_idl_txn_commit(struct ovsdb_idl_txn *txn)
     HMAP_FOR_EACH (row, txn_node, &txn->txn_rows) {
         const struct ovsdb_idl_table_class *class = row->table->class_;
 
-        if (!row->new) {
+        if (!row->new_) {
             if (class->is_root) {
                 struct json *op = json_object_create();
                 json_object_put_string(op, "op", "delete");
@@ -3083,7 +3083,7 @@  ovsdb_idl_txn_commit(struct ovsdb_idl_txn *txn)
             } else {
                 /* Let ovsdb-server decide whether to really delete it. */
             }
-        } else if (row->old != row->new) {
+        } else if (row->old != row->new_) {
             struct json *row_json;
             struct json *op;
             size_t idx;
@@ -3118,11 +3118,11 @@  ovsdb_idl_txn_commit(struct ovsdb_idl_txn *txn)
                                                         &class->columns[idx];
 
                     if (row->old
-                        || !ovsdb_datum_is_default(&row->new[idx],
+                        || !ovsdb_datum_is_default(&row->new_[idx],
                                                   &column->type)) {
                         json_object_put(row_json, column->name,
                                         substitute_uuids(
-                                            ovsdb_datum_to_json(&row->new[idx],
+                                            ovsdb_datum_to_json(&row->new_[idx],
                                                                 &column->type),
                                             txn));
 
@@ -3131,7 +3131,7 @@  ovsdb_idl_txn_commit(struct ovsdb_idl_txn *txn)
                          * or transactions would become nonatomic (see the big
                          * comment inside ovsdb_idl_txn_write()). */
                         if (!any_updates && row->old &&
-                            !ovsdb_datum_equals(&row->old[idx], &row->new[idx],
+                            !ovsdb_datum_equals(&row->old[idx], &row->new_[idx],
                                                 &column->type)) {
                             any_updates = true;
                         }
@@ -3370,7 +3370,7 @@  ovsdb_idl_txn_write__(const struct ovsdb_idl_row *row_,
     column_idx = column - class->columns;
     write_only = row->table->modes[column_idx] == OVSDB_IDL_MONITOR;
 
-    ovs_assert(row->new != NULL);
+    ovs_assert(row->new_ != NULL);
     ovs_assert(column_idx < class->n_columns);
     ovs_assert(row->old == NULL ||
                row->table->modes[column_idx] & OVSDB_IDL_MONITOR);
@@ -3401,24 +3401,24 @@  ovsdb_idl_txn_write__(const struct ovsdb_idl_row *row_,
         hmap_insert(&row->table->idl->txn->txn_rows, &row->txn_node,
                     uuid_hash(&row->uuid));
     }
-    if (row->old == row->new) {
-        row->new = xmalloc(class->n_columns * sizeof *row->new);
+    if (row->old == row->new_) {
+        row->new_ = xmalloc(class->n_columns * sizeof *row->new_);
     }
     if (!row->written) {
         row->written = bitmap_allocate(class->n_columns);
     }
     if (bitmap_is_set(row->written, column_idx)) {
-        ovsdb_datum_destroy(&row->new[column_idx], &column->type);
+        ovsdb_datum_destroy(&row->new_[column_idx], &column->type);
     } else {
         bitmap_set1(row->written, column_idx);
     }
     if (owns_datum) {
-        row->new[column_idx] = *datum;
+        row->new_[column_idx] = *datum;
     } else {
-        ovsdb_datum_clone(&row->new[column_idx], datum, &column->type);
+        ovsdb_datum_clone(&row->new_[column_idx], datum, &column->type);
     }
     (column->unparse)(row);
-    (column->parse)(row, &row->new[column_idx]);
+    (column->parse)(row, &row->new_[column_idx]);
     return;
 
 discard_datum:
@@ -3511,7 +3511,7 @@  ovsdb_idl_txn_verify(const struct ovsdb_idl_row *row_,
     class = row->table->class_;
     column_idx = column - class->columns;
 
-    ovs_assert(row->new != NULL);
+    ovs_assert(row->new_ != NULL);
     ovs_assert(row->old == NULL ||
                row->table->modes[column_idx] & OVSDB_IDL_MONITOR);
     if (!row->old
@@ -3545,7 +3545,7 @@  ovsdb_idl_txn_delete(const struct ovsdb_idl_row *row_)
         return;
     }
 
-    ovs_assert(row->new != NULL);
+    ovs_assert(row->new_ != NULL);
     if (!row->old) {
         ovsdb_idl_row_unparse(row);
         ovsdb_idl_row_clear_new(row);
@@ -3560,7 +3560,7 @@  ovsdb_idl_txn_delete(const struct ovsdb_idl_row *row_)
                     uuid_hash(&row->uuid));
     }
     ovsdb_idl_row_clear_new(row);
-    row->new = NULL;
+    row->new_ = NULL;
 }
 
 /* Inserts and returns a new row in the table with the specified 'class' in the
@@ -3590,7 +3590,7 @@  ovsdb_idl_txn_insert(struct ovsdb_idl_txn *txn,
     }
 
     row->table = ovsdb_idl_table_from_class(txn->idl, class);
-    row->new = xmalloc(class->n_columns * sizeof *row->new);
+    row->new_ = xmalloc(class->n_columns * sizeof *row->new_);
     hmap_insert(&row->table->rows, &row->hmap_node, uuid_hash(&row->uuid));
     hmap_insert(&txn->txn_rows, &row->txn_node, uuid_hash(&row->uuid));
     return row;