3 type tbl = [ `RefObj| `RefSort| `RefRel| `ObjectName| `Owners| `Count]
7 let sprintf_refObj_format name = [
8 sprintf "CREATE TABLE %s (
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 = [
16 sprintf "CREATE TABLE %s (
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 = [
24 sprintf "CREATE TABLE %s (
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 = [
31 sprintf "CREATE TABLE %s (
32 source varchar(255) binary not null,
33 value varchar(255) binary not null
36 let sprintf_owners_format name = [
37 sprintf "CREATE TABLE %s (
38 source varchar(255) binary not null,
39 owner varchar(255) binary not null
42 let sprintf_count_format name = [
43 sprintf "CREATE TABLE %s (
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
50 let sprintf_refObj_drop name = [sprintf "DROP TABLE %s;" name]
52 let sprintf_refSort_drop name = [sprintf "DROP TABLE %s;" name]
54 let sprintf_refRel_drop name = [sprintf "DROP TABLE %s;" name]
56 let sprintf_objectName_drop name = [sprintf "DROP TABLE %s;" name]
58 let sprintf_owners_drop name = [sprintf "DROP TABLE %s;" name]
60 let sprintf_count_drop name = [sprintf "DROP TABLE %s;" name]
64 let sprintf_refObj_index name = [
65 sprintf "CREATE INDEX %s_source ON %s (source);" name name ;
66 sprintf "CREATE INDEX %s_target ON %s (h_occurrence);" name name ;
67 sprintf "CREATE INDEX %s_position ON %s (h_position);" name name ]
69 let sprintf_refSort_index name = [
70 sprintf "CREATE INDEX %s_source ON %s (source);" name name]
72 let sprintf_objectName_index name = [
73 sprintf "CREATE INDEX %s_value ON %s (value);" name name]
75 let sprintf_owners_index name = [
76 sprintf "CREATE INDEX %s_owner ON %s (owner);" name name ;
77 sprintf "CREATE INDEX %s_source ON %s (source);" name name]
79 let sprintf_count_index name = [
80 sprintf "CREATE INDEX %s_source ON %s (source);" name name;
81 sprintf "CREATE INDEX %s_conclusion ON %s (conclusion);" name name;
82 sprintf "CREATE INDEX %s_hypothesis ON %s (hypothesis);" name name;
83 sprintf "CREATE INDEX %s_statement ON %s (statement);" name name]
85 let sprintf_refRel_index name = [
86 sprintf "CREATE INDEX %s_source ON %s (source);" name name
89 let sprintf_refObj_index_drop name = [
90 sprintf "DROP INDEX %s_source ON %s;" name name ;
91 sprintf "DROP INDEX %s_target ON %s;" name name ;
92 sprintf "DROP INDEX %s_position ON %s;" name name ]
94 let sprintf_refSort_index_drop name = [
95 sprintf "DROP INDEX %s_source ON %s;" name name ]
97 let sprintf_objectName_index_drop name = [
98 sprintf "DROP INDEX %s_value ON %s;" name name]
100 let sprintf_owners_index_drop name = [
101 sprintf "DROP INDEX %s_owner ON %s;" name name ;
102 sprintf "DROP INDEX %s_source ON %s;" name name]
104 let sprintf_count_index_drop name = [
105 sprintf "DROP INDEX %s_source ON %s;" name name;
106 sprintf "DROP INDEX %s_conclusion ON %s;" name name;
107 sprintf "DROP INDEX %s_hypothesis ON %s;" name name;
108 sprintf "DROP INDEX %s_statement ON %s;" name name]
110 let sprintf_refRel_index_drop name = [
111 sprintf "DROP INDEX %s_source ON %s;" name name]
113 let sprintf_rename_table oldname newname = [
114 sprintf "RENAME TABLE %s TO %s;" oldname newname
120 let get_table_format t named =
122 | `RefObj -> sprintf_refObj_format named
123 | `RefSort -> sprintf_refSort_format named
124 | `RefRel -> sprintf_refRel_format named
125 | `ObjectName -> sprintf_objectName_format named
126 | `Owners -> sprintf_owners_format named
127 | `Count -> sprintf_count_format named
129 let get_index_format t named =
131 | `RefObj -> sprintf_refObj_index named
132 | `RefSort -> sprintf_refSort_index named
133 | `RefRel -> sprintf_refRel_index named
134 | `ObjectName -> sprintf_objectName_index named
135 | `Owners -> sprintf_owners_index named
136 | `Count -> sprintf_count_index named
138 let get_table_drop t named =
140 | `RefObj -> sprintf_refObj_drop named
141 | `RefSort -> sprintf_refSort_drop named
142 | `RefRel -> sprintf_refRel_drop named
143 | `ObjectName -> sprintf_objectName_drop named
144 | `Owners -> sprintf_owners_drop named
145 | `Count -> sprintf_count_drop named
147 let get_index_drop t named =
149 | `RefObj -> sprintf_refObj_index_drop named
150 | `RefSort -> sprintf_refSort_index_drop named
151 | `RefRel -> sprintf_refRel_index_drop named
152 | `ObjectName -> sprintf_objectName_index_drop named
153 | `Owners -> sprintf_owners_index_drop named
154 | `Count -> sprintf_count_index_drop named
156 let create_tables l =
157 List.fold_left (fun s (name,table) -> s @ get_table_format table name) [] l
159 let create_indexes l =
160 List.fold_left (fun s (name,table) -> s @ get_index_format table name) [] l
163 List.fold_left (fun s (name,table) -> s @ get_table_drop table name) [] l
166 List.fold_left (fun s (name,table) -> s @ get_index_drop table name) [] l
168 let rename_tables l =
169 List.fold_left (fun s (o,n) -> s @ sprintf_rename_table o n) [] l