method set_tables = fun tables ->
    view.sv_view#set_model None;
    model#clear ();
    begin
      let append_columns = fun iter columns ->
        match columns with
          | [] ->
              ignore (model#append_data (D_String "No columns")
                        ~parent:iter ~color:"gray" ())
          | columns ->
              List.iter
                (fun c ->
                   ignore (model#append_data ~parent:iter (D_Column c) ()))
                columns
      in
        match tables with
          | [] ->
              ignore (model#append_data (D_String "No tables") ~color:"gray" ())
          | _ ->
              List.iter
                (fun t -> let iter = model#append_data (D_Table t) () in
                   append_columns iter (t.SQL_db.ta_columns))
                tables
    end;
    view.sv_view#set_model (Some model#coerce)