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 = sprintf "
53 CREATE INDEX %s_source ON %s (source);
54 CREATE INDEX %s_target ON %s (h_occurrence);
55 CREATE INDEX %s_position ON %s (h_position);
56 " name name name name name name
58 let sprintf_refSort_index name = sprintf "
59 CREATE INDEX %s_source ON %s (source);
62 let sprintf_objectName_index name = sprintf "
63 CREATE INDEX %s_value ON %s (value);
66 let sprintf_owners_index name = sprintf "
67 CREATE INDEX %s_owner ON %s (owner);
68 CREATE INDEX %s_source ON %s (source);
71 let sprintf_count_index name = sprintf "
72 CREATE INDEX %s_source ON %s (source);
73 CREATE INDEX %s_conclusion ON %s (conclusion);
74 CREATE INDEX %s_hypothesis ON %s (hypothesis);
75 CREATE INDEX %s_statement ON %s (statement);
76 " name name name name name name name name
78 let sprintf_refRel_index name = ""
82 let get_table_format t named =
84 | `RefObj -> sprintf_refObj_format named
85 | `RefSort -> sprintf_refSort_format named
86 | `RefRel -> sprintf_refRel_format named
87 | `ObjectName -> sprintf_objectName_format named
88 | `Owners -> sprintf_owners_format named
89 | `Count -> sprintf_count_format named
91 let get_index_format t named =
93 | `RefObj -> sprintf_refObj_index named
94 | `RefSort -> sprintf_refSort_index named
95 | `RefRel -> sprintf_refRel_index named
96 | `ObjectName -> sprintf_objectName_index named
97 | `Owners -> sprintf_owners_index named
98 | `Count -> sprintf_count_index named
100 let create_tables l =
101 List.fold_left (fun s (name,table) -> s ^ get_table_format table name) "" l
103 let create_indexes l =
104 List.fold_left (fun s (name,table) -> s ^ get_index_format table name) "" l