3 (MetadataTypes.library_obj_tbl,`RefObj) ::
4 (MetadataTypes.library_sort_tbl,`RefSort) ::
5 (MetadataTypes.library_rel_tbl,`RefRel) ::
6 (MetadataTypes.library_name_tbl,`ObjectName) ::
7 (* (MetadataTypes.library_???_tbl,`Owners) :: *)
8 (MetadataTypes.library_count_tbl,`Count) :: []
11 prerr_string "\nusage:";
12 prerr_string ("\t" ^ argv_o ^ " [-index] tablename[=rename]\n");
13 prerr_string ("\t" ^ argv_o ^ " [-index] all\n\n");
14 prerr_string "known tables:";
15 List.iter (fun (n,_) -> prerr_string (" " ^ n)) map;
18 let eq_RE = Str.regexp "="
22 let parts = Str.split eq_RE s in
23 let len = List.length parts in
24 assert (len = 1 || len = 2);
25 if len = 1 then (s,s) else (List.nth parts 0, List.nth parts 1))
28 let destructor_RE = Str.regexp "table_destructor\\(\\|\\.opt\\)$"
30 let am_i_destructor () =
32 let _ = Str.search_forward destructor_RE Sys.argv.(0) 0 in true
33 with Not_found -> false
36 let len = Array.length Sys.argv in
45 if am_i_destructor () then
46 (SqlStatements.drop_tables,SqlStatements.drop_indexes)
48 (SqlStatements.create_tables,SqlStatements.create_indexes)
50 let from, index = if Sys.argv.(1) = "-index" then 2,true else 1,false in
51 let todo = Array.to_list (Array.sub Sys.argv from (len - from)) in
52 let todo = match todo with ["all"] -> List.map fst map | todo -> todo in
53 let todo = parse_args todo in
54 let todo = List.map (fun (x,name) -> name, (List.assoc x map)) todo in
55 print_endline (String.concat "\n" (tab todo));
57 print_endline (String.concat "\n" (idx todo))