2 PRAGMA page_size = 4096;
3 PRAGMA default_cache_size = 10000;
4 PRAGMA default_synchronous = OFF;
5 PRAGMA default_temp_store = MEMORY;
8 CREATE TABLE workspace (workspace_id integer PRIMARY KEY AUTOINCREMENT,
9 workspace_name varchar (50) not null unique,
13 CREATE TABLE project (project_id integer PRIMARY KEY AUTOINCREMENT,
14 project_name varchar (50) not null unique,
15 wrkspace_id integer REFERENCES workspace (workspace_id),
19 CREATE TABLE file_include (file_include_id integer PRIMARY KEY AUTOINCREMENT,
20 type varchar (10) not null unique
23 CREATE TABLE ext_include (prj_id integer REFERENCES project (project_id),
24 file_incl_id integer REFERENCES file_include (file_include_id),
25 PRIMARY KEY (prj_id, file_incl_id)
28 CREATE TABLE file_ignore (file_ignore_id integer PRIMARY KEY AUTOINCREMENT,
29 type varchar (10) unique
32 CREATE TABLE ext_ignore (prj_id integer REFERENCES project (project_id),
33 file_ign_id integer REFERENCES file_ignore (file_ignore_id),
34 PRIMARY KEY (prj_id, file_ign_id)
37 CREATE TABLE file (file_id integer PRIMARY KEY AUTOINCREMENT,
38 file_path TEXT not null unique,
39 prj_id integer REFERENCES project (projec_id),
40 lang_id integer REFERENCES language (language_id),
44 CREATE TABLE language (language_id integer PRIMARY KEY AUTOINCREMENT,
45 language_name varchar (50) not null unique);
47 CREATE TABLE symbol (symbol_id integer PRIMARY KEY AUTOINCREMENT,
48 file_defined_id integer not null REFERENCES file (file_id),
49 name varchar (256) not null,
50 file_position integer,
51 is_file_scope integer,
52 signature varchar (256),
53 scope_definition_id integer,
55 type_id integer REFERENCES sym_type (type_id),
56 kind_id integer REFERENCES sym_kind (sym_kind_id),
57 access_kind_id integer REFERENCES sym_access (sym_access_id),
58 implementation_kind_id integer REFERENCES sym_implementation (sym_impl_id),
59 update_flag integer default 0
62 CREATE TABLE sym_type (type_id integer PRIMARY KEY AUTOINCREMENT,
63 type varchar (256) not null,
64 type_name varchar (256) not null,
65 unique (type, type_name)
68 CREATE TABLE sym_kind (sym_kind_id integer PRIMARY KEY AUTOINCREMENT,
69 kind_name varchar (50) not null unique
72 CREATE TABLE sym_access (access_kind_id integer PRIMARY KEY AUTOINCREMENT,
73 access_name varchar (50) not null unique
76 CREATE TABLE sym_implementation (sym_impl_id integer PRIMARY KEY AUTOINCREMENT,
77 implementation_name varchar (50) not null unique
80 CREATE TABLE heritage (symbol_id_base integer REFERENCES symbol (symbol_id),
81 symbol_id_derived integer REFERENCES symbol (symbol_id),
82 PRIMARY KEY (symbol_id_base, symbol_id_derived)
85 CREATE TABLE scope (scope_id integer PRIMARY KEY AUTOINCREMENT,
86 scope varchar(256) not null,
87 type_id integer REFERENCES sym_type (type_id)
90 CREATE TABLE __tmp_heritage_scope (tmp_heritage_scope_id integer PRIMARY KEY AUTOINCREMENT,
91 symbol_referer_id integer not null,
92 field_inherits varchar(256),
93 field_struct varchar(256),
94 field_typeref varchar(256),
95 field_enum varchar(256),
96 field_union varchar(256),
97 field_class varchar(256),
98 field_namespace varchar(256)
101 CREATE TABLE __tmp_removed (tmp_removed_id integer PRIMARY KEY AUTOINCREMENT,
102 symbol_removed_id integer not null
105 CREATE INDEX symbol_idx_1 ON symbol (name);
107 CREATE UNIQUE INDEX symbol_idx_2 ON symbol (name, file_defined_id, file_position);
109 CREATE UNIQUE INDEX scope_uniq_idx_1 ON scope (scope);
111 CREATE UNIQUE INDEX scope_uniq_idx_2 ON scope (scope, type_id);
113 CREATE INDEX file_idx_1 ON file (file_path);
115 CREATE INDEX sym_type_idx_1 ON sym_type (type);
117 CREATE INDEX sym_type_idx_2 ON sym_type (type, type_name);
119 CREATE TRIGGER delete_file BEFORE DELETE ON file
122 DELETE FROM symbol WHERE file_defined_id = (SELECT file_id FROM file WHERE file_path = old.file_path);
125 CREATE TRIGGER delete_symbol BEFORE DELETE ON symbol
128 DELETE FROM scope WHERE scope.scope_id=old.scope_definition_id;
129 DELETE FROM sym_type WHERE sym_type.type_id=old.type_id;
130 UPDATE symbol SET scope_id='-1' WHERE symbol.scope_id=old.scope_definition_id AND symbol.scope_id > 0;
131 INSERT INTO __tmp_removed (symbol_removed_id) VALUES (old.symbol_id);