symbol-db: cleaned sdb_engine_add_new_symbol ().
[anjuta.git] / plugins / symbol-db / tables.sql
blobac8c010ad35d1f65027abfcdc8b27f733251592a
2 -- FIXME: FOREIGN keys are now supported. schema should enforces them.
3 -- Right now the support here is disabled.
5 DROP TABLE IF EXISTS workspace;
6 CREATE TABLE workspace (workspace_id integer PRIMARY KEY AUTOINCREMENT,
7                         workspace_name text not null unique,
8                         analyse_time date
9                         );
11 DROP TABLE IF EXISTS project;
12 CREATE TABLE project (project_id integer PRIMARY KEY AUTOINCREMENT,
13                       project_name text not null unique,
14                       wrkspace_id integer REFERENCES workspace (workspace_id),
15                       analyse_time date
16                       );
18 DROP TABLE IF EXISTS file;
19 CREATE TABLE file (file_id integer PRIMARY KEY AUTOINCREMENT,
20                    file_path text not null unique,
21                    prj_id integer REFERENCES project (projec_id),
22                    lang_id integer REFERENCES language (language_id),
23                    analyse_time date
24                    );
26 DROP TABLE IF EXISTS language;
27 CREATE TABLE language (language_id integer PRIMARY KEY AUTOINCREMENT,
28                        language_name text not null unique);
30 DROP TABLE IF EXISTS symbol;
31 CREATE TABLE symbol (symbol_id integer PRIMARY KEY AUTOINCREMENT,
32                      file_defined_id integer not null REFERENCES file (file_id),
33                      name text not null,
34                      file_position integer,
35                      is_file_scope integer,
36                      signature text,
37                      returntype text,
38                      scope_definition_id integer,
39                      scope_id integer,
40                      type_type text not null,
41                                          type_name text not null,
42                      kind_id integer REFERENCES sym_kind (sym_kind_id),
43                      access_kind_id integer REFERENCES sym_access (sym_access_id),
44                      implementation_kind_id integer REFERENCES sym_implementation (sym_impl_id),
45                      update_flag integer default 0,
46                      unique (name, file_defined_id, file_position)
47                      );
49 DROP TABLE IF EXISTS sym_kind;
50 CREATE TABLE sym_kind (sym_kind_id integer PRIMARY KEY AUTOINCREMENT,
51                        kind_name text not null unique,
52                        is_container integer default 0
53                        );
55 DROP TABLE IF EXISTS sym_access;
56 CREATE TABLE sym_access (access_kind_id integer PRIMARY KEY AUTOINCREMENT,
57                          access_name text not null unique
58                          );
60 DROP TABLE IF EXISTS sym_implementation;
61 CREATE TABLE sym_implementation (sym_impl_id integer PRIMARY KEY AUTOINCREMENT,
62                                  implementation_name text not null unique
63                                  );
65 DROP TABLE IF EXISTS heritage;
66 CREATE TABLE heritage (symbol_id_base integer REFERENCES symbol (symbol_id),
67                        symbol_id_derived integer REFERENCES symbol (symbol_id),
68                        PRIMARY KEY (symbol_id_base, symbol_id_derived)
69                        );
71 DROP TABLE IF EXISTS scope;
72 CREATE TABLE scope (scope_id integer PRIMARY KEY AUTOINCREMENT,
73                     scope_name text not null,
74                     unique (scope_name)
75                     );
77 DROP TABLE IF EXISTS version;
78 CREATE TABLE version (sdb_version numeric PRIMARY KEY);
81 DROP TABLE IF EXISTS __tmp_removed;
82 CREATE TABLE __tmp_removed (tmp_removed_id integer PRIMARY KEY AUTOINCREMENT,
83                             symbol_removed_id integer not null
84                             );
87 DROP INDEX IF EXISTS symbol_idx_1;
88 CREATE INDEX symbol_idx_1 ON symbol (name, file_defined_id, type_type, type_name);
90 DROP INDEX IF EXISTS symbol_idx_2;
91 CREATE INDEX symbol_idx_2 ON symbol (scope_id);
93 DROP INDEX IF EXISTS symbol_idx_3;
94 CREATE INDEX symbol_idx_3 ON symbol (type_type, type_name);
96 DROP TRIGGER IF EXISTS delete_file_trg;
97 CREATE TRIGGER delete_file_trg BEFORE DELETE ON file
98 FOR EACH ROW
99 BEGIN
100         DELETE FROM symbol WHERE file_defined_id = old.file_id;
101 END;
103 DROP TRIGGER IF EXISTS delete_symbol_trg;
104 CREATE TRIGGER delete_symbol_trg BEFORE DELETE ON symbol
105 FOR EACH ROW
106 BEGIN
107     DELETE FROM scope WHERE scope.scope_id=old.scope_definition_id;
108     UPDATE symbol SET scope_id='-1' WHERE symbol.scope_id=old.scope_definition_id AND symbol.scope_id > 0;
109     INSERT INTO __tmp_removed (symbol_removed_id) VALUES (old.symbol_id);
110 END;
112 PRAGMA page_size = 32768;
113 PRAGMA cache_size = 12288;
114 PRAGMA synchronous = OFF;
115 PRAGMA temp_store = MEMORY;
116 PRAGMA case_sensitive_like = 1;
117 PRAGMA journal_mode = OFF;
118 PRAGMA read_uncommitted = 1;
119 PRAGMA foreign_keys = OFF;
120 PRAGMA auto_vacuum = 0;