]> matita.cs.unibo.it Git - helm.git/blob - helm/ocaml/metadata/sqlStatements.ml
fix bad space
[helm.git] / helm / ocaml / metadata / sqlStatements.ml
1
2 open Printf;;
3 type tbl = [ `RefObj| `RefSort| `RefRel| `ObjectName| `Owners| `Count]
4
5 (* TABLES *)
6
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,
12     h_depth integer
13 );" name]
14
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
21 );" name]
22
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
28 );" name]
29
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
34 );" name]
35
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
40 );" name]
41
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
48 );" name]
49
50 let sprintf_refObj_drop name = [sprintf "DROP TABLE %s;" name]
51
52 let sprintf_refSort_drop name = [sprintf "DROP TABLE %s;" name]
53
54 let sprintf_refRel_drop name = [sprintf "DROP TABLE %s;" name]
55
56 let sprintf_objectName_drop name = [sprintf "DROP TABLE %s;" name]
57
58 let sprintf_owners_drop name = [sprintf "DROP TABLE %s;" name]
59
60 let sprintf_count_drop name = [sprintf "DROP TABLE %s;" name]
61
62 (* INDEXES *)
63
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 ]
68
69 let sprintf_refSort_index name = [
70 sprintf "CREATE INDEX %s_source ON %s (source);" name name]
71
72 let sprintf_objectName_index name = [
73 sprintf "CREATE INDEX %s_value ON %s (value);" name name]
74
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] 
78
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]
84  
85 let sprintf_refRel_index name = [
86 sprintf "CREATE INDEX %s_source ON %s (source);" name name
87 ]
88
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 ]
93
94 let sprintf_refSort_index_drop name = [
95 sprintf "DROP INDEX %s_source ON %s;" name name ]
96
97 let sprintf_objectName_index_drop name = [
98 sprintf "DROP INDEX %s_value ON %s;" name name]
99
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] 
103
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]
109  
110 let sprintf_refRel_index_drop name = [
111 sprintf "DROP INDEX %s_source ON %s;" name name]
112
113 let sprintf_rename_table oldname newname = [
114 sprintf "RENAME TABLE %s TO %s;" oldname newname 
115 ]
116           
117
118 (* FUNCTIONS *)
119
120 let get_table_format t named =
121   match t with
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
128
129 let get_index_format t named =
130   match t with
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
137
138 let get_table_drop t named =
139   match t with
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
146
147 let get_index_drop t named =
148   match t with
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
155
156 let create_tables l =
157   List.fold_left (fun s (name,table) ->  s @ get_table_format table name) [] l
158
159 let create_indexes l =
160   List.fold_left (fun s (name,table) ->  s @ get_index_format table name) [] l
161  
162 let drop_tables l =
163   List.fold_left (fun s (name,table) ->  s @ get_table_drop table name) [] l
164   
165 let drop_indexes l =
166   List.fold_left (fun s (name,table) ->  s @ get_index_drop table name) [] l
167
168 let rename_tables l = 
169   List.fold_left (fun s (o,n) ->  s @ sprintf_rename_table o n) [] l
170