3 type tbl = [ `RefObj| `RefSort| `RefRel| `ObjectName| `Owners| `Count]
7 let sprintf_refObj_format name = [sprintf "
9 source varchar(255) binary not null,
10 h_occurrence varchar(255) binary not null,
11 h_position varchar(255) binary not null,
15 let sprintf_refSort_format name = [sprintf "
17 source varchar(255) binary not null,
18 h_position varchar(255) binary not null,
19 h_depth integer not null,
20 h_sort varchar(255) binary not null
23 let sprintf_refRel_format name = [sprintf "
25 source varchar(255) binary not null,
26 h_position varchar(255) binary not null,
27 h_depth integer not null
30 let sprintf_objectName_format name = [sprintf "
32 source varchar(255) binary not null,
33 value varchar(255) binary not null
36 let sprintf_owners_format name = [sprintf "
38 source varchar(255) binary not null,
39 owner varchar(255) binary not null
42 let sprintf_count_format name = [sprintf "
44 source varchar(255) binary unique not null,
45 conclusion smallint(6) not null,
46 hypothesis smallint(6) not null,
47 statement smallint(6) not null
52 let sprintf_refObj_index name = [
53 sprintf "CREATE INDEX %s_source ON %s (source);" name name ;
54 sprintf "CREATE INDEX %s_target ON %s (h_occurrence);" name name ;
55 sprintf "CREATE INDEX %s_position ON %s (h_position);" name name ]
57 let sprintf_refSort_index name = [sprintf "
58 CREATE INDEX %s_source ON %s (source);
61 let sprintf_objectName_index name = [
62 sprintf " CREATE INDEX %s_value ON %s (value);" name name]
64 let sprintf_owners_index name = [
65 sprintf "CREATE INDEX %s_owner ON %s (owner);" name name ;
66 sprintf "CREATE INDEX %s_source ON %s (source);" name name]
68 let sprintf_count_index name = [
69 sprintf "CREATE INDEX %s_source ON %s (source);" name name;
70 sprintf "CREATE INDEX %s_conclusion ON %s (conclusion);" name name;
71 sprintf "CREATE INDEX %s_hypothesis ON %s (hypothesis);" name name;
72 sprintf "CREATE INDEX %s_statement ON %s (statement);" name name]
75 let sprintf_refRel_index name = []
79 let get_table_format t named =
81 | `RefObj -> sprintf_refObj_format named
82 | `RefSort -> sprintf_refSort_format named
83 | `RefRel -> sprintf_refRel_format named
84 | `ObjectName -> sprintf_objectName_format named
85 | `Owners -> sprintf_owners_format named
86 | `Count -> sprintf_count_format named
88 let get_index_format t named =
90 | `RefObj -> sprintf_refObj_index named
91 | `RefSort -> sprintf_refSort_index named
92 | `RefRel -> sprintf_refRel_index named
93 | `ObjectName -> sprintf_objectName_index named
94 | `Owners -> sprintf_owners_index named
95 | `Count -> sprintf_count_index named
98 List.fold_left (fun s (name,table) -> s @ get_table_format table name) [] l
100 let create_indexes l =
101 List.fold_left (fun s (name,table) -> s @ get_index_format table name) [] l