let insert_index = fun ~name ~columns ~unique ->
validate_name_exn name;
match columns with
| [] ->
raise (Invalid_args "An index must contain at least one column")
| hd :: _ ->
let db = hd.col_table.ta_db in
assert
(not (List.exists
(fun c -> c.col_table.ta_db != db) (* Phys. eq *)
columns));
if index_by_name_opt db name <> None then
raise (Duplicated_name name);
let index = { idx_name = name;
idx_db = db;
idx_columns = columns;
idx_unique = unique; }
in
db.db_indexes <- db.db_indexes @ [index];
index