method update_display = fun iter ->
    let column = self#get_data ~row:iter in
      self#set ~row:iter ~column:c_string (column.SQL_db.col_name);
      self#set ~row:iter ~column:c_nullable
        (if column.SQL_db.col_nullable then "yes" else "no");
      begin
        let ty_s = SQL_ty.fullstring_of_type column.SQL_db.col_type
        and spec_tys_s =
          let strings =
            Dbf_misc.StringMap.fold
              (fun db ty acc -> (Printf.sprintf "%s: %s" db ty) :: acc)
              column.SQL_db.col_spec_ty []
          in
            Dbf_misc.join ~sep:", " ~to_string:(fun x -> x)
              strings
        in
          if not (Dbf_misc.StringMap.is_empty column.SQL_db.col_spec_ty) then
            self#set ~row:iter ~column:c_type
              (Printf.sprintf "%s [%s]" ty_s spec_tys_s)
          else
            self#set ~row:iter ~column:c_type ty_s
      end;
      self#set ~row:iter ~column:c_ocaml_ty
        (column.SQL_db.col_ocaml_ty);
      self#set ~row:iter ~column:c_options
        (SQL_db.string_of_spec_options column.SQL_db.col_spec_options)