mz_deploy/project/compiler/cache/
schema.rs1pub(super) const SCHEMA_VERSION: i64 = 11;
17
18pub(super) const DROP_SQL: &str = "
19 DROP TABLE IF EXISTS meta;
20 DROP TABLE IF EXISTS file_state;
21 DROP TABLE IF EXISTS object_state;
22 DROP TABLE IF EXISTS object_state_indexes;
23 DROP TABLE IF EXISTS object_state_grants;
24 DROP TABLE IF EXISTS object_state_comments;
25 DROP TABLE IF EXISTS object_state_tests;
26 DROP TABLE IF EXISTS typecheck_state;
27 DROP TABLE IF EXISTS typecheck_columns;
28 DROP TABLE IF EXISTS typecheck_objects;
29 DROP TABLE IF EXISTS external_type_digest;
30 DROP TABLE IF EXISTS project_aliases;
31 DROP TABLE IF EXISTS project_databases;
32 DROP TABLE IF EXISTS project_schemas;
33 DROP TABLE IF EXISTS project_objects;
34 DROP TABLE IF EXISTS project_dependencies;
35 DROP TABLE IF EXISTS project_external_dependencies;
36 DROP TABLE IF EXISTS project_cluster_dependencies;
37 DROP TABLE IF EXISTS project_replacement_schemas;
38 DROP TABLE IF EXISTS project_comments;
39 DROP TABLE IF EXISTS project_indexes;
40 DROP TABLE IF EXISTS project_grants;
41 DROP TABLE IF EXISTS project_tests;
42 DROP TABLE IF EXISTS project_infrastructure;
43 DROP TABLE IF EXISTS project_infrastructure_properties;
44 DROP TABLE IF EXISTS project_mod_statements;
45";
46
47pub(super) const CREATE_SQL: &str = "
48 CREATE TABLE IF NOT EXISTS meta (
49 key TEXT PRIMARY KEY,
50 value TEXT NOT NULL
51 );
52 CREATE TABLE IF NOT EXISTS file_state (
53 path TEXT PRIMARY KEY,
54 size INTEGER NOT NULL,
55 mtime_ns INTEGER NOT NULL,
56 content_hash TEXT NOT NULL,
57 contents TEXT
58 );
59 CREATE TABLE IF NOT EXISTS object_state (
60 object_key TEXT PRIMARY KEY,
61 fingerprint TEXT NOT NULL,
62 -- 'object' or 'skipped'. When 'skipped', every column below is NULL.
63 kind TEXT NOT NULL,
64 db_name TEXT,
65 schema_name TEXT,
66 file_path TEXT,
67 stmt_sql TEXT
68 );
69 CREATE TABLE IF NOT EXISTS object_state_indexes (
70 object_key TEXT NOT NULL,
71 position INTEGER NOT NULL,
72 sql_text TEXT NOT NULL,
73 PRIMARY KEY (object_key, position)
74 );
75 CREATE TABLE IF NOT EXISTS object_state_grants (
76 object_key TEXT NOT NULL,
77 position INTEGER NOT NULL,
78 sql_text TEXT NOT NULL,
79 PRIMARY KEY (object_key, position)
80 );
81 CREATE TABLE IF NOT EXISTS object_state_comments (
82 object_key TEXT NOT NULL,
83 position INTEGER NOT NULL,
84 sql_text TEXT NOT NULL,
85 PRIMARY KEY (object_key, position)
86 );
87 CREATE TABLE IF NOT EXISTS object_state_tests (
88 object_key TEXT NOT NULL,
89 position INTEGER NOT NULL,
90 sql_text TEXT NOT NULL,
91 PRIMARY KEY (object_key, position)
92 );
93 CREATE TABLE IF NOT EXISTS typecheck_objects (
94 object_key TEXT PRIMARY KEY,
95 object_kind TEXT NOT NULL
96 );
97 CREATE TABLE IF NOT EXISTS typecheck_columns (
98 object_key TEXT NOT NULL,
99 column_name TEXT NOT NULL,
100 column_type TEXT NOT NULL,
101 nullable INTEGER NOT NULL,
102 position INTEGER NOT NULL,
103 PRIMARY KEY (object_key, column_name),
104 FOREIGN KEY (object_key) REFERENCES typecheck_objects(object_key)
105 );
106 CREATE TABLE IF NOT EXISTS external_type_digest (
107 object_key TEXT PRIMARY KEY,
108 digest TEXT NOT NULL
109 );
110 CREATE TABLE IF NOT EXISTS project_databases (
111 name TEXT PRIMARY KEY
112 );
113 CREATE TABLE IF NOT EXISTS project_schemas (
114 database TEXT NOT NULL,
115 name TEXT NOT NULL,
116 schema_type TEXT NOT NULL,
117 PRIMARY KEY (database, name)
118 );
119 CREATE TABLE IF NOT EXISTS project_objects (
120 object_key TEXT PRIMARY KEY,
121 database TEXT NOT NULL,
122 schema TEXT NOT NULL,
123 name TEXT NOT NULL,
124 object_kind TEXT NOT NULL,
125 cluster TEXT,
126 file_path TEXT NOT NULL,
127 sql_text TEXT NOT NULL
128 );
129 CREATE INDEX IF NOT EXISTS idx_project_objects_file_path
130 ON project_objects(file_path);
131 CREATE INDEX IF NOT EXISTS idx_project_objects_db_schema
132 ON project_objects(database, schema);
133 CREATE TABLE IF NOT EXISTS project_dependencies (
134 object_key TEXT NOT NULL,
135 dependency_key TEXT NOT NULL,
136 PRIMARY KEY (object_key, dependency_key)
137 );
138 CREATE INDEX IF NOT EXISTS idx_project_dependencies_dependency_key
139 ON project_dependencies(dependency_key);
140 CREATE TABLE IF NOT EXISTS project_external_dependencies (
141 object_key TEXT NOT NULL PRIMARY KEY
142 );
143 CREATE TABLE IF NOT EXISTS project_cluster_dependencies (
144 cluster_name TEXT NOT NULL PRIMARY KEY
145 );
146 CREATE TABLE IF NOT EXISTS project_replacement_schemas (
147 database TEXT NOT NULL,
148 schema TEXT NOT NULL,
149 PRIMARY KEY (database, schema)
150 );
151 CREATE TABLE IF NOT EXISTS project_comments (
152 object_key TEXT NOT NULL,
153 comment_type TEXT NOT NULL,
154 target_column TEXT,
155 comment_text TEXT NOT NULL,
156 sql_text TEXT NOT NULL,
157 PRIMARY KEY (object_key, comment_type, target_column)
158 );
159 CREATE TABLE IF NOT EXISTS project_indexes (
160 object_key TEXT NOT NULL,
161 index_name TEXT,
162 cluster TEXT,
163 columns TEXT NOT NULL,
164 sql_text TEXT NOT NULL,
165 PRIMARY KEY (object_key, index_name)
166 );
167 CREATE TABLE IF NOT EXISTS project_grants (
168 object_key TEXT NOT NULL,
169 privilege TEXT NOT NULL,
170 grantee TEXT NOT NULL,
171 sql_text TEXT NOT NULL,
172 PRIMARY KEY (object_key, privilege, grantee)
173 );
174 CREATE TABLE IF NOT EXISTS project_tests (
175 object_key TEXT NOT NULL,
176 test_name TEXT NOT NULL,
177 sql_text TEXT NOT NULL,
178 PRIMARY KEY (object_key, test_name)
179 );
180 CREATE TABLE IF NOT EXISTS project_infrastructure (
181 object_key TEXT NOT NULL PRIMARY KEY,
182 infra_type TEXT NOT NULL,
183 connector_type TEXT,
184 connection_ref TEXT,
185 source_ref TEXT,
186 external_reference TEXT
187 );
188 CREATE TABLE IF NOT EXISTS project_infrastructure_properties (
189 object_key TEXT NOT NULL,
190 property_key TEXT NOT NULL,
191 property_value TEXT NOT NULL,
192 secret_ref TEXT,
193 object_ref TEXT,
194 PRIMARY KEY (object_key, property_key)
195 );
196 CREATE TABLE IF NOT EXISTS project_aliases (
197 object_key TEXT NOT NULL,
198 alias TEXT NOT NULL,
199 target_fqn TEXT NOT NULL,
200 PRIMARY KEY (object_key, alias)
201 );
202 CREATE TABLE IF NOT EXISTS project_mod_statements (
203 database TEXT NOT NULL,
204 schema TEXT,
205 position INTEGER NOT NULL,
206 sql_text TEXT NOT NULL,
207 PRIMARY KEY (database, schema, position)
208 );
209";