]> matita.cs.unibo.it Git - helm.git/blob - helm/ocaml/metadata/sqlStatements.ml
added DROP statements to sqlStatements
[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 = [sprintf "
70 CREATE INDEX %s_source ON %s (source);
71 " name name]
72
73 let sprintf_objectName_index name = [
74 sprintf " CREATE INDEX %s_value ON %s (value);" name name]
75
76 let sprintf_owners_index name = [
77 sprintf "CREATE INDEX %s_owner ON %s (owner);" name name ;
78 sprintf "CREATE INDEX %s_source ON %s (source);" name name] 
79
80 let sprintf_count_index name = [
81 sprintf "CREATE INDEX %s_source ON %s (source);" name name;
82 sprintf "CREATE INDEX %s_conclusion ON %s (conclusion);" name name;
83 sprintf "CREATE INDEX %s_hypothesis ON %s (hypothesis);" name name;
84 sprintf "CREATE INDEX %s_statement ON %s (statement);" name name]
85  
86 let sprintf_refRel_index name = []
87
88 let sprintf_refObj_index_drop name = [
89 sprintf "DROP INDEX %s_source ON %s;" name name ;
90 sprintf "DROP INDEX %s_target ON %s;" name name ;
91 sprintf "DROP INDEX %s_position ON %s;" name name ]
92
93 let sprintf_refSort_index_drop name = [sprintf "
94 DROP INDEX %s_source ON %s;
95 " 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
112 (* FUNCTIONS *)
113
114 let get_table_format t named =
115   match t with
116   | `RefObj -> sprintf_refObj_format named
117   | `RefSort -> sprintf_refSort_format named
118   | `RefRel -> sprintf_refRel_format named
119   | `ObjectName -> sprintf_objectName_format named
120   | `Owners -> sprintf_owners_format named
121   | `Count -> sprintf_count_format named
122
123 let get_index_format t named =
124   match t with
125   | `RefObj -> sprintf_refObj_index named
126   | `RefSort -> sprintf_refSort_index named
127   | `RefRel -> sprintf_refRel_index named
128   | `ObjectName -> sprintf_objectName_index named
129   | `Owners -> sprintf_owners_index named
130   | `Count -> sprintf_count_index named
131
132 let get_table_drop t named =
133   match t with
134   | `RefObj -> sprintf_refObj_drop named
135   | `RefSort -> sprintf_refSort_drop named
136   | `RefRel -> sprintf_refRel_drop named
137   | `ObjectName -> sprintf_objectName_drop named
138   | `Owners -> sprintf_owners_drop named
139   | `Count -> sprintf_count_drop named
140
141 let get_index_drop t named =
142   match t with
143   | `RefObj -> sprintf_refObj_index_drop named
144   | `RefSort -> sprintf_refSort_index_drop named
145   | `RefRel -> sprintf_refRel_index_drop named
146   | `ObjectName -> sprintf_objectName_index_drop named
147   | `Owners -> sprintf_owners_index_drop named
148   | `Count -> sprintf_count_index_drop named
149   
150 let create_tables l =
151   List.fold_left (fun s (name,table) ->  s @ get_table_format table name) [] l
152
153 let create_indexes l =
154   List.fold_left (fun s (name,table) ->  s @ get_index_format table name) [] l
155  
156 let drop_tables l =
157   List.fold_left (fun s (name,table) ->  s @ get_table_drop table name) [] l
158   
159 let drop_indexes l =
160   List.fold_left (fun s (name,table) ->  s @ get_index_drop table name) [] l
161
162