1 /* This file is automatically generated from wc-metadata.sql and token-map.h.
2 * Do not edit this file -- edit the source and rerun gen-make.py */
4 #define STMT_CREATE_SCHEMA 0
5 #define STMT_0_INFO {"STMT_CREATE_SCHEMA", NULL}
7 "CREATE TABLE REPOSITORY ( " \
8 " id INTEGER PRIMARY KEY AUTOINCREMENT, " \
9 " root TEXT UNIQUE NOT NULL, " \
10 " uuid TEXT NOT NULL " \
12 "CREATE INDEX I_UUID ON REPOSITORY (uuid); " \
13 "CREATE INDEX I_ROOT ON REPOSITORY (root); " \
14 "CREATE TABLE WCROOT ( " \
15 " id INTEGER PRIMARY KEY AUTOINCREMENT, " \
16 " local_abspath TEXT UNIQUE " \
18 "CREATE UNIQUE INDEX I_LOCAL_ABSPATH ON WCROOT (local_abspath); " \
19 "CREATE TABLE PRISTINE ( " \
20 " checksum TEXT NOT NULL PRIMARY KEY, " \
21 " compression INTEGER, " \
22 " size INTEGER NOT NULL, " \
23 " refcount INTEGER NOT NULL, " \
24 " md5_checksum TEXT NOT NULL " \
26 "CREATE INDEX I_PRISTINE_MD5 ON PRISTINE (md5_checksum); " \
27 "CREATE TABLE ACTUAL_NODE ( " \
28 " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \
29 " local_relpath TEXT NOT NULL, " \
30 " parent_relpath TEXT, " \
31 " properties BLOB, " \
32 " conflict_old TEXT, " \
33 " conflict_new TEXT, " \
34 " conflict_working TEXT, " \
35 " prop_reject TEXT, " \
36 " changelist TEXT, " \
38 " tree_conflict_data TEXT, " \
39 " conflict_data BLOB, " \
40 " older_checksum TEXT REFERENCES PRISTINE (checksum), " \
41 " left_checksum TEXT REFERENCES PRISTINE (checksum), " \
42 " right_checksum TEXT REFERENCES PRISTINE (checksum), " \
43 " PRIMARY KEY (wc_id, local_relpath) " \
45 "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \
47 "CREATE TABLE LOCK ( " \
48 " repos_id INTEGER NOT NULL REFERENCES REPOSITORY (id), " \
49 " repos_relpath TEXT NOT NULL, " \
50 " lock_token TEXT NOT NULL, " \
51 " lock_owner TEXT, " \
52 " lock_comment TEXT, " \
53 " lock_date INTEGER, " \
54 " PRIMARY KEY (repos_id, repos_relpath) " \
56 "CREATE TABLE WORK_QUEUE ( " \
57 " id INTEGER PRIMARY KEY AUTOINCREMENT, " \
58 " work BLOB NOT NULL " \
60 "CREATE TABLE WC_LOCK ( " \
61 " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \
62 " local_dir_relpath TEXT NOT NULL, " \
63 " locked_levels INTEGER NOT NULL DEFAULT -1, " \
64 " PRIMARY KEY (wc_id, local_dir_relpath) " \
66 "CREATE TABLE NODES ( " \
67 " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \
68 " local_relpath TEXT NOT NULL, " \
69 " op_depth INTEGER NOT NULL, " \
70 " parent_relpath TEXT, " \
71 " repos_id INTEGER REFERENCES REPOSITORY (id), " \
72 " repos_path TEXT, " \
73 " revision INTEGER, " \
74 " presence TEXT NOT NULL, " \
75 " moved_here INTEGER, " \
77 " kind TEXT NOT NULL, " \
78 " properties BLOB, " \
80 " checksum TEXT REFERENCES PRISTINE (checksum), " \
81 " symlink_target TEXT, " \
82 " changed_revision INTEGER, " \
83 " changed_date INTEGER, " \
84 " changed_author TEXT, " \
85 " translated_size INTEGER, " \
86 " last_mod_time INTEGER, " \
88 " file_external INTEGER, " \
89 " inherited_props BLOB, " \
90 " PRIMARY KEY (wc_id, local_relpath, op_depth) " \
92 "CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, " \
93 " local_relpath, op_depth); " \
94 "CREATE UNIQUE INDEX I_NODES_MOVED ON NODES (wc_id, moved_to, op_depth); " \
95 "CREATE VIEW NODES_CURRENT AS " \
96 " SELECT * FROM nodes AS n " \
97 " WHERE op_depth = (SELECT MAX(op_depth) FROM nodes AS n2 " \
98 " WHERE n2.wc_id = n.wc_id " \
99 " AND n2.local_relpath = n.local_relpath); " \
100 "CREATE VIEW NODES_BASE AS " \
101 " SELECT * FROM nodes " \
102 " WHERE op_depth = 0; " \
103 "CREATE TRIGGER nodes_insert_trigger " \
104 "AFTER INSERT ON nodes " \
105 "WHEN NEW.checksum IS NOT NULL " \
107 " UPDATE pristine SET refcount = refcount + 1 " \
108 " WHERE checksum = NEW.checksum; " \
110 "CREATE TRIGGER nodes_delete_trigger " \
111 "AFTER DELETE ON nodes " \
112 "WHEN OLD.checksum IS NOT NULL " \
114 " UPDATE pristine SET refcount = refcount - 1 " \
115 " WHERE checksum = OLD.checksum; " \
117 "CREATE TRIGGER nodes_update_checksum_trigger " \
118 "AFTER UPDATE OF checksum ON nodes " \
119 "WHEN NEW.checksum IS NOT OLD.checksum " \
121 " UPDATE pristine SET refcount = refcount + 1 " \
122 " WHERE checksum = NEW.checksum; " \
123 " UPDATE pristine SET refcount = refcount - 1 " \
124 " WHERE checksum = OLD.checksum; " \
126 "CREATE TABLE EXTERNALS ( " \
127 " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \
128 " local_relpath TEXT NOT NULL, " \
129 " parent_relpath TEXT NOT NULL, " \
130 " repos_id INTEGER NOT NULL REFERENCES REPOSITORY (id), " \
131 " presence TEXT NOT NULL, " \
132 " kind TEXT NOT NULL, " \
133 " def_local_relpath TEXT NOT NULL, " \
134 " def_repos_relpath TEXT NOT NULL, " \
135 " def_operational_revision TEXT, " \
136 " def_revision TEXT, " \
137 " PRIMARY KEY (wc_id, local_relpath) " \
139 "CREATE UNIQUE INDEX I_EXTERNALS_DEFINED ON EXTERNALS (wc_id, " \
140 " def_local_relpath, " \
141 " local_relpath); " \
142 "PRAGMA user_version = " \
143 APR_STRINGIFY(SVN_WC__VERSION) \
147 #define STMT_INSTALL_SCHEMA_STATISTICS 1
148 #define STMT_1_INFO {"STMT_INSTALL_SCHEMA_STATISTICS", NULL}
150 "ANALYZE sqlite_master; " \
151 "DELETE FROM sqlite_stat1 " \
152 "WHERE tbl in ('NODES', 'ACTUAL_NODE', 'LOCK', 'WC_LOCK', 'EXTERNALS'); " \
153 "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
154 " ('NODES', 'sqlite_autoindex_NODES_1', '8000 8000 2 1'); " \
155 "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
156 " ('NODES', 'I_NODES_PARENT', '8000 8000 10 2 1'); " \
157 "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
158 " ('NODES', 'I_NODES_MOVED', '8000 8000 1 1'); " \
159 "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
160 " ('ACTUAL_NODE', 'sqlite_autoindex_ACTUAL_NODE_1', '8000 8000 1'); " \
161 "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
162 " ('ACTUAL_NODE', 'I_ACTUAL_PARENT', '8000 8000 10 1'); " \
163 "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
164 " ('LOCK', 'sqlite_autoindex_LOCK_1', '100 100 1'); " \
165 "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
166 " ('WC_LOCK', 'sqlite_autoindex_WC_LOCK_1', '100 100 1'); " \
167 "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
168 " ('EXTERNALS','sqlite_autoindex_EXTERNALS_1', '100 100 1'); " \
169 "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
170 " ('EXTERNALS','I_EXTERNALS_DEFINED', '100 100 3 1'); " \
171 "ANALYZE sqlite_master; " \
174 #define STMT_UPGRADE_TO_30 2
175 #define STMT_2_INFO {"STMT_UPGRADE_TO_30", NULL}
177 "CREATE UNIQUE INDEX IF NOT EXISTS I_NODES_MOVED " \
178 "ON NODES (wc_id, moved_to, op_depth); " \
179 "CREATE INDEX IF NOT EXISTS I_PRISTINE_MD5 ON PRISTINE (md5_checksum); " \
180 "UPDATE nodes SET presence = \"server-excluded\" WHERE presence = \"absent\"; " \
181 "UPDATE nodes SET file_external=1 WHERE file_external IS NOT NULL; " \
184 #define STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE 3
185 #define STMT_3_INFO {"STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE", NULL}
187 "SELECT wc_id, local_relpath, " \
188 " conflict_old, conflict_working, conflict_new, prop_reject, tree_conflict_data " \
189 "FROM actual_node " \
190 "WHERE conflict_old IS NOT NULL " \
191 " OR conflict_working IS NOT NULL " \
192 " OR conflict_new IS NOT NULL " \
193 " OR prop_reject IS NOT NULL " \
194 " OR tree_conflict_data IS NOT NULL " \
195 "ORDER by wc_id, local_relpath " \
198 #define STMT_UPGRADE_30_SET_CONFLICT 4
199 #define STMT_4_INFO {"STMT_UPGRADE_30_SET_CONFLICT", NULL}
201 "UPDATE actual_node SET conflict_data = ?3, conflict_old = NULL, " \
202 " conflict_working = NULL, conflict_new = NULL, prop_reject = NULL, " \
203 " tree_conflict_data = NULL " \
204 "WHERE wc_id = ?1 and local_relpath = ?2 " \
207 #define STMT_UPGRADE_TO_31 5
208 #define STMT_5_INFO {"STMT_UPGRADE_TO_31", NULL}
210 "ALTER TABLE NODES ADD COLUMN inherited_props BLOB; " \
211 "DROP INDEX IF EXISTS I_ACTUAL_CHANGELIST; " \
212 "DROP INDEX IF EXISTS I_EXTERNALS_PARENT; " \
213 "DROP INDEX I_NODES_PARENT; " \
214 "CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, " \
215 " local_relpath, op_depth); " \
216 "DROP INDEX I_ACTUAL_PARENT; " \
217 "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \
218 " local_relpath); " \
219 "PRAGMA user_version = 31; " \
222 #define STMT_UPGRADE_31_SELECT_WCROOT_NODES 6
223 #define STMT_6_INFO {"STMT_UPGRADE_31_SELECT_WCROOT_NODES", NULL}
225 "SELECT l.wc_id, l.local_relpath FROM nodes as l " \
226 "LEFT OUTER JOIN nodes as r " \
227 "ON l.wc_id = r.wc_id " \
228 " AND r.local_relpath = l.parent_relpath " \
229 " AND r.op_depth = 0 " \
230 "WHERE l.op_depth = 0 " \
231 " AND l.repos_path != '' " \
232 " AND ((l.repos_id IS NOT r.repos_id) " \
233 " OR (l.repos_path IS NOT (CASE WHEN (r.local_relpath) = '' THEN (CASE WHEN (r.repos_path) = '' THEN (l.local_relpath) WHEN (l.local_relpath) = '' THEN (r.repos_path) ELSE (r.repos_path) || '/' || (l.local_relpath) END) WHEN (r.repos_path) = '' THEN (CASE WHEN (r.local_relpath) = '' THEN (l.local_relpath) WHEN SUBSTR((l.local_relpath), 1, LENGTH(r.local_relpath)) = (r.local_relpath) THEN CASE WHEN LENGTH(r.local_relpath) = LENGTH(l.local_relpath) THEN '' WHEN SUBSTR((l.local_relpath), LENGTH(r.local_relpath)+1, 1) = '/' THEN SUBSTR((l.local_relpath), LENGTH(r.local_relpath)+2) END END) WHEN SUBSTR((l.local_relpath), 1, LENGTH(r.local_relpath)) = (r.local_relpath) THEN CASE WHEN LENGTH(r.local_relpath) = LENGTH(l.local_relpath) THEN (r.repos_path) WHEN SUBSTR((l.local_relpath), LENGTH(r.local_relpath)+1, 1) = '/' THEN (r.repos_path) || SUBSTR((l.local_relpath), LENGTH(r.local_relpath)+1) END END))) " \
236 #define WC_METADATA_SQL_99 \
237 "CREATE TABLE ACTUAL_NODE_BACKUP ( " \
238 " wc_id INTEGER NOT NULL, " \
239 " local_relpath TEXT NOT NULL, " \
240 " parent_relpath TEXT, " \
241 " properties BLOB, " \
242 " conflict_old TEXT, " \
243 " conflict_new TEXT, " \
244 " conflict_working TEXT, " \
245 " prop_reject TEXT, " \
246 " changelist TEXT, " \
249 "INSERT INTO ACTUAL_NODE_BACKUP SELECT " \
250 " wc_id, local_relpath, parent_relpath, properties, conflict_old, " \
251 " conflict_new, conflict_working, prop_reject, changelist, text_mod " \
252 "FROM ACTUAL_NODE; " \
253 "DROP TABLE ACTUAL_NODE; " \
254 "CREATE TABLE ACTUAL_NODE ( " \
255 " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \
256 " local_relpath TEXT NOT NULL, " \
257 " parent_relpath TEXT, " \
258 " properties BLOB, " \
259 " conflict_old TEXT, " \
260 " conflict_new TEXT, " \
261 " conflict_working TEXT, " \
262 " prop_reject TEXT, " \
263 " changelist TEXT, " \
265 " PRIMARY KEY (wc_id, local_relpath) " \
267 "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \
268 " local_relpath); " \
269 "INSERT INTO ACTUAL_NODE SELECT " \
270 " wc_id, local_relpath, parent_relpath, properties, conflict_old, " \
271 " conflict_new, conflict_working, prop_reject, changelist, text_mod " \
272 "FROM ACTUAL_NODE_BACKUP; " \
273 "DROP TABLE ACTUAL_NODE_BACKUP; " \
276 #define WC_METADATA_SQL_DECLARE_STATEMENTS(varname) \
277 static const char * const varname[] = { \
288 #define WC_METADATA_SQL_DECLARE_STATEMENT_INFO(varname) \
289 static const char * const varname[][2] = { \