wc-metadata.h revision 322442
1/* This file is automatically generated from wc-metadata.sql and .dist_sandbox/subversion-1.9.7/subversion/libsvn_wc/token-map.h.
2 * Do not edit this file -- edit the source and rerun gen-make.py */
3
4#define STMT_CREATE_SCHEMA 0
5#define STMT_0_INFO {"STMT_CREATE_SCHEMA", NULL}
6#define STMT_0 \
7  "CREATE TABLE REPOSITORY ( " \
8  "  id INTEGER PRIMARY KEY AUTOINCREMENT, " \
9  "  root  TEXT UNIQUE NOT NULL, " \
10  "  uuid  TEXT NOT NULL " \
11  "  ); " \
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 " \
17  "  ); " \
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 " \
25  "  ); " \
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, " \
37  "  text_mod  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) " \
44  "  ); " \
45  "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \
46  "                                                    local_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) " \
55  "  ); " \
56  "CREATE TABLE WORK_QUEUE ( " \
57  "  id  INTEGER PRIMARY KEY AUTOINCREMENT, " \
58  "  work  BLOB NOT NULL " \
59  "  ); " \
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) " \
65  " ); " \
66  "PRAGMA user_version = " \
67  APR_STRINGIFY(SVN_WC__VERSION) \
68  "; " \
69  ""
70
71#define STMT_CREATE_NODES 1
72#define STMT_1_INFO {"STMT_CREATE_NODES", NULL}
73#define STMT_1 \
74  "CREATE TABLE NODES ( " \
75  "  wc_id  INTEGER NOT NULL REFERENCES WCROOT (id), " \
76  "  local_relpath  TEXT NOT NULL, " \
77  "  op_depth INTEGER NOT NULL, " \
78  "  parent_relpath  TEXT, " \
79  "  repos_id  INTEGER REFERENCES REPOSITORY (id), " \
80  "  repos_path  TEXT, " \
81  "  revision  INTEGER, " \
82  "  presence  TEXT NOT NULL, " \
83  "  moved_here  INTEGER, " \
84  "  moved_to  TEXT, " \
85  "  kind  TEXT NOT NULL, " \
86  "  properties  BLOB, " \
87  "  depth  TEXT, " \
88  "  checksum  TEXT REFERENCES PRISTINE (checksum), " \
89  "  symlink_target  TEXT, " \
90  "  changed_revision  INTEGER, " \
91  "  changed_date      INTEGER, " \
92  "  changed_author    TEXT, " \
93  "  translated_size  INTEGER, " \
94  "  last_mod_time  INTEGER, " \
95  "  dav_cache  BLOB, " \
96  "  file_external  INTEGER, " \
97  "  inherited_props  BLOB, " \
98  "  PRIMARY KEY (wc_id, local_relpath, op_depth) " \
99  "  ); " \
100  "CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, " \
101  "                                             local_relpath, op_depth); " \
102  "CREATE UNIQUE INDEX I_NODES_MOVED ON NODES (wc_id, moved_to, op_depth); " \
103  "CREATE VIEW NODES_CURRENT AS " \
104  "  SELECT * FROM nodes AS n " \
105  "    WHERE op_depth = (SELECT MAX(op_depth) FROM nodes AS n2 " \
106  "                      WHERE n2.wc_id = n.wc_id " \
107  "                        AND n2.local_relpath = n.local_relpath); " \
108  "CREATE VIEW NODES_BASE AS " \
109  "  SELECT * FROM nodes " \
110  "  WHERE op_depth = 0; " \
111  ""
112
113#define STMT_CREATE_NODES_TRIGGERS 2
114#define STMT_2_INFO {"STMT_CREATE_NODES_TRIGGERS", NULL}
115#define STMT_2 \
116  "CREATE TRIGGER nodes_insert_trigger " \
117  "AFTER INSERT ON nodes " \
118  "WHEN NEW.checksum IS NOT NULL " \
119  "BEGIN " \
120  "  UPDATE pristine SET refcount = refcount + 1 " \
121  "  WHERE checksum = NEW.checksum; " \
122  "END; " \
123  "CREATE TRIGGER nodes_delete_trigger " \
124  "AFTER DELETE ON nodes " \
125  "WHEN OLD.checksum IS NOT NULL " \
126  "BEGIN " \
127  "  UPDATE pristine SET refcount = refcount - 1 " \
128  "  WHERE checksum = OLD.checksum; " \
129  "END; " \
130  "CREATE TRIGGER nodes_update_checksum_trigger " \
131  "AFTER UPDATE OF checksum ON nodes " \
132  "WHEN NEW.checksum IS NOT OLD.checksum " \
133  "BEGIN " \
134  "  UPDATE pristine SET refcount = refcount + 1 " \
135  "  WHERE checksum = NEW.checksum; " \
136  "  UPDATE pristine SET refcount = refcount - 1 " \
137  "  WHERE checksum = OLD.checksum; " \
138  "END; " \
139  ""
140
141#define STMT_CREATE_EXTERNALS 3
142#define STMT_3_INFO {"STMT_CREATE_EXTERNALS", NULL}
143#define STMT_3 \
144  "CREATE TABLE EXTERNALS ( " \
145  "  wc_id  INTEGER NOT NULL REFERENCES WCROOT (id), " \
146  "  local_relpath  TEXT NOT NULL, " \
147  "  parent_relpath  TEXT NOT NULL, " \
148  "  repos_id  INTEGER NOT NULL REFERENCES REPOSITORY (id), " \
149  "  presence  TEXT NOT NULL, " \
150  "  kind  TEXT NOT NULL, " \
151  "  def_local_relpath         TEXT NOT NULL, " \
152  "  def_repos_relpath         TEXT NOT NULL, " \
153  "  def_operational_revision  TEXT, " \
154  "  def_revision              TEXT, " \
155  "  PRIMARY KEY (wc_id, local_relpath) " \
156  "); " \
157  "CREATE UNIQUE INDEX I_EXTERNALS_DEFINED ON EXTERNALS (wc_id, " \
158  "                                                      def_local_relpath, " \
159  "                                                      local_relpath); " \
160  ""
161
162#define STMT_INSTALL_SCHEMA_STATISTICS 4
163#define STMT_4_INFO {"STMT_INSTALL_SCHEMA_STATISTICS", NULL}
164#define STMT_4 \
165  "ANALYZE sqlite_master; " \
166  "DELETE FROM sqlite_stat1 " \
167  "WHERE tbl in ('NODES', 'ACTUAL_NODE', 'LOCK', 'WC_LOCK', 'EXTERNALS'); " \
168  "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
169  "    ('NODES', 'sqlite_autoindex_NODES_1',               '8000 8000 2 1'); " \
170  "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
171  "    ('NODES', 'I_NODES_PARENT',                         '8000 8000 10 2 1'); " \
172  "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
173  "    ('NODES', 'I_NODES_MOVED',                          '8000 8000 1 1'); " \
174  "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
175  "    ('ACTUAL_NODE', 'sqlite_autoindex_ACTUAL_NODE_1',   '8000 8000 1'); " \
176  "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
177  "    ('ACTUAL_NODE', 'I_ACTUAL_PARENT',                  '8000 8000 10 1'); " \
178  "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
179  "    ('LOCK', 'sqlite_autoindex_LOCK_1',                 '100 100 1'); " \
180  "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
181  "    ('WC_LOCK', 'sqlite_autoindex_WC_LOCK_1',           '100 100 1'); " \
182  "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
183  "    ('EXTERNALS','sqlite_autoindex_EXTERNALS_1',        '100 100 1'); " \
184  "INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES " \
185  "    ('EXTERNALS','I_EXTERNALS_DEFINED',                 '100 100 3 1'); " \
186  "ANALYZE sqlite_master; " \
187  ""
188
189#define STMT_UPGRADE_TO_20 5
190#define STMT_5_INFO {"STMT_UPGRADE_TO_20", NULL}
191#define STMT_5 \
192  "UPDATE BASE_NODE SET checksum = (SELECT checksum FROM pristine " \
193  "                                 WHERE md5_checksum = BASE_NODE.checksum) " \
194  "WHERE EXISTS (SELECT 1 FROM pristine WHERE md5_checksum = BASE_NODE.checksum); " \
195  "UPDATE WORKING_NODE SET checksum = (SELECT checksum FROM pristine " \
196  "                                    WHERE md5_checksum = WORKING_NODE.checksum) " \
197  "WHERE EXISTS (SELECT 1 FROM pristine " \
198  "              WHERE md5_checksum = WORKING_NODE.checksum); " \
199  "INSERT INTO NODES ( " \
200  "       wc_id, local_relpath, op_depth, parent_relpath, " \
201  "       repos_id, repos_path, revision, " \
202  "       presence, depth, moved_here, moved_to, kind, " \
203  "       changed_revision, changed_date, changed_author, " \
204  "       checksum, properties, translated_size, last_mod_time, " \
205  "       dav_cache, symlink_target, file_external ) " \
206  "SELECT wc_id, local_relpath, 0 , parent_relpath, " \
207  "       repos_id, repos_relpath, revnum, " \
208  "       presence, depth, NULL , NULL , kind, " \
209  "       changed_rev, changed_date, changed_author, " \
210  "       checksum, properties, translated_size, last_mod_time, " \
211  "       dav_cache, symlink_target, file_external " \
212  "FROM BASE_NODE; " \
213  "INSERT INTO NODES ( " \
214  "       wc_id, local_relpath, op_depth, parent_relpath, " \
215  "       repos_id, repos_path, revision, " \
216  "       presence, depth, moved_here, moved_to, kind, " \
217  "       changed_revision, changed_date, changed_author, " \
218  "       checksum, properties, translated_size, last_mod_time, " \
219  "       dav_cache, symlink_target, file_external ) " \
220  "SELECT wc_id, local_relpath, 2 , parent_relpath, " \
221  "       copyfrom_repos_id, copyfrom_repos_path, copyfrom_revnum, " \
222  "       presence, depth, NULL , NULL , kind, " \
223  "       changed_rev, changed_date, changed_author, " \
224  "       checksum, properties, translated_size, last_mod_time, " \
225  "       NULL , symlink_target, NULL " \
226  "FROM WORKING_NODE; " \
227  "DROP TABLE BASE_NODE; " \
228  "DROP TABLE WORKING_NODE; " \
229  "PRAGMA user_version = 20; " \
230  ""
231
232#define STMT_UPGRADE_TO_21 6
233#define STMT_6_INFO {"STMT_UPGRADE_TO_21", NULL}
234#define STMT_6 \
235  "PRAGMA user_version = 21; " \
236  ""
237
238#define STMT_UPGRADE_21_SELECT_OLD_TREE_CONFLICT 7
239#define STMT_7_INFO {"STMT_UPGRADE_21_SELECT_OLD_TREE_CONFLICT", NULL}
240#define STMT_7 \
241  "SELECT wc_id, local_relpath, tree_conflict_data " \
242  "FROM actual_node " \
243  "WHERE tree_conflict_data IS NOT NULL " \
244  ""
245
246#define STMT_UPGRADE_21_ERASE_OLD_CONFLICTS 8
247#define STMT_8_INFO {"STMT_UPGRADE_21_ERASE_OLD_CONFLICTS", NULL}
248#define STMT_8 \
249  "UPDATE actual_node SET tree_conflict_data = NULL " \
250  ""
251
252#define STMT_UPGRADE_TO_22 9
253#define STMT_9_INFO {"STMT_UPGRADE_TO_22", NULL}
254#define STMT_9 \
255  "UPDATE actual_node SET tree_conflict_data = conflict_data; " \
256  "UPDATE actual_node SET conflict_data = NULL; " \
257  "PRAGMA user_version = 22; " \
258  ""
259
260#define STMT_UPGRADE_TO_23 10
261#define STMT_10_INFO {"STMT_UPGRADE_TO_23", NULL}
262#define STMT_10 \
263  "PRAGMA user_version = 23; " \
264  ""
265
266#define STMT_UPGRADE_23_HAS_WORKING_NODES 11
267#define STMT_11_INFO {"STMT_UPGRADE_23_HAS_WORKING_NODES", NULL}
268#define STMT_11 \
269  "SELECT 1 FROM nodes WHERE op_depth > 0 " \
270  "LIMIT 1 " \
271  ""
272
273#define STMT_UPGRADE_TO_24 12
274#define STMT_12_INFO {"STMT_UPGRADE_TO_24", NULL}
275#define STMT_12 \
276  "UPDATE pristine SET refcount = " \
277  "  (SELECT COUNT(*) FROM nodes " \
278  "   WHERE checksum = pristine.checksum ); " \
279  "PRAGMA user_version = 24; " \
280  ""
281
282#define STMT_UPGRADE_TO_25 13
283#define STMT_13_INFO {"STMT_UPGRADE_TO_25", NULL}
284#define STMT_13 \
285  "DROP VIEW IF EXISTS NODES_CURRENT; " \
286  "CREATE VIEW NODES_CURRENT AS " \
287  "  SELECT * FROM nodes " \
288  "    JOIN (SELECT wc_id, local_relpath, MAX(op_depth) AS op_depth FROM nodes " \
289  "          GROUP BY wc_id, local_relpath) AS filter " \
290  "    ON nodes.wc_id = filter.wc_id " \
291  "      AND nodes.local_relpath = filter.local_relpath " \
292  "      AND nodes.op_depth = filter.op_depth; " \
293  "PRAGMA user_version = 25; " \
294  ""
295
296#define STMT_UPGRADE_TO_26 14
297#define STMT_14_INFO {"STMT_UPGRADE_TO_26", NULL}
298#define STMT_14 \
299  "DROP VIEW IF EXISTS NODES_BASE; " \
300  "CREATE VIEW NODES_BASE AS " \
301  "  SELECT * FROM nodes " \
302  "  WHERE op_depth = 0; " \
303  "PRAGMA user_version = 26; " \
304  ""
305
306#define STMT_UPGRADE_TO_27 15
307#define STMT_15_INFO {"STMT_UPGRADE_TO_27", NULL}
308#define STMT_15 \
309  "PRAGMA user_version = 27; " \
310  ""
311
312#define STMT_UPGRADE_27_HAS_ACTUAL_NODES_CONFLICTS 16
313#define STMT_16_INFO {"STMT_UPGRADE_27_HAS_ACTUAL_NODES_CONFLICTS", NULL}
314#define STMT_16 \
315  "SELECT 1 FROM actual_node " \
316  "WHERE NOT ((prop_reject IS NULL) AND (conflict_old IS NULL) " \
317  "           AND (conflict_new IS NULL) AND (conflict_working IS NULL) " \
318  "           AND (tree_conflict_data IS NULL)) " \
319  "LIMIT 1 " \
320  ""
321
322#define STMT_UPGRADE_TO_28 17
323#define STMT_17_INFO {"STMT_UPGRADE_TO_28", NULL}
324#define STMT_17 \
325  "UPDATE NODES SET checksum = (SELECT checksum FROM pristine " \
326  "                             WHERE md5_checksum = nodes.checksum) " \
327  "WHERE EXISTS (SELECT 1 FROM pristine WHERE md5_checksum = nodes.checksum); " \
328  "PRAGMA user_version = 28; " \
329  ""
330
331#define STMT_UPGRADE_TO_29 18
332#define STMT_18_INFO {"STMT_UPGRADE_TO_29", NULL}
333#define STMT_18 \
334  "DROP TRIGGER IF EXISTS nodes_update_checksum_trigger; " \
335  "DROP TRIGGER IF EXISTS nodes_insert_trigger; " \
336  "DROP TRIGGER IF EXISTS nodes_delete_trigger; " \
337  "CREATE TRIGGER nodes_update_checksum_trigger " \
338  "AFTER UPDATE OF checksum ON nodes " \
339  "WHEN NEW.checksum IS NOT OLD.checksum " \
340  "BEGIN " \
341  "  UPDATE pristine SET refcount = refcount + 1 " \
342  "  WHERE checksum = NEW.checksum; " \
343  "  UPDATE pristine SET refcount = refcount - 1 " \
344  "  WHERE checksum = OLD.checksum; " \
345  "END; " \
346  "CREATE TRIGGER nodes_insert_trigger " \
347  "AFTER INSERT ON nodes " \
348  "WHEN NEW.checksum IS NOT NULL " \
349  "BEGIN " \
350  "  UPDATE pristine SET refcount = refcount + 1 " \
351  "  WHERE checksum = NEW.checksum; " \
352  "END; " \
353  "CREATE TRIGGER nodes_delete_trigger " \
354  "AFTER DELETE ON nodes " \
355  "WHEN OLD.checksum IS NOT NULL " \
356  "BEGIN " \
357  "  UPDATE pristine SET refcount = refcount - 1 " \
358  "  WHERE checksum = OLD.checksum; " \
359  "END; " \
360  "PRAGMA user_version = 29; " \
361  ""
362
363#define STMT_UPGRADE_TO_30 19
364#define STMT_19_INFO {"STMT_UPGRADE_TO_30", NULL}
365#define STMT_19 \
366  "CREATE UNIQUE INDEX IF NOT EXISTS I_NODES_MOVED " \
367  "ON NODES (wc_id, moved_to, op_depth); " \
368  "CREATE INDEX IF NOT EXISTS I_PRISTINE_MD5 ON PRISTINE (md5_checksum); " \
369  "UPDATE nodes SET presence = \"server-excluded\" WHERE presence = \"absent\"; " \
370  "UPDATE nodes SET file_external=1 WHERE file_external IS NOT NULL; " \
371  ""
372
373#define STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE 20
374#define STMT_20_INFO {"STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE", NULL}
375#define STMT_20 \
376  "SELECT wc_id, local_relpath, " \
377  "  conflict_old, conflict_working, conflict_new, prop_reject, tree_conflict_data " \
378  "FROM actual_node " \
379  "WHERE conflict_old IS NOT NULL " \
380  "   OR conflict_working IS NOT NULL " \
381  "   OR conflict_new IS NOT NULL " \
382  "   OR prop_reject IS NOT NULL " \
383  "   OR tree_conflict_data IS NOT NULL " \
384  "ORDER by wc_id, local_relpath " \
385  ""
386
387#define STMT_UPGRADE_30_SET_CONFLICT 21
388#define STMT_21_INFO {"STMT_UPGRADE_30_SET_CONFLICT", NULL}
389#define STMT_21 \
390  "UPDATE actual_node SET conflict_data = ?3, conflict_old = NULL, " \
391  "  conflict_working = NULL, conflict_new = NULL, prop_reject = NULL, " \
392  "  tree_conflict_data = NULL " \
393  "WHERE wc_id = ?1 and local_relpath = ?2 " \
394  ""
395
396#define STMT_UPGRADE_TO_31_ALTER_TABLE 22
397#define STMT_22_INFO {"STMT_UPGRADE_TO_31_ALTER_TABLE", NULL}
398#define STMT_22 \
399  "ALTER TABLE NODES ADD COLUMN inherited_props BLOB; " \
400  ""
401
402#define STMT_UPGRADE_TO_31_FINALIZE 23
403#define STMT_23_INFO {"STMT_UPGRADE_TO_31_FINALIZE", NULL}
404#define STMT_23 \
405  "DROP INDEX IF EXISTS I_ACTUAL_CHANGELIST; " \
406  "DROP INDEX IF EXISTS I_EXTERNALS_PARENT; " \
407  "DROP INDEX I_NODES_PARENT; " \
408  "CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, " \
409  "                                             local_relpath, op_depth); " \
410  "DROP INDEX I_ACTUAL_PARENT; " \
411  "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \
412  "                                                    local_relpath); " \
413  "PRAGMA user_version = 31; " \
414  ""
415
416#define STMT_UPGRADE_31_SELECT_WCROOT_NODES 24
417#define STMT_24_INFO {"STMT_UPGRADE_31_SELECT_WCROOT_NODES", NULL}
418#define STMT_24 \
419  "SELECT l.wc_id, l.local_relpath FROM nodes as l " \
420  "LEFT OUTER JOIN nodes as r " \
421  "ON l.wc_id = r.wc_id " \
422  "   AND r.local_relpath = l.parent_relpath " \
423  "   AND r.op_depth = 0 " \
424  "WHERE l.op_depth = 0 " \
425  "  AND l.repos_path != '' " \
426  "  AND ((l.repos_id IS NOT r.repos_id) " \
427  "       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))) " \
428  ""
429
430#define STMT_UPGRADE_TO_32 25
431#define STMT_25_INFO {"STMT_UPGRADE_TO_32", NULL}
432#define STMT_25 \
433  "DROP INDEX IF EXISTS I_ACTUAL_CHANGELIST; " \
434  "DROP INDEX IF EXISTS I_EXTERNALS_PARENT; " \
435  "CREATE INDEX I_EXTERNALS_PARENT ON EXTERNALS (wc_id, parent_relpath); " \
436  "DROP INDEX I_NODES_PARENT; " \
437  "CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, " \
438  "                                             local_relpath, op_depth); " \
439  "DROP INDEX I_ACTUAL_PARENT; " \
440  "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \
441  "                                                    local_relpath); " \
442  "-- format: YYY " \
443  ""
444
445#define WC_METADATA_SQL_99 \
446  "CREATE TABLE ACTUAL_NODE_BACKUP ( " \
447  "  wc_id  INTEGER NOT NULL, " \
448  "  local_relpath  TEXT NOT NULL, " \
449  "  parent_relpath  TEXT, " \
450  "  properties  BLOB, " \
451  "  conflict_old  TEXT, " \
452  "  conflict_new  TEXT, " \
453  "  conflict_working  TEXT, " \
454  "  prop_reject  TEXT, " \
455  "  changelist  TEXT, " \
456  "  text_mod  TEXT " \
457  "  ); " \
458  "INSERT INTO ACTUAL_NODE_BACKUP SELECT " \
459  "  wc_id, local_relpath, parent_relpath, properties, conflict_old, " \
460  "  conflict_new, conflict_working, prop_reject, changelist, text_mod " \
461  "FROM ACTUAL_NODE; " \
462  "DROP TABLE ACTUAL_NODE; " \
463  "CREATE TABLE ACTUAL_NODE ( " \
464  "  wc_id  INTEGER NOT NULL REFERENCES WCROOT (id), " \
465  "  local_relpath  TEXT NOT NULL, " \
466  "  parent_relpath  TEXT, " \
467  "  properties  BLOB, " \
468  "  conflict_old  TEXT, " \
469  "  conflict_new  TEXT, " \
470  "  conflict_working  TEXT, " \
471  "  prop_reject  TEXT, " \
472  "  changelist  TEXT, " \
473  "  text_mod  TEXT, " \
474  "  PRIMARY KEY (wc_id, local_relpath) " \
475  "  ); " \
476  "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \
477  "                                                    local_relpath); " \
478  "INSERT INTO ACTUAL_NODE SELECT " \
479  "  wc_id, local_relpath, parent_relpath, properties, conflict_old, " \
480  "  conflict_new, conflict_working, prop_reject, changelist, text_mod " \
481  "FROM ACTUAL_NODE_BACKUP; " \
482  "DROP TABLE ACTUAL_NODE_BACKUP; " \
483  ""
484
485#define WC_METADATA_SQL_DECLARE_STATEMENTS(varname) \
486  static const char * const varname[] = { \
487    STMT_0, \
488    STMT_1, \
489    STMT_2, \
490    STMT_3, \
491    STMT_4, \
492    STMT_5, \
493    STMT_6, \
494    STMT_7, \
495    STMT_8, \
496    STMT_9, \
497    STMT_10, \
498    STMT_11, \
499    STMT_12, \
500    STMT_13, \
501    STMT_14, \
502    STMT_15, \
503    STMT_16, \
504    STMT_17, \
505    STMT_18, \
506    STMT_19, \
507    STMT_20, \
508    STMT_21, \
509    STMT_22, \
510    STMT_23, \
511    STMT_24, \
512    STMT_25, \
513    NULL \
514  }
515
516#define WC_METADATA_SQL_DECLARE_STATEMENT_INFO(varname) \
517  static const char * const varname[][2] = { \
518    STMT_0_INFO, \
519    STMT_1_INFO, \
520    STMT_2_INFO, \
521    STMT_3_INFO, \
522    STMT_4_INFO, \
523    STMT_5_INFO, \
524    STMT_6_INFO, \
525    STMT_7_INFO, \
526    STMT_8_INFO, \
527    STMT_9_INFO, \
528    STMT_10_INFO, \
529    STMT_11_INFO, \
530    STMT_12_INFO, \
531    STMT_13_INFO, \
532    STMT_14_INFO, \
533    STMT_15_INFO, \
534    STMT_16_INFO, \
535    STMT_17_INFO, \
536    STMT_18_INFO, \
537    STMT_19_INFO, \
538    STMT_20_INFO, \
539    STMT_21_INFO, \
540    STMT_22_INFO, \
541    STMT_23_INFO, \
542    STMT_24_INFO, \
543    STMT_25_INFO, \
544    {NULL, NULL} \
545  }
546