wc-queries.h revision 253734
1/* This file is automatically generated from wc-queries.sql and .dist_sandbox/subversion-1.8.1/subversion/libsvn_wc/token-map.h.
2 * Do not edit this file -- edit the source and rerun gen-make.py */
3
4#define STMT_SELECT_NODE_INFO 0
5#define STMT_0_INFO {"STMT_SELECT_NODE_INFO", NULL}
6#define STMT_0 \
7  "SELECT op_depth, repos_id, repos_path, presence, kind, revision, checksum, " \
8  "  translated_size, changed_revision, changed_date, changed_author, depth, " \
9  "  symlink_target, last_mod_time, properties, moved_here, inherited_props, " \
10  "  moved_to " \
11  "FROM nodes " \
12  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
13  "ORDER BY op_depth DESC " \
14  ""
15
16#define STMT_SELECT_NODE_INFO_WITH_LOCK 1
17#define STMT_1_INFO {"STMT_SELECT_NODE_INFO_WITH_LOCK", NULL}
18#define STMT_1 \
19  "SELECT op_depth, nodes.repos_id, nodes.repos_path, presence, kind, revision, " \
20  "  checksum, translated_size, changed_revision, changed_date, changed_author, " \
21  "  depth, symlink_target, last_mod_time, properties, moved_here, " \
22  "  inherited_props, " \
23  "  lock_token, lock_owner, lock_comment, lock_date " \
24  "FROM nodes " \
25  "LEFT OUTER JOIN lock ON nodes.repos_id = lock.repos_id " \
26  "  AND nodes.repos_path = lock.repos_relpath " \
27  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
28  "ORDER BY op_depth DESC " \
29  ""
30
31#define STMT_SELECT_BASE_NODE 2
32#define STMT_2_INFO {"STMT_SELECT_BASE_NODE", NULL}
33#define STMT_2 \
34  "SELECT repos_id, repos_path, presence, kind, revision, checksum, " \
35  "  translated_size, changed_revision, changed_date, changed_author, depth, " \
36  "  symlink_target, last_mod_time, properties, file_external " \
37  "FROM nodes " \
38  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
39  ""
40
41#define STMT_SELECT_BASE_NODE_WITH_LOCK 3
42#define STMT_3_INFO {"STMT_SELECT_BASE_NODE_WITH_LOCK", NULL}
43#define STMT_3 \
44  "SELECT nodes.repos_id, nodes.repos_path, presence, kind, revision, " \
45  "  checksum, translated_size, changed_revision, changed_date, changed_author, " \
46  "  depth, symlink_target, last_mod_time, properties, file_external, " \
47  "  lock_token, lock_owner, lock_comment, lock_date " \
48  "FROM nodes " \
49  "LEFT OUTER JOIN lock ON nodes.repos_id = lock.repos_id " \
50  "  AND nodes.repos_path = lock.repos_relpath " \
51  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
52  ""
53
54#define STMT_SELECT_BASE_CHILDREN_INFO 4
55#define STMT_4_INFO {"STMT_SELECT_BASE_CHILDREN_INFO", NULL}
56#define STMT_4 \
57  "SELECT local_relpath, nodes.repos_id, nodes.repos_path, presence, kind, " \
58  "  revision, depth, file_external, " \
59  "  lock_token, lock_owner, lock_comment, lock_date " \
60  "FROM nodes " \
61  "LEFT OUTER JOIN lock ON nodes.repos_id = lock.repos_id " \
62  "  AND nodes.repos_path = lock.repos_relpath " \
63  "WHERE wc_id = ?1 AND parent_relpath = ?2 AND op_depth = 0 " \
64  ""
65
66#define STMT_SELECT_WORKING_NODE 5
67#define STMT_5_INFO {"STMT_SELECT_WORKING_NODE", NULL}
68#define STMT_5 \
69  "SELECT op_depth, presence, kind, checksum, translated_size, " \
70  "  changed_revision, changed_date, changed_author, depth, symlink_target, " \
71  "  repos_id, repos_path, revision, " \
72  "  moved_here, moved_to, last_mod_time, properties " \
73  "FROM nodes " \
74  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > 0 " \
75  "ORDER BY op_depth DESC " \
76  "LIMIT 1 " \
77  ""
78
79#define STMT_SELECT_DEPTH_NODE 6
80#define STMT_6_INFO {"STMT_SELECT_DEPTH_NODE", NULL}
81#define STMT_6 \
82  "SELECT repos_id, repos_path, presence, kind, revision, checksum, " \
83  "  translated_size, changed_revision, changed_date, changed_author, depth, " \
84  "  symlink_target, last_mod_time, properties " \
85  "FROM nodes " \
86  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \
87  ""
88
89#define STMT_SELECT_LOWEST_WORKING_NODE 7
90#define STMT_7_INFO {"STMT_SELECT_LOWEST_WORKING_NODE", NULL}
91#define STMT_7 \
92  "SELECT op_depth, presence, kind, moved_to " \
93  "FROM nodes " \
94  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > ?3 " \
95  "ORDER BY op_depth " \
96  "LIMIT 1 " \
97  ""
98
99#define STMT_SELECT_HIGHEST_WORKING_NODE 8
100#define STMT_8_INFO {"STMT_SELECT_HIGHEST_WORKING_NODE", NULL}
101#define STMT_8 \
102  "SELECT op_depth " \
103  "FROM nodes " \
104  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth < ?3 " \
105  "ORDER BY op_depth DESC " \
106  "LIMIT 1 " \
107  ""
108
109#define STMT_SELECT_ACTUAL_NODE 9
110#define STMT_9_INFO {"STMT_SELECT_ACTUAL_NODE", NULL}
111#define STMT_9 \
112  "SELECT changelist, properties, conflict_data " \
113  "FROM actual_node " \
114  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
115  ""
116
117#define STMT_SELECT_NODE_CHILDREN_INFO 10
118#define STMT_10_INFO {"STMT_SELECT_NODE_CHILDREN_INFO", NULL}
119#define STMT_10 \
120  "SELECT op_depth, nodes.repos_id, nodes.repos_path, presence, kind, revision, " \
121  "  checksum, translated_size, changed_revision, changed_date, changed_author, " \
122  "  depth, symlink_target, last_mod_time, properties, lock_token, lock_owner, " \
123  "  lock_comment, lock_date, local_relpath, moved_here, moved_to, file_external " \
124  "FROM nodes " \
125  "LEFT OUTER JOIN lock ON nodes.repos_id = lock.repos_id " \
126  "  AND nodes.repos_path = lock.repos_relpath AND op_depth = 0 " \
127  "WHERE wc_id = ?1 AND parent_relpath = ?2 " \
128  ""
129
130#define STMT_SELECT_NODE_CHILDREN_WALKER_INFO 11
131#define STMT_11_INFO {"STMT_SELECT_NODE_CHILDREN_WALKER_INFO", NULL}
132#define STMT_11 \
133  "SELECT local_relpath, op_depth, presence, kind " \
134  "FROM nodes_current " \
135  "WHERE wc_id = ?1 AND parent_relpath = ?2 " \
136  ""
137
138#define STMT_SELECT_ACTUAL_CHILDREN_INFO 12
139#define STMT_12_INFO {"STMT_SELECT_ACTUAL_CHILDREN_INFO", NULL}
140#define STMT_12 \
141  "SELECT local_relpath, changelist, properties, conflict_data " \
142  "FROM actual_node " \
143  "WHERE wc_id = ?1 AND parent_relpath = ?2 " \
144  ""
145
146#define STMT_SELECT_REPOSITORY_BY_ID 13
147#define STMT_13_INFO {"STMT_SELECT_REPOSITORY_BY_ID", NULL}
148#define STMT_13 \
149  "SELECT root, uuid FROM repository WHERE id = ?1 " \
150  ""
151
152#define STMT_SELECT_WCROOT_NULL 14
153#define STMT_14_INFO {"STMT_SELECT_WCROOT_NULL", NULL}
154#define STMT_14 \
155  "SELECT id FROM wcroot WHERE local_abspath IS NULL " \
156  ""
157
158#define STMT_SELECT_REPOSITORY 15
159#define STMT_15_INFO {"STMT_SELECT_REPOSITORY", NULL}
160#define STMT_15 \
161  "SELECT id FROM repository WHERE root = ?1 " \
162  ""
163
164#define STMT_INSERT_REPOSITORY 16
165#define STMT_16_INFO {"STMT_INSERT_REPOSITORY", NULL}
166#define STMT_16 \
167  "INSERT INTO repository (root, uuid) VALUES (?1, ?2) " \
168  ""
169
170#define STMT_INSERT_NODE 17
171#define STMT_17_INFO {"STMT_INSERT_NODE", NULL}
172#define STMT_17 \
173  "INSERT OR REPLACE INTO nodes ( " \
174  "  wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \
175  "  revision, presence, depth, kind, changed_revision, changed_date, " \
176  "  changed_author, checksum, properties, translated_size, last_mod_time, " \
177  "  dav_cache, symlink_target, file_external, moved_to, moved_here, " \
178  "  inherited_props) " \
179  "VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, " \
180  "        ?15, ?16, ?17, ?18, ?19, ?20, ?21, ?22, ?23) " \
181  ""
182
183#define STMT_SELECT_BASE_PRESENT 18
184#define STMT_18_INFO {"STMT_SELECT_BASE_PRESENT", NULL}
185#define STMT_18 \
186  "SELECT local_relpath, kind FROM nodes n " \
187  "WHERE wc_id = ?1 AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
188  "  AND op_depth = 0 " \
189  "  AND presence in ('normal', 'incomplete') " \
190  "  AND NOT EXISTS(SELECT 1 FROM NODES w " \
191  "                 WHERE w.wc_id = ?1 AND w.local_relpath = n.local_relpath " \
192  "                   AND op_depth > 0) " \
193  "ORDER BY local_relpath DESC " \
194  ""
195
196#define STMT_SELECT_WORKING_PRESENT 19
197#define STMT_19_INFO {"STMT_SELECT_WORKING_PRESENT", NULL}
198#define STMT_19 \
199  "SELECT local_relpath, kind, checksum, translated_size, last_mod_time " \
200  "FROM nodes n " \
201  "WHERE wc_id = ?1 " \
202  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
203  "  AND presence in ('normal', 'incomplete') " \
204  "  AND op_depth = (SELECT MAX(op_depth) " \
205  "                  FROM NODES w " \
206  "                  WHERE w.wc_id = ?1 " \
207  "                    AND w.local_relpath = n.local_relpath) " \
208  "ORDER BY local_relpath DESC " \
209  ""
210
211#define STMT_DELETE_NODE_RECURSIVE 20
212#define STMT_20_INFO {"STMT_DELETE_NODE_RECURSIVE", NULL}
213#define STMT_20 \
214  "DELETE FROM NODES " \
215  "WHERE wc_id = ?1 " \
216  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
217  ""
218
219#define STMT_DELETE_NODE 21
220#define STMT_21_INFO {"STMT_DELETE_NODE", NULL}
221#define STMT_21 \
222  "DELETE " \
223  "FROM NODES " \
224  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
225  ""
226
227#define STMT_DELETE_ACTUAL_FOR_BASE_RECURSIVE 22
228#define STMT_22_INFO {"STMT_DELETE_ACTUAL_FOR_BASE_RECURSIVE", NULL}
229#define STMT_22 \
230  "DELETE FROM actual_node " \
231  "WHERE wc_id = ?1 AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
232  "  AND EXISTS(SELECT 1 FROM NODES b " \
233  "             WHERE b.wc_id = ?1 " \
234  "               AND b.local_relpath = actual_node.local_relpath " \
235  "               AND op_depth = 0) " \
236  "  AND NOT EXISTS(SELECT 1 FROM NODES w " \
237  "                 WHERE w.wc_id = ?1 " \
238  "                   AND w.local_relpath = actual_node.local_relpath " \
239  "                   AND op_depth > 0 " \
240  "                   AND presence in ('normal', 'incomplete', 'not-present')) " \
241  ""
242
243#define STMT_DELETE_WORKING_BASE_DELETE 23
244#define STMT_23_INFO {"STMT_DELETE_WORKING_BASE_DELETE", NULL}
245#define STMT_23 \
246  "DELETE FROM nodes " \
247  "WHERE wc_id = ?1 AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
248  "  AND presence = 'base-deleted' " \
249  "  AND op_depth > 0 " \
250  "  AND op_depth = (SELECT MIN(op_depth) FROM nodes n " \
251  "                    WHERE n.wc_id = ?1 " \
252  "                      AND n.local_relpath = nodes.local_relpath " \
253  "                      AND op_depth > 0) " \
254  ""
255
256#define STMT_DELETE_WORKING_RECURSIVE 24
257#define STMT_24_INFO {"STMT_DELETE_WORKING_RECURSIVE", NULL}
258#define STMT_24 \
259  "DELETE FROM nodes " \
260  "WHERE wc_id = ?1 AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
261  "  AND op_depth > 0 " \
262  ""
263
264#define STMT_DELETE_BASE_RECURSIVE 25
265#define STMT_25_INFO {"STMT_DELETE_BASE_RECURSIVE", NULL}
266#define STMT_25 \
267  "DELETE FROM nodes " \
268  "WHERE wc_id = ?1 AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
269  "  AND op_depth = 0 " \
270  ""
271
272#define STMT_DELETE_WORKING_OP_DEPTH 26
273#define STMT_26_INFO {"STMT_DELETE_WORKING_OP_DEPTH", NULL}
274#define STMT_26 \
275  "DELETE FROM nodes " \
276  "WHERE wc_id = ?1 " \
277  "  AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
278  "  AND op_depth = ?3 " \
279  ""
280
281#define STMT_DELETE_WORKING_OP_DEPTH_ABOVE 27
282#define STMT_27_INFO {"STMT_DELETE_WORKING_OP_DEPTH_ABOVE", NULL}
283#define STMT_27 \
284  "DELETE FROM nodes " \
285  "WHERE wc_id = ?1 " \
286  "  AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
287  "  AND op_depth > ?3 " \
288  ""
289
290#define STMT_SELECT_LOCAL_RELPATH_OP_DEPTH 28
291#define STMT_28_INFO {"STMT_SELECT_LOCAL_RELPATH_OP_DEPTH", NULL}
292#define STMT_28 \
293  "SELECT local_relpath " \
294  "FROM nodes " \
295  "WHERE wc_id = ?1 " \
296  "  AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
297  "  AND op_depth = ?3 " \
298  ""
299
300#define STMT_SELECT_CHILDREN_OP_DEPTH 29
301#define STMT_29_INFO {"STMT_SELECT_CHILDREN_OP_DEPTH", NULL}
302#define STMT_29 \
303  "SELECT local_relpath, kind " \
304  "FROM nodes " \
305  "WHERE wc_id = ?1 " \
306  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
307  "  AND op_depth = ?3 " \
308  "ORDER BY local_relpath DESC " \
309  ""
310
311#define STMT_COPY_NODE_MOVE 30
312#define STMT_30_INFO {"STMT_COPY_NODE_MOVE", NULL}
313#define STMT_30 \
314  "INSERT OR REPLACE INTO nodes ( " \
315  "    wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \
316  "    revision, presence, depth, kind, changed_revision, changed_date, " \
317  "    changed_author, checksum, properties, translated_size, last_mod_time, " \
318  "    symlink_target, moved_here, moved_to ) " \
319  "SELECT " \
320  "    wc_id, ?4 , ?5 , ?6 , " \
321  "    repos_id, " \
322  "    repos_path, revision, presence, depth, kind, changed_revision, " \
323  "    changed_date, changed_author, checksum, properties, translated_size, " \
324  "    last_mod_time, symlink_target, 1, " \
325  "    (SELECT dst.moved_to FROM nodes AS dst " \
326  "                         WHERE dst.wc_id = ?1 " \
327  "                         AND dst.local_relpath = ?4 " \
328  "                         AND dst.op_depth = ?5) " \
329  "FROM nodes " \
330  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \
331  ""
332
333#define STMT_SELECT_OP_DEPTH_CHILDREN 31
334#define STMT_31_INFO {"STMT_SELECT_OP_DEPTH_CHILDREN", NULL}
335#define STMT_31 \
336  "SELECT local_relpath, kind FROM nodes " \
337  "WHERE wc_id = ?1 " \
338  "  AND parent_relpath = ?2 " \
339  "  AND op_depth = ?3 " \
340  "  AND presence != 'base-deleted' " \
341  "  AND file_external is NULL " \
342  ""
343
344#define STMT_SELECT_GE_OP_DEPTH_CHILDREN 32
345#define STMT_32_INFO {"STMT_SELECT_GE_OP_DEPTH_CHILDREN", NULL}
346#define STMT_32 \
347  "SELECT 1 FROM nodes " \
348  "WHERE wc_id = ?1 AND parent_relpath = ?2 " \
349  "  AND (op_depth > ?3 OR (op_depth = ?3 AND presence != 'base-deleted')) " \
350  "UNION ALL " \
351  "SELECT 1 FROM ACTUAL_NODE a " \
352  "WHERE wc_id = ?1 AND parent_relpath = ?2 " \
353  "  AND NOT EXISTS (SELECT 1 FROM nodes n " \
354  "                   WHERE wc_id = ?1 AND n.local_relpath = a.local_relpath) " \
355  ""
356
357#define STMT_DELETE_SHADOWED_RECURSIVE 33
358#define STMT_33_INFO {"STMT_DELETE_SHADOWED_RECURSIVE", NULL}
359#define STMT_33 \
360  "DELETE FROM nodes " \
361  "WHERE wc_id = ?1 " \
362  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
363  "  AND (op_depth < ?3 " \
364  "       OR (op_depth = ?3 AND presence = 'base-deleted')) " \
365  ""
366
367#define STMT_CLEAR_MOVED_TO_FROM_DEST 34
368#define STMT_34_INFO {"STMT_CLEAR_MOVED_TO_FROM_DEST", NULL}
369#define STMT_34 \
370  "UPDATE NODES SET moved_to = NULL " \
371  "WHERE wc_id = ?1 " \
372  "  AND moved_to = ?2 " \
373  ""
374
375#define STMT_SELECT_NOT_PRESENT_DESCENDANTS 35
376#define STMT_35_INFO {"STMT_SELECT_NOT_PRESENT_DESCENDANTS", NULL}
377#define STMT_35 \
378  "SELECT local_relpath FROM nodes " \
379  "WHERE wc_id = ?1 AND op_depth = ?3 " \
380  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
381  "  AND presence = 'not-present' " \
382  ""
383
384#define STMT_COMMIT_DESCENDANTS_TO_BASE 36
385#define STMT_36_INFO {"STMT_COMMIT_DESCENDANTS_TO_BASE", NULL}
386#define STMT_36 \
387  "UPDATE NODES SET op_depth = 0, " \
388  "                 repos_id = ?4, " \
389  "                 repos_path = ?5 || SUBSTR(local_relpath, LENGTH(?2)+1), " \
390  "                 revision = ?6, " \
391  "                 dav_cache = NULL, " \
392  "                 moved_here = NULL, " \
393  "                 presence = CASE presence " \
394  "                              WHEN 'normal' THEN 'normal' " \
395  "                              WHEN 'excluded' THEN 'excluded' " \
396  "                              ELSE 'not-present' " \
397  "                            END " \
398  "WHERE wc_id = ?1 " \
399  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
400  "  AND op_depth = ?3 " \
401  ""
402
403#define STMT_SELECT_NODE_CHILDREN 37
404#define STMT_37_INFO {"STMT_SELECT_NODE_CHILDREN", NULL}
405#define STMT_37 \
406  "SELECT local_relpath FROM nodes " \
407  "WHERE wc_id = ?1 AND parent_relpath = ?2 " \
408  ""
409
410#define STMT_SELECT_WORKING_CHILDREN 38
411#define STMT_38_INFO {"STMT_SELECT_WORKING_CHILDREN", NULL}
412#define STMT_38 \
413  "SELECT local_relpath FROM nodes " \
414  "WHERE wc_id = ?1 AND parent_relpath = ?2 " \
415  "  AND (op_depth > (SELECT MAX(op_depth) FROM nodes " \
416  "                   WHERE wc_id = ?1 AND local_relpath = ?2) " \
417  "       OR " \
418  "       (op_depth = (SELECT MAX(op_depth) FROM nodes " \
419  "                    WHERE wc_id = ?1 AND local_relpath = ?2) " \
420  "        AND presence != 'base-deleted')) " \
421  ""
422
423#define STMT_SELECT_NODE_PROPS 39
424#define STMT_39_INFO {"STMT_SELECT_NODE_PROPS", NULL}
425#define STMT_39 \
426  "SELECT properties, presence FROM nodes " \
427  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
428  "ORDER BY op_depth DESC " \
429  ""
430
431#define STMT_SELECT_ACTUAL_PROPS 40
432#define STMT_40_INFO {"STMT_SELECT_ACTUAL_PROPS", NULL}
433#define STMT_40 \
434  "SELECT properties FROM actual_node " \
435  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
436  ""
437
438#define STMT_UPDATE_ACTUAL_PROPS 41
439#define STMT_41_INFO {"STMT_UPDATE_ACTUAL_PROPS", NULL}
440#define STMT_41 \
441  "UPDATE actual_node SET properties = ?3 " \
442  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
443  ""
444
445#define STMT_INSERT_ACTUAL_PROPS 42
446#define STMT_42_INFO {"STMT_INSERT_ACTUAL_PROPS", NULL}
447#define STMT_42 \
448  "INSERT INTO actual_node (wc_id, local_relpath, parent_relpath, properties) " \
449  "VALUES (?1, ?2, ?3, ?4) " \
450  ""
451
452#define STMT_INSERT_LOCK 43
453#define STMT_43_INFO {"STMT_INSERT_LOCK", NULL}
454#define STMT_43 \
455  "INSERT OR REPLACE INTO lock " \
456  "(repos_id, repos_relpath, lock_token, lock_owner, lock_comment, " \
457  " lock_date) " \
458  "VALUES (?1, ?2, ?3, ?4, ?5, ?6) " \
459  ""
460
461#define STMT_SELECT_BASE_NODE_LOCK_TOKENS_RECURSIVE 44
462#define STMT_44_INFO {"STMT_SELECT_BASE_NODE_LOCK_TOKENS_RECURSIVE", NULL}
463#define STMT_44 \
464  "SELECT nodes.repos_id, nodes.repos_path, lock_token " \
465  "FROM nodes " \
466  "LEFT JOIN lock ON nodes.repos_id = lock.repos_id " \
467  "  AND nodes.repos_path = lock.repos_relpath " \
468  "WHERE wc_id = ?1 AND op_depth = 0 " \
469  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
470  ""
471
472#define STMT_INSERT_WCROOT 45
473#define STMT_45_INFO {"STMT_INSERT_WCROOT", NULL}
474#define STMT_45 \
475  "INSERT INTO wcroot (local_abspath) " \
476  "VALUES (?1) " \
477  ""
478
479#define STMT_UPDATE_BASE_NODE_DAV_CACHE 46
480#define STMT_46_INFO {"STMT_UPDATE_BASE_NODE_DAV_CACHE", NULL}
481#define STMT_46 \
482  "UPDATE nodes SET dav_cache = ?3 " \
483  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
484  ""
485
486#define STMT_SELECT_BASE_DAV_CACHE 47
487#define STMT_47_INFO {"STMT_SELECT_BASE_DAV_CACHE", NULL}
488#define STMT_47 \
489  "SELECT dav_cache FROM nodes " \
490  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
491  ""
492
493#define STMT_SELECT_DELETION_INFO 48
494#define STMT_48_INFO {"STMT_SELECT_DELETION_INFO", NULL}
495#define STMT_48 \
496  "SELECT (SELECT b.presence FROM nodes AS b " \
497  "         WHERE b.wc_id = ?1 AND b.local_relpath = ?2 AND b.op_depth = 0), " \
498  "       work.presence, work.op_depth " \
499  "FROM nodes_current AS work " \
500  "WHERE work.wc_id = ?1 AND work.local_relpath = ?2 AND work.op_depth > 0 " \
501  "LIMIT 1 " \
502  ""
503
504#define STMT_SELECT_DELETION_INFO_SCAN 49
505#define STMT_49_INFO {"STMT_SELECT_DELETION_INFO_SCAN", NULL}
506#define STMT_49 \
507  "SELECT (SELECT b.presence FROM nodes AS b " \
508  "         WHERE b.wc_id = ?1 AND b.local_relpath = ?2 AND b.op_depth = 0), " \
509  "       work.presence, work.op_depth, moved.moved_to " \
510  "FROM nodes_current AS work " \
511  "LEFT OUTER JOIN nodes AS moved " \
512  "  ON moved.wc_id = work.wc_id " \
513  " AND moved.local_relpath = work.local_relpath " \
514  " AND moved.moved_to IS NOT NULL " \
515  "WHERE work.wc_id = ?1 AND work.local_relpath = ?2 AND work.op_depth > 0 " \
516  "LIMIT 1 " \
517  ""
518
519#define STMT_SELECT_OP_DEPTH_MOVED_TO 50
520#define STMT_50_INFO {"STMT_SELECT_OP_DEPTH_MOVED_TO", NULL}
521#define STMT_50 \
522  "SELECT op_depth, moved_to, repos_path, revision " \
523  "FROM nodes " \
524  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
525  " AND op_depth <= (SELECT MIN(op_depth) FROM nodes " \
526  "                  WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > ?3) " \
527  "ORDER BY op_depth DESC " \
528  ""
529
530#define STMT_SELECT_MOVED_TO 51
531#define STMT_51_INFO {"STMT_SELECT_MOVED_TO", NULL}
532#define STMT_51 \
533  "SELECT moved_to " \
534  "FROM nodes " \
535  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \
536  ""
537
538#define STMT_SELECT_MOVED_HERE 52
539#define STMT_52_INFO {"STMT_SELECT_MOVED_HERE", NULL}
540#define STMT_52 \
541  "SELECT moved_here, presence, repos_path, revision " \
542  "FROM nodes " \
543  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth >= ?3 " \
544  "ORDER BY op_depth " \
545  ""
546
547#define STMT_SELECT_MOVED_BACK 53
548#define STMT_53_INFO {"STMT_SELECT_MOVED_BACK", NULL}
549#define STMT_53 \
550  "SELECT u.local_relpath, " \
551  "       u.presence, u.repos_id, u.repos_path, u.revision, " \
552  "       l.presence, l.repos_id, l.repos_path, l.revision, " \
553  "       u.moved_here, u.moved_to " \
554  "FROM nodes u " \
555  "LEFT OUTER JOIN nodes l ON l.wc_id = ?1 " \
556  "                       AND l.local_relpath = u.local_relpath " \
557  "                       AND l.op_depth = ?3 " \
558  "WHERE u.wc_id = ?1 " \
559  "  AND u.local_relpath = ?2 " \
560  "  AND u.op_depth = ?4 " \
561  "UNION ALL " \
562  "SELECT u.local_relpath, " \
563  "       u.presence, u.repos_id, u.repos_path, u.revision, " \
564  "       l.presence, l.repos_id, l.repos_path, l.revision, " \
565  "       u.moved_here, NULL " \
566  "FROM nodes u " \
567  "LEFT OUTER JOIN nodes l ON l.wc_id=?1 " \
568  "                       AND l.local_relpath=u.local_relpath " \
569  "                       AND l.op_depth=?3 " \
570  "WHERE u.wc_id = ?1 " \
571  "  AND (((u.local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((u.local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
572  "  AND u.op_depth = ?4 " \
573  ""
574
575#define STMT_DELETE_MOVED_BACK 54
576#define STMT_54_INFO {"STMT_DELETE_MOVED_BACK", NULL}
577#define STMT_54 \
578  "DELETE FROM nodes " \
579  "WHERE wc_id = ?1 " \
580  "  AND (local_relpath = ?2 " \
581  "       OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
582  "  AND op_depth = ?3 " \
583  ""
584
585#define STMT_DELETE_LOCK 55
586#define STMT_55_INFO {"STMT_DELETE_LOCK", NULL}
587#define STMT_55 \
588  "DELETE FROM lock " \
589  "WHERE repos_id = ?1 AND repos_relpath = ?2 " \
590  ""
591
592#define STMT_DELETE_LOCK_RECURSIVELY 56
593#define STMT_56_INFO {"STMT_DELETE_LOCK_RECURSIVELY", NULL}
594#define STMT_56 \
595  "DELETE FROM lock " \
596  "WHERE repos_id = ?1 AND (repos_relpath = ?2 OR (((repos_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((repos_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
597  ""
598
599#define STMT_CLEAR_BASE_NODE_RECURSIVE_DAV_CACHE 57
600#define STMT_57_INFO {"STMT_CLEAR_BASE_NODE_RECURSIVE_DAV_CACHE", NULL}
601#define STMT_57 \
602  "UPDATE nodes SET dav_cache = NULL " \
603  "WHERE dav_cache IS NOT NULL AND wc_id = ?1 AND op_depth = 0 " \
604  "  AND (local_relpath = ?2 " \
605  "       OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
606  ""
607
608#define STMT_RECURSIVE_UPDATE_NODE_REPO 58
609#define STMT_58_INFO {"STMT_RECURSIVE_UPDATE_NODE_REPO", NULL}
610#define STMT_58 \
611  "UPDATE nodes SET repos_id = ?4, dav_cache = NULL " \
612  "WHERE (wc_id = ?1 AND local_relpath = ?2 AND repos_id = ?3) " \
613  "   OR (wc_id = ?1 AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
614  "       AND repos_id = ?3) " \
615  ""
616
617#define STMT_UPDATE_LOCK_REPOS_ID 59
618#define STMT_59_INFO {"STMT_UPDATE_LOCK_REPOS_ID", NULL}
619#define STMT_59 \
620  "UPDATE lock SET repos_id = ?2 " \
621  "WHERE repos_id = ?1 " \
622  ""
623
624#define STMT_UPDATE_NODE_FILEINFO 60
625#define STMT_60_INFO {"STMT_UPDATE_NODE_FILEINFO", NULL}
626#define STMT_60 \
627  "UPDATE nodes SET translated_size = ?3, last_mod_time = ?4 " \
628  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
629  "  AND op_depth = (SELECT MAX(op_depth) FROM nodes " \
630  "                  WHERE wc_id = ?1 AND local_relpath = ?2) " \
631  ""
632
633#define STMT_INSERT_ACTUAL_CONFLICT 61
634#define STMT_61_INFO {"STMT_INSERT_ACTUAL_CONFLICT", NULL}
635#define STMT_61 \
636  "INSERT INTO actual_node (wc_id, local_relpath, conflict_data, parent_relpath) " \
637  "VALUES (?1, ?2, ?3, ?4) " \
638  ""
639
640#define STMT_UPDATE_ACTUAL_CONFLICT 62
641#define STMT_62_INFO {"STMT_UPDATE_ACTUAL_CONFLICT", NULL}
642#define STMT_62 \
643  "UPDATE actual_node SET conflict_data = ?3 " \
644  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
645  ""
646
647#define STMT_UPDATE_ACTUAL_CHANGELISTS 63
648#define STMT_63_INFO {"STMT_UPDATE_ACTUAL_CHANGELISTS", NULL}
649#define STMT_63 \
650  "UPDATE actual_node SET changelist = ?3 " \
651  "WHERE wc_id = ?1 " \
652  "  AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
653  "  AND local_relpath = (SELECT local_relpath FROM targets_list AS t " \
654  "                       WHERE wc_id = ?1 " \
655  "                         AND t.local_relpath = actual_node.local_relpath " \
656  "                         AND kind = 'file') " \
657  ""
658
659#define STMT_UPDATE_ACTUAL_CLEAR_CHANGELIST 64
660#define STMT_64_INFO {"STMT_UPDATE_ACTUAL_CLEAR_CHANGELIST", NULL}
661#define STMT_64 \
662  "UPDATE actual_node SET changelist = NULL " \
663  " WHERE wc_id = ?1 AND local_relpath = ?2 " \
664  ""
665
666#define STMT_MARK_SKIPPED_CHANGELIST_DIRS 65
667#define STMT_65_INFO {"STMT_MARK_SKIPPED_CHANGELIST_DIRS", NULL}
668#define STMT_65 \
669  "INSERT INTO changelist_list (wc_id, local_relpath, notify, changelist) " \
670  "SELECT wc_id, local_relpath, 7, ?3 " \
671  "FROM targets_list " \
672  "WHERE wc_id = ?1 " \
673  "  AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
674  "  AND kind = 'dir' " \
675  ""
676
677#define STMT_RESET_ACTUAL_WITH_CHANGELIST 66
678#define STMT_66_INFO {"STMT_RESET_ACTUAL_WITH_CHANGELIST", NULL}
679#define STMT_66 \
680  "REPLACE INTO actual_node ( " \
681  "  wc_id, local_relpath, parent_relpath, changelist) " \
682  "VALUES (?1, ?2, ?3, ?4) " \
683  ""
684
685#define STMT_CREATE_CHANGELIST_LIST 67
686#define STMT_67_INFO {"STMT_CREATE_CHANGELIST_LIST", NULL}
687#define STMT_67 \
688  "DROP TABLE IF EXISTS changelist_list; " \
689  "CREATE TEMPORARY TABLE changelist_list ( " \
690  "  wc_id  INTEGER NOT NULL, " \
691  "  local_relpath TEXT NOT NULL, " \
692  "  notify INTEGER NOT NULL, " \
693  "  changelist TEXT NOT NULL, " \
694  "  PRIMARY KEY (wc_id, local_relpath, notify DESC) " \
695  ") " \
696  ""
697
698#define STMT_CREATE_CHANGELIST_TRIGGER 68
699#define STMT_68_INFO {"STMT_CREATE_CHANGELIST_TRIGGER", NULL}
700#define STMT_68 \
701  "DROP TRIGGER IF EXISTS   trigger_changelist_list_change; " \
702  "CREATE TEMPORARY TRIGGER trigger_changelist_list_change " \
703  "BEFORE UPDATE ON actual_node " \
704  "WHEN old.changelist IS NOT new.changelist " \
705  "BEGIN " \
706  "  INSERT INTO changelist_list(wc_id, local_relpath, notify, changelist) " \
707  "  SELECT old.wc_id, old.local_relpath, 27, old.changelist " \
708  "   WHERE old.changelist is NOT NULL; " \
709  "  INSERT INTO changelist_list(wc_id, local_relpath, notify, changelist) " \
710  "  SELECT new.wc_id, new.local_relpath, 26, new.changelist " \
711  "   WHERE new.changelist IS NOT NULL; " \
712  "END " \
713  ""
714
715#define STMT_FINALIZE_CHANGELIST 69
716#define STMT_69_INFO {"STMT_FINALIZE_CHANGELIST", NULL}
717#define STMT_69 \
718  "DROP TRIGGER trigger_changelist_list_change; " \
719  "DROP TABLE changelist_list; " \
720  "DROP TABLE targets_list " \
721  ""
722
723#define STMT_SELECT_CHANGELIST_LIST 70
724#define STMT_70_INFO {"STMT_SELECT_CHANGELIST_LIST", NULL}
725#define STMT_70 \
726  "SELECT wc_id, local_relpath, notify, changelist " \
727  "FROM changelist_list " \
728  "ORDER BY wc_id, local_relpath ASC, notify DESC " \
729  ""
730
731#define STMT_CREATE_TARGETS_LIST 71
732#define STMT_71_INFO {"STMT_CREATE_TARGETS_LIST", NULL}
733#define STMT_71 \
734  "DROP TABLE IF EXISTS targets_list; " \
735  "CREATE TEMPORARY TABLE targets_list ( " \
736  "  wc_id  INTEGER NOT NULL, " \
737  "  local_relpath TEXT NOT NULL, " \
738  "  parent_relpath TEXT, " \
739  "  kind TEXT NOT NULL, " \
740  "  PRIMARY KEY (wc_id, local_relpath) " \
741  "  ); " \
742  ""
743
744#define STMT_DROP_TARGETS_LIST 72
745#define STMT_72_INFO {"STMT_DROP_TARGETS_LIST", NULL}
746#define STMT_72 \
747  "DROP TABLE targets_list " \
748  ""
749
750#define STMT_INSERT_TARGET 73
751#define STMT_73_INFO {"STMT_INSERT_TARGET", NULL}
752#define STMT_73 \
753  "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \
754  "SELECT wc_id, local_relpath, parent_relpath, kind " \
755  "FROM nodes_current " \
756  "WHERE wc_id = ?1 " \
757  "  AND local_relpath = ?2 " \
758  ""
759
760#define STMT_INSERT_TARGET_DEPTH_FILES 74
761#define STMT_74_INFO {"STMT_INSERT_TARGET_DEPTH_FILES", NULL}
762#define STMT_74 \
763  "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \
764  "SELECT wc_id, local_relpath, parent_relpath, kind " \
765  "FROM nodes_current " \
766  "WHERE wc_id = ?1 " \
767  "  AND parent_relpath = ?2 " \
768  "  AND kind = 'file' " \
769  ""
770
771#define STMT_INSERT_TARGET_DEPTH_IMMEDIATES 75
772#define STMT_75_INFO {"STMT_INSERT_TARGET_DEPTH_IMMEDIATES", NULL}
773#define STMT_75 \
774  "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \
775  "SELECT wc_id, local_relpath, parent_relpath, kind " \
776  "FROM nodes_current " \
777  "WHERE wc_id = ?1 " \
778  "  AND parent_relpath = ?2 " \
779  ""
780
781#define STMT_INSERT_TARGET_DEPTH_INFINITY 76
782#define STMT_76_INFO {"STMT_INSERT_TARGET_DEPTH_INFINITY", NULL}
783#define STMT_76 \
784  "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \
785  "SELECT wc_id, local_relpath, parent_relpath, kind " \
786  "FROM nodes_current " \
787  "WHERE wc_id = ?1 " \
788  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
789  ""
790
791#define STMT_INSERT_TARGET_WITH_CHANGELIST 77
792#define STMT_77_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST", NULL}
793#define STMT_77 \
794  "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \
795  "SELECT N.wc_id, N.local_relpath, N.parent_relpath, N.kind " \
796  "  FROM actual_node AS A JOIN nodes_current AS N " \
797  "    ON A.wc_id = N.wc_id AND A.local_relpath = N.local_relpath " \
798  " WHERE N.wc_id = ?1 " \
799  "   AND N.local_relpath = ?2 " \
800  "   AND A.changelist = ?3 " \
801  ""
802
803#define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_FILES 78
804#define STMT_78_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_FILES", NULL}
805#define STMT_78 \
806  "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \
807  "SELECT N.wc_id, N.local_relpath, N.parent_relpath, N.kind " \
808  "  FROM actual_node AS A JOIN nodes_current AS N " \
809  "    ON A.wc_id = N.wc_id AND A.local_relpath = N.local_relpath " \
810  " WHERE N.wc_id = ?1 " \
811  "   AND N.parent_relpath = ?2 " \
812  "   AND kind = 'file' " \
813  "   AND A.changelist = ?3 " \
814  ""
815
816#define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_IMMEDIATES 79
817#define STMT_79_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_IMMEDIATES", NULL}
818#define STMT_79 \
819  "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \
820  "SELECT N.wc_id, N.local_relpath, N.parent_relpath, N.kind " \
821  "  FROM actual_node AS A JOIN nodes_current AS N " \
822  "    ON A.wc_id = N.wc_id AND A.local_relpath = N.local_relpath " \
823  " WHERE N.wc_id = ?1 " \
824  "   AND N.parent_relpath = ?2 " \
825  "  AND A.changelist = ?3 " \
826  ""
827
828#define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_INFINITY 80
829#define STMT_80_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_INFINITY", NULL}
830#define STMT_80 \
831  "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \
832  "SELECT N.wc_id, N.local_relpath, N.parent_relpath, N.kind " \
833  "  FROM actual_node AS A JOIN nodes_current AS N " \
834  "    ON A.wc_id = N.wc_id AND A.local_relpath = N.local_relpath " \
835  " WHERE N.wc_id = ?1 " \
836  "   AND (((N.local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((N.local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
837  "   AND A.changelist = ?3 " \
838  ""
839
840#define STMT_INSERT_ACTUAL_EMPTIES 81
841#define STMT_81_INFO {"STMT_INSERT_ACTUAL_EMPTIES", NULL}
842#define STMT_81 \
843  "INSERT OR IGNORE INTO actual_node ( " \
844  "     wc_id, local_relpath, parent_relpath) " \
845  "SELECT wc_id, local_relpath, parent_relpath " \
846  "FROM targets_list " \
847  ""
848
849#define STMT_DELETE_ACTUAL_EMPTY 82
850#define STMT_82_INFO {"STMT_DELETE_ACTUAL_EMPTY", NULL}
851#define STMT_82 \
852  "DELETE FROM actual_node " \
853  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
854  "  AND properties IS NULL " \
855  "  AND conflict_data IS NULL " \
856  "  AND changelist IS NULL " \
857  "  AND text_mod IS NULL " \
858  "  AND older_checksum IS NULL " \
859  "  AND right_checksum IS NULL " \
860  "  AND left_checksum IS NULL " \
861  ""
862
863#define STMT_DELETE_ACTUAL_EMPTIES 83
864#define STMT_83_INFO {"STMT_DELETE_ACTUAL_EMPTIES", NULL}
865#define STMT_83 \
866  "DELETE FROM actual_node " \
867  "WHERE wc_id = ?1 " \
868  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
869  "  AND properties IS NULL " \
870  "  AND conflict_data IS NULL " \
871  "  AND changelist IS NULL " \
872  "  AND text_mod IS NULL " \
873  "  AND older_checksum IS NULL " \
874  "  AND right_checksum IS NULL " \
875  "  AND left_checksum IS NULL " \
876  ""
877
878#define STMT_DELETE_BASE_NODE 84
879#define STMT_84_INFO {"STMT_DELETE_BASE_NODE", NULL}
880#define STMT_84 \
881  "DELETE FROM nodes " \
882  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
883  ""
884
885#define STMT_DELETE_WORKING_NODE 85
886#define STMT_85_INFO {"STMT_DELETE_WORKING_NODE", NULL}
887#define STMT_85 \
888  "DELETE FROM nodes " \
889  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
890  "  AND op_depth = (SELECT MAX(op_depth) FROM nodes " \
891  "                  WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > 0) " \
892  ""
893
894#define STMT_DELETE_LOWEST_WORKING_NODE 86
895#define STMT_86_INFO {"STMT_DELETE_LOWEST_WORKING_NODE", NULL}
896#define STMT_86 \
897  "DELETE FROM nodes " \
898  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
899  "  AND op_depth = (SELECT MIN(op_depth) FROM nodes " \
900  "                  WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > ?3) " \
901  "  AND presence = 'base-deleted' " \
902  ""
903
904#define STMT_DELETE_ALL_LAYERS 87
905#define STMT_87_INFO {"STMT_DELETE_ALL_LAYERS", NULL}
906#define STMT_87 \
907  "DELETE FROM nodes " \
908  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
909  ""
910
911#define STMT_DELETE_NODES_ABOVE_DEPTH_RECURSIVE 88
912#define STMT_88_INFO {"STMT_DELETE_NODES_ABOVE_DEPTH_RECURSIVE", NULL}
913#define STMT_88 \
914  "DELETE FROM nodes " \
915  "WHERE wc_id = ?1 " \
916  "  AND (local_relpath = ?2 " \
917  "       OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
918  "  AND op_depth >= ?3 " \
919  ""
920
921#define STMT_DELETE_ACTUAL_NODE 89
922#define STMT_89_INFO {"STMT_DELETE_ACTUAL_NODE", NULL}
923#define STMT_89 \
924  "DELETE FROM actual_node " \
925  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
926  ""
927
928#define STMT_DELETE_ACTUAL_NODE_RECURSIVE 90
929#define STMT_90_INFO {"STMT_DELETE_ACTUAL_NODE_RECURSIVE", NULL}
930#define STMT_90 \
931  "DELETE FROM actual_node " \
932  "WHERE wc_id = ?1 " \
933  "  AND (local_relpath = ?2 " \
934  "       OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
935  ""
936
937#define STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST 91
938#define STMT_91_INFO {"STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST", NULL}
939#define STMT_91 \
940  "DELETE FROM actual_node " \
941  "WHERE wc_id = ?1 " \
942  "  AND local_relpath = ?2 " \
943  "  AND (changelist IS NULL " \
944  "       OR NOT EXISTS (SELECT 1 FROM nodes_current c " \
945  "                      WHERE c.wc_id = ?1 AND c.local_relpath = ?2 " \
946  "                        AND c.kind = 'file')) " \
947  ""
948
949#define STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE 92
950#define STMT_92_INFO {"STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE", NULL}
951#define STMT_92 \
952  "DELETE FROM actual_node " \
953  "WHERE wc_id = ?1 " \
954  "  AND (local_relpath = ?2 " \
955  "       OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
956  "  AND (changelist IS NULL " \
957  "       OR NOT EXISTS (SELECT 1 FROM nodes_current c " \
958  "                      WHERE c.wc_id = ?1 " \
959  "                        AND c.local_relpath = actual_node.local_relpath " \
960  "                        AND c.kind = 'file')) " \
961  ""
962
963#define STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST 93
964#define STMT_93_INFO {"STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST", NULL}
965#define STMT_93 \
966  "UPDATE actual_node " \
967  "SET properties = NULL, " \
968  "    text_mod = NULL, " \
969  "    conflict_data = NULL, " \
970  "    tree_conflict_data = NULL, " \
971  "    older_checksum = NULL, " \
972  "    left_checksum = NULL, " \
973  "    right_checksum = NULL " \
974  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
975  ""
976
977#define STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE 94
978#define STMT_94_INFO {"STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE", NULL}
979#define STMT_94 \
980  "UPDATE actual_node " \
981  "SET properties = NULL, " \
982  "    text_mod = NULL, " \
983  "    conflict_data = NULL, " \
984  "    tree_conflict_data = NULL, " \
985  "    older_checksum = NULL, " \
986  "    left_checksum = NULL, " \
987  "    right_checksum = NULL " \
988  "WHERE wc_id = ?1 " \
989  "  AND (local_relpath = ?2 " \
990  "       OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
991  ""
992
993#define STMT_UPDATE_NODE_BASE_DEPTH 95
994#define STMT_95_INFO {"STMT_UPDATE_NODE_BASE_DEPTH", NULL}
995#define STMT_95 \
996  "UPDATE nodes SET depth = ?3 " \
997  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
998  "  AND kind='dir' " \
999  ""
1000
1001#define STMT_UPDATE_NODE_BASE_PRESENCE 96
1002#define STMT_96_INFO {"STMT_UPDATE_NODE_BASE_PRESENCE", NULL}
1003#define STMT_96 \
1004  "UPDATE nodes SET presence = ?3 " \
1005  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
1006  ""
1007
1008#define STMT_UPDATE_BASE_NODE_PRESENCE_REVNUM_AND_REPOS_PATH 97
1009#define STMT_97_INFO {"STMT_UPDATE_BASE_NODE_PRESENCE_REVNUM_AND_REPOS_PATH", NULL}
1010#define STMT_97 \
1011  "UPDATE nodes SET presence = ?3, revision = ?4, repos_path = ?5 " \
1012  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
1013  ""
1014
1015#define STMT_LOOK_FOR_WORK 98
1016#define STMT_98_INFO {"STMT_LOOK_FOR_WORK", NULL}
1017#define STMT_98 \
1018  "SELECT id FROM work_queue LIMIT 1 " \
1019  ""
1020
1021#define STMT_INSERT_WORK_ITEM 99
1022#define STMT_99_INFO {"STMT_INSERT_WORK_ITEM", NULL}
1023#define STMT_99 \
1024  "INSERT INTO work_queue (work) VALUES (?1) " \
1025  ""
1026
1027#define STMT_SELECT_WORK_ITEM 100
1028#define STMT_100_INFO {"STMT_SELECT_WORK_ITEM", NULL}
1029#define STMT_100 \
1030  "SELECT id, work FROM work_queue ORDER BY id LIMIT 1 " \
1031  ""
1032
1033#define STMT_DELETE_WORK_ITEM 101
1034#define STMT_101_INFO {"STMT_DELETE_WORK_ITEM", NULL}
1035#define STMT_101 \
1036  "DELETE FROM work_queue WHERE id = ?1 " \
1037  ""
1038
1039#define STMT_INSERT_OR_IGNORE_PRISTINE 102
1040#define STMT_102_INFO {"STMT_INSERT_OR_IGNORE_PRISTINE", NULL}
1041#define STMT_102 \
1042  "INSERT OR IGNORE INTO pristine (checksum, md5_checksum, size, refcount) " \
1043  "VALUES (?1, ?2, ?3, 0) " \
1044  ""
1045
1046#define STMT_INSERT_PRISTINE 103
1047#define STMT_103_INFO {"STMT_INSERT_PRISTINE", NULL}
1048#define STMT_103 \
1049  "INSERT INTO pristine (checksum, md5_checksum, size, refcount) " \
1050  "VALUES (?1, ?2, ?3, 0) " \
1051  ""
1052
1053#define STMT_SELECT_PRISTINE 104
1054#define STMT_104_INFO {"STMT_SELECT_PRISTINE", NULL}
1055#define STMT_104 \
1056  "SELECT md5_checksum " \
1057  "FROM pristine " \
1058  "WHERE checksum = ?1 " \
1059  ""
1060
1061#define STMT_SELECT_PRISTINE_SIZE 105
1062#define STMT_105_INFO {"STMT_SELECT_PRISTINE_SIZE", NULL}
1063#define STMT_105 \
1064  "SELECT size " \
1065  "FROM pristine " \
1066  "WHERE checksum = ?1 LIMIT 1 " \
1067  ""
1068
1069#define STMT_SELECT_PRISTINE_BY_MD5 106
1070#define STMT_106_INFO {"STMT_SELECT_PRISTINE_BY_MD5", NULL}
1071#define STMT_106 \
1072  "SELECT checksum " \
1073  "FROM pristine " \
1074  "WHERE md5_checksum = ?1 " \
1075  ""
1076
1077#define STMT_SELECT_UNREFERENCED_PRISTINES 107
1078#define STMT_107_INFO {"STMT_SELECT_UNREFERENCED_PRISTINES", NULL}
1079#define STMT_107 \
1080  "SELECT checksum " \
1081  "FROM pristine " \
1082  "WHERE refcount = 0 " \
1083  ""
1084
1085#define STMT_DELETE_PRISTINE_IF_UNREFERENCED 108
1086#define STMT_108_INFO {"STMT_DELETE_PRISTINE_IF_UNREFERENCED", NULL}
1087#define STMT_108 \
1088  "DELETE FROM pristine " \
1089  "WHERE checksum = ?1 AND refcount = 0 " \
1090  ""
1091
1092#define STMT_SELECT_COPY_PRISTINES 109
1093#define STMT_109_INFO {"STMT_SELECT_COPY_PRISTINES", NULL}
1094#define STMT_109 \
1095  "SELECT n.checksum, md5_checksum, size " \
1096  "FROM nodes_current n " \
1097  "LEFT JOIN pristine p ON n.checksum = p.checksum " \
1098  "WHERE wc_id = ?1 " \
1099  "  AND n.local_relpath = ?2 " \
1100  "  AND n.checksum IS NOT NULL " \
1101  "UNION ALL " \
1102  "SELECT n.checksum, md5_checksum, size " \
1103  "FROM nodes n " \
1104  "LEFT JOIN pristine p ON n.checksum = p.checksum " \
1105  "WHERE wc_id = ?1 " \
1106  "  AND (((n.local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((n.local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
1107  "  AND op_depth >= " \
1108  "      (SELECT MAX(op_depth) FROM nodes WHERE wc_id = ?1 AND local_relpath = ?2) " \
1109  "  AND n.checksum IS NOT NULL " \
1110  ""
1111
1112#define STMT_VACUUM 110
1113#define STMT_110_INFO {"STMT_VACUUM", NULL}
1114#define STMT_110 \
1115  "VACUUM " \
1116  ""
1117
1118#define STMT_SELECT_CONFLICT_VICTIMS 111
1119#define STMT_111_INFO {"STMT_SELECT_CONFLICT_VICTIMS", NULL}
1120#define STMT_111 \
1121  "SELECT local_relpath, conflict_data " \
1122  "FROM actual_node " \
1123  "WHERE wc_id = ?1 AND parent_relpath = ?2 AND " \
1124  "  NOT (conflict_data IS NULL) " \
1125  ""
1126
1127#define STMT_INSERT_WC_LOCK 112
1128#define STMT_112_INFO {"STMT_INSERT_WC_LOCK", NULL}
1129#define STMT_112 \
1130  "INSERT INTO wc_lock (wc_id, local_dir_relpath, locked_levels) " \
1131  "VALUES (?1, ?2, ?3) " \
1132  ""
1133
1134#define STMT_SELECT_WC_LOCK 113
1135#define STMT_113_INFO {"STMT_SELECT_WC_LOCK", NULL}
1136#define STMT_113 \
1137  "SELECT locked_levels FROM wc_lock " \
1138  "WHERE wc_id = ?1 AND local_dir_relpath = ?2 " \
1139  ""
1140
1141#define STMT_SELECT_ANCESTOR_WCLOCKS 114
1142#define STMT_114_INFO {"STMT_SELECT_ANCESTOR_WCLOCKS", NULL}
1143#define STMT_114 \
1144  "SELECT local_dir_relpath, locked_levels FROM wc_lock " \
1145  "WHERE wc_id = ?1 " \
1146  "  AND ((local_dir_relpath >= ?3 AND local_dir_relpath <= ?2) " \
1147  "       OR local_dir_relpath = '') " \
1148  ""
1149
1150#define STMT_DELETE_WC_LOCK 115
1151#define STMT_115_INFO {"STMT_DELETE_WC_LOCK", NULL}
1152#define STMT_115 \
1153  "DELETE FROM wc_lock " \
1154  "WHERE wc_id = ?1 AND local_dir_relpath = ?2 " \
1155  ""
1156
1157#define STMT_FIND_WC_LOCK 116
1158#define STMT_116_INFO {"STMT_FIND_WC_LOCK", NULL}
1159#define STMT_116 \
1160  "SELECT local_dir_relpath FROM wc_lock " \
1161  "WHERE wc_id = ?1 " \
1162  "  AND (((local_dir_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_dir_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
1163  ""
1164
1165#define STMT_DELETE_WC_LOCK_ORPHAN 117
1166#define STMT_117_INFO {"STMT_DELETE_WC_LOCK_ORPHAN", NULL}
1167#define STMT_117 \
1168  "DELETE FROM wc_lock " \
1169  "WHERE wc_id = ?1 AND local_dir_relpath = ?2 " \
1170  "AND NOT EXISTS (SELECT 1 FROM nodes " \
1171  "                 WHERE nodes.wc_id = ?1 " \
1172  "                   AND nodes.local_relpath = wc_lock.local_dir_relpath) " \
1173  ""
1174
1175#define STMT_DELETE_WC_LOCK_ORPHAN_RECURSIVE 118
1176#define STMT_118_INFO {"STMT_DELETE_WC_LOCK_ORPHAN_RECURSIVE", NULL}
1177#define STMT_118 \
1178  "DELETE FROM wc_lock " \
1179  "WHERE wc_id = ?1 " \
1180  "  AND (local_dir_relpath = ?2 " \
1181  "       OR (((local_dir_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_dir_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1182  "  AND NOT EXISTS (SELECT 1 FROM nodes " \
1183  "                   WHERE nodes.wc_id = ?1 " \
1184  "                     AND nodes.local_relpath = wc_lock.local_dir_relpath) " \
1185  ""
1186
1187#define STMT_APPLY_CHANGES_TO_BASE_NODE 119
1188#define STMT_119_INFO {"STMT_APPLY_CHANGES_TO_BASE_NODE", NULL}
1189#define STMT_119 \
1190  "INSERT OR REPLACE INTO nodes ( " \
1191  "  wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \
1192  "  revision, presence, depth, kind, changed_revision, changed_date, " \
1193  "  changed_author, checksum, properties, dav_cache, symlink_target, " \
1194  "  inherited_props, file_external ) " \
1195  "VALUES (?1, ?2, 0, " \
1196  "        ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, " \
1197  "        (SELECT file_external FROM nodes " \
1198  "          WHERE wc_id = ?1 " \
1199  "            AND local_relpath = ?2 " \
1200  "            AND op_depth = 0)) " \
1201  ""
1202
1203#define STMT_INSTALL_WORKING_NODE_FOR_DELETE 120
1204#define STMT_120_INFO {"STMT_INSTALL_WORKING_NODE_FOR_DELETE", NULL}
1205#define STMT_120 \
1206  "INSERT OR REPLACE INTO nodes ( " \
1207  "    wc_id, local_relpath, op_depth, " \
1208  "    parent_relpath, presence, kind) " \
1209  "VALUES(?1, ?2, ?3, ?4, 'base-deleted', ?5) " \
1210  ""
1211
1212#define STMT_DELETE_NO_LOWER_LAYER 121
1213#define STMT_121_INFO {"STMT_DELETE_NO_LOWER_LAYER", NULL}
1214#define STMT_121 \
1215  "DELETE FROM nodes " \
1216  " WHERE wc_id = ?1 " \
1217  "   AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1218  "   AND op_depth = ?3 " \
1219  "   AND NOT EXISTS (SELECT 1 FROM nodes n " \
1220  "                    WHERE n.wc_id = ?1 " \
1221  "                    AND n.local_relpath = nodes.local_relpath " \
1222  "                    AND n.op_depth = ?4 " \
1223  "                    AND n.presence IN ('normal', 'incomplete')) " \
1224  ""
1225
1226#define STMT_REPLACE_WITH_BASE_DELETED 122
1227#define STMT_122_INFO {"STMT_REPLACE_WITH_BASE_DELETED", NULL}
1228#define STMT_122 \
1229  "INSERT OR REPLACE INTO nodes (wc_id, local_relpath, op_depth, parent_relpath, " \
1230  "                              kind, moved_to, presence) " \
1231  "SELECT wc_id, local_relpath, op_depth, parent_relpath, " \
1232  "       kind, moved_to, 'base-deleted' " \
1233  "  FROM nodes " \
1234  " WHERE wc_id = ?1 " \
1235  "   AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1236  "   AND op_depth = ?3 " \
1237  ""
1238
1239#define STMT_INSERT_DELETE_FROM_NODE_RECURSIVE 123
1240#define STMT_123_INFO {"STMT_INSERT_DELETE_FROM_NODE_RECURSIVE", NULL}
1241#define STMT_123 \
1242  "INSERT INTO nodes ( " \
1243  "    wc_id, local_relpath, op_depth, parent_relpath, presence, kind) " \
1244  "SELECT wc_id, local_relpath, ?4 , parent_relpath, 'base-deleted', " \
1245  "       kind " \
1246  "FROM nodes " \
1247  "WHERE wc_id = ?1 " \
1248  "  AND (local_relpath = ?2 " \
1249  "       OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1250  "  AND op_depth = ?3 " \
1251  "  AND presence NOT IN ('base-deleted', 'not-present', 'excluded', 'server-excluded') " \
1252  "  AND file_external IS NULL " \
1253  ""
1254
1255#define STMT_INSERT_WORKING_NODE_FROM_BASE_COPY 124
1256#define STMT_124_INFO {"STMT_INSERT_WORKING_NODE_FROM_BASE_COPY", NULL}
1257#define STMT_124 \
1258  "INSERT INTO nodes ( " \
1259  "    wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \
1260  "    revision, presence, depth, kind, changed_revision, changed_date, " \
1261  "    changed_author, checksum, properties, translated_size, last_mod_time, " \
1262  "    symlink_target ) " \
1263  "SELECT wc_id, local_relpath, ?3 , parent_relpath, repos_id, " \
1264  "    repos_path, revision, presence, depth, kind, changed_revision, " \
1265  "    changed_date, changed_author, checksum, properties, translated_size, " \
1266  "    last_mod_time, symlink_target " \
1267  "FROM nodes " \
1268  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
1269  ""
1270
1271#define STMT_INSERT_DELETE_FROM_BASE 125
1272#define STMT_125_INFO {"STMT_INSERT_DELETE_FROM_BASE", NULL}
1273#define STMT_125 \
1274  "INSERT INTO nodes ( " \
1275  "    wc_id, local_relpath, op_depth, parent_relpath, presence, kind) " \
1276  "SELECT wc_id, local_relpath, ?3 , parent_relpath, " \
1277  "    'base-deleted', kind " \
1278  "FROM nodes " \
1279  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
1280  ""
1281
1282#define STMT_UPDATE_OP_DEPTH_INCREASE_RECURSIVE 126
1283#define STMT_126_INFO {"STMT_UPDATE_OP_DEPTH_INCREASE_RECURSIVE", NULL}
1284#define STMT_126 \
1285  "UPDATE nodes SET op_depth = ?3 + 1 " \
1286  "WHERE wc_id = ?1 " \
1287  " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
1288  " AND op_depth = ?3 " \
1289  ""
1290
1291#define STMT_UPDATE_OP_DEPTH_RECURSIVE 127
1292#define STMT_127_INFO {"STMT_UPDATE_OP_DEPTH_RECURSIVE", NULL}
1293#define STMT_127 \
1294  "UPDATE nodes SET op_depth = ?4, moved_here = NULL " \
1295  "WHERE wc_id = ?1 " \
1296  " AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1297  " AND op_depth = ?3 " \
1298  ""
1299
1300#define STMT_DOES_NODE_EXIST 128
1301#define STMT_128_INFO {"STMT_DOES_NODE_EXIST", NULL}
1302#define STMT_128 \
1303  "SELECT 1 FROM nodes WHERE wc_id = ?1 AND local_relpath = ?2 " \
1304  "LIMIT 1 " \
1305  ""
1306
1307#define STMT_HAS_SERVER_EXCLUDED_DESCENDANTS 129
1308#define STMT_129_INFO {"STMT_HAS_SERVER_EXCLUDED_DESCENDANTS", NULL}
1309#define STMT_129 \
1310  "SELECT local_relpath FROM nodes " \
1311  "WHERE wc_id = ?1 " \
1312  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
1313  "  AND op_depth = 0 AND presence = 'server-excluded' " \
1314  "LIMIT 1 " \
1315  ""
1316
1317#define STMT_SELECT_ALL_EXCLUDED_DESCENDANTS 130
1318#define STMT_130_INFO {"STMT_SELECT_ALL_EXCLUDED_DESCENDANTS", NULL}
1319#define STMT_130 \
1320  "SELECT local_relpath FROM nodes " \
1321  "WHERE wc_id = ?1 " \
1322  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
1323  "  AND op_depth = 0 " \
1324  "  AND (presence = 'server-excluded' OR presence = 'excluded') " \
1325  ""
1326
1327#define STMT_INSERT_WORKING_NODE_COPY_FROM 131
1328#define STMT_131_INFO {"STMT_INSERT_WORKING_NODE_COPY_FROM", NULL}
1329#define STMT_131 \
1330  "INSERT OR REPLACE INTO nodes ( " \
1331  "    wc_id, local_relpath, op_depth, parent_relpath, repos_id, " \
1332  "    repos_path, revision, presence, depth, moved_here, kind, changed_revision, " \
1333  "    changed_date, changed_author, checksum, properties, translated_size, " \
1334  "    last_mod_time, symlink_target, moved_to ) " \
1335  "SELECT wc_id, ?3 , ?4 , ?5 , " \
1336  "    repos_id, repos_path, revision, ?6 , depth, " \
1337  "    ?7, kind, changed_revision, changed_date, " \
1338  "    changed_author, checksum, properties, translated_size, " \
1339  "    last_mod_time, symlink_target, " \
1340  "    (SELECT dst.moved_to FROM nodes AS dst " \
1341  "                         WHERE dst.wc_id = ?1 " \
1342  "                         AND dst.local_relpath = ?3 " \
1343  "                         AND dst.op_depth = ?4) " \
1344  "FROM nodes_current " \
1345  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
1346  ""
1347
1348#define STMT_INSERT_WORKING_NODE_COPY_FROM_DEPTH 132
1349#define STMT_132_INFO {"STMT_INSERT_WORKING_NODE_COPY_FROM_DEPTH", NULL}
1350#define STMT_132 \
1351  "INSERT OR REPLACE INTO nodes ( " \
1352  "    wc_id, local_relpath, op_depth, parent_relpath, repos_id, " \
1353  "    repos_path, revision, presence, depth, moved_here, kind, changed_revision, " \
1354  "    changed_date, changed_author, checksum, properties, translated_size, " \
1355  "    last_mod_time, symlink_target, moved_to ) " \
1356  "SELECT wc_id, ?3 , ?4 , ?5 , " \
1357  "    repos_id, repos_path, revision, ?6 , depth, " \
1358  "    ?8 , kind, changed_revision, changed_date, " \
1359  "    changed_author, checksum, properties, translated_size, " \
1360  "    last_mod_time, symlink_target, " \
1361  "    (SELECT dst.moved_to FROM nodes AS dst " \
1362  "                         WHERE dst.wc_id = ?1 " \
1363  "                         AND dst.local_relpath = ?3 " \
1364  "                         AND dst.op_depth = ?4) " \
1365  "FROM nodes " \
1366  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?7 " \
1367  ""
1368
1369#define STMT_UPDATE_BASE_REVISION 133
1370#define STMT_133_INFO {"STMT_UPDATE_BASE_REVISION", NULL}
1371#define STMT_133 \
1372  "UPDATE nodes SET revision = ?3 " \
1373  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
1374  ""
1375
1376#define STMT_UPDATE_BASE_REPOS 134
1377#define STMT_134_INFO {"STMT_UPDATE_BASE_REPOS", NULL}
1378#define STMT_134 \
1379  "UPDATE nodes SET repos_id = ?3, repos_path = ?4 " \
1380  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \
1381  ""
1382
1383#define STMT_ACTUAL_HAS_CHILDREN 135
1384#define STMT_135_INFO {"STMT_ACTUAL_HAS_CHILDREN", NULL}
1385#define STMT_135 \
1386  "SELECT 1 FROM actual_node " \
1387  "WHERE wc_id = ?1 AND parent_relpath = ?2 " \
1388  "LIMIT 1 " \
1389  ""
1390
1391#define STMT_INSERT_EXTERNAL 136
1392#define STMT_136_INFO {"STMT_INSERT_EXTERNAL", NULL}
1393#define STMT_136 \
1394  "INSERT OR REPLACE INTO externals ( " \
1395  "    wc_id, local_relpath, parent_relpath, presence, kind, def_local_relpath, " \
1396  "    repos_id, def_repos_relpath, def_operational_revision, def_revision) " \
1397  "VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10) " \
1398  ""
1399
1400#define STMT_SELECT_EXTERNAL_INFO 137
1401#define STMT_137_INFO {"STMT_SELECT_EXTERNAL_INFO", NULL}
1402#define STMT_137 \
1403  "SELECT presence, kind, def_local_relpath, repos_id, " \
1404  "    def_repos_relpath, def_operational_revision, def_revision " \
1405  "FROM externals WHERE wc_id = ?1 AND local_relpath = ?2 " \
1406  "LIMIT 1 " \
1407  ""
1408
1409#define STMT_DELETE_FILE_EXTERNALS 138
1410#define STMT_138_INFO {"STMT_DELETE_FILE_EXTERNALS", NULL}
1411#define STMT_138 \
1412  "DELETE FROM nodes " \
1413  "WHERE wc_id = ?1 " \
1414  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
1415  "  AND op_depth = 0 " \
1416  "  AND file_external IS NOT NULL " \
1417  ""
1418
1419#define STMT_DELETE_FILE_EXTERNAL_REGISTATIONS 139
1420#define STMT_139_INFO {"STMT_DELETE_FILE_EXTERNAL_REGISTATIONS", NULL}
1421#define STMT_139 \
1422  "DELETE FROM externals " \
1423  "WHERE wc_id = ?1 " \
1424  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
1425  "  AND kind != 'dir' " \
1426  ""
1427
1428#define STMT_DELETE_EXTERNAL_REGISTATIONS 140
1429#define STMT_140_INFO {"STMT_DELETE_EXTERNAL_REGISTATIONS", NULL}
1430#define STMT_140 \
1431  "DELETE FROM externals " \
1432  "WHERE wc_id = ?1 " \
1433  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
1434  ""
1435
1436#define STMT_SELECT_COMMITTABLE_EXTERNALS_BELOW 141
1437#define STMT_141_INFO {"STMT_SELECT_COMMITTABLE_EXTERNALS_BELOW", NULL}
1438#define STMT_141 \
1439  "SELECT local_relpath, kind, def_repos_relpath, " \
1440  "  (SELECT root FROM repository AS r WHERE r.id = e.repos_id) " \
1441  "FROM externals e " \
1442  "WHERE wc_id = ?1 " \
1443  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
1444  "  AND def_revision IS NULL " \
1445  "  AND repos_id = (SELECT repos_id " \
1446  "                  FROM nodes AS n " \
1447  "                  WHERE n.wc_id = ?1 " \
1448  "                    AND n.local_relpath = '' " \
1449  "                    AND n.op_depth = 0) " \
1450  "  AND ((kind='dir') " \
1451  "       OR EXISTS (SELECT 1 FROM nodes " \
1452  "                  WHERE nodes.wc_id = e.wc_id " \
1453  "                  AND nodes.local_relpath = e.parent_relpath)) " \
1454  ""
1455
1456#define STMT_SELECT_COMMITTABLE_EXTERNALS_IMMEDIATELY_BELOW 142
1457#define STMT_142_INFO {"STMT_SELECT_COMMITTABLE_EXTERNALS_IMMEDIATELY_BELOW", NULL}
1458#define STMT_142 \
1459  "SELECT local_relpath, kind, def_repos_relpath, " \
1460  "  (SELECT root FROM repository AS r WHERE r.id = e.repos_id) " \
1461  "FROM externals e " \
1462  "WHERE wc_id = ?1 " \
1463  "  AND (((e.local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((e.local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
1464  "  AND parent_relpath = ?2 " \
1465  "  AND def_revision IS NULL " \
1466  "  AND repos_id = (SELECT repos_id " \
1467  "                    FROM nodes AS n " \
1468  "                    WHERE n.wc_id = ?1 " \
1469  "                      AND n.local_relpath = '' " \
1470  "                      AND n.op_depth = 0) " \
1471  "  AND ((kind='dir') " \
1472  "       OR EXISTS (SELECT 1 FROM nodes " \
1473  "                  WHERE nodes.wc_id = e.wc_id " \
1474  "                  AND nodes.local_relpath = e.parent_relpath)) " \
1475  ""
1476
1477#define STMT_SELECT_EXTERNALS_DEFINED 143
1478#define STMT_143_INFO {"STMT_SELECT_EXTERNALS_DEFINED", NULL}
1479#define STMT_143 \
1480  "SELECT local_relpath, def_local_relpath " \
1481  "FROM externals " \
1482  "WHERE (wc_id = ?1 AND def_local_relpath = ?2) " \
1483  "   OR (wc_id = ?1 AND (((def_local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((def_local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1484  ""
1485
1486#define STMT_DELETE_EXTERNAL 144
1487#define STMT_144_INFO {"STMT_DELETE_EXTERNAL", NULL}
1488#define STMT_144 \
1489  "DELETE FROM externals " \
1490  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
1491  ""
1492
1493#define STMT_SELECT_EXTERNAL_PROPERTIES 145
1494#define STMT_145_INFO {"STMT_SELECT_EXTERNAL_PROPERTIES", NULL}
1495#define STMT_145 \
1496  "SELECT IFNULL((SELECT properties FROM actual_node a " \
1497  "               WHERE a.wc_id = ?1 AND A.local_relpath = n.local_relpath), " \
1498  "              properties), " \
1499  "       local_relpath, depth " \
1500  "FROM nodes_current n " \
1501  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
1502  "  AND kind = 'dir' AND presence IN ('normal', 'incomplete') " \
1503  "UNION ALL " \
1504  "SELECT IFNULL((SELECT properties FROM actual_node a " \
1505  "               WHERE a.wc_id = ?1 AND A.local_relpath = n.local_relpath), " \
1506  "              properties), " \
1507  "       local_relpath, depth " \
1508  "FROM nodes_current n " \
1509  "WHERE wc_id = ?1 AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
1510  "  AND kind = 'dir' AND presence IN ('normal', 'incomplete') " \
1511  ""
1512
1513#define STMT_SELECT_CURRENT_PROPS_RECURSIVE 146
1514#define STMT_146_INFO {"STMT_SELECT_CURRENT_PROPS_RECURSIVE", NULL}
1515#define STMT_146 \
1516  "SELECT IFNULL((SELECT properties FROM actual_node a " \
1517  "               WHERE a.wc_id = ?1 AND A.local_relpath = n.local_relpath), " \
1518  "              properties), " \
1519  "       local_relpath " \
1520  "FROM nodes_current n " \
1521  "WHERE (wc_id = ?1 AND local_relpath = ?2) " \
1522  "   OR (wc_id = ?1 AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1523  ""
1524
1525#define STMT_PRAGMA_LOCKING_MODE 147
1526#define STMT_147_INFO {"STMT_PRAGMA_LOCKING_MODE", NULL}
1527#define STMT_147 \
1528  "PRAGMA locking_mode = exclusive " \
1529  ""
1530
1531#define STMT_INSERT_ACTUAL_NODE 148
1532#define STMT_148_INFO {"STMT_INSERT_ACTUAL_NODE", NULL}
1533#define STMT_148 \
1534  "INSERT OR REPLACE INTO actual_node ( " \
1535  "  wc_id, local_relpath, parent_relpath, properties, changelist, conflict_data) " \
1536  "VALUES (?1, ?2, ?3, ?4, ?5, ?6) " \
1537  ""
1538
1539#define STMT_UPDATE_ACTUAL_CONFLICT_DATA 149
1540#define STMT_149_INFO {"STMT_UPDATE_ACTUAL_CONFLICT_DATA", NULL}
1541#define STMT_149 \
1542  "UPDATE actual_node SET conflict_data = ?3 " \
1543  "WHERE wc_id = ?1 AND local_relpath = ?2 " \
1544  ""
1545
1546#define STMT_INSERT_ACTUAL_CONFLICT_DATA 150
1547#define STMT_150_INFO {"STMT_INSERT_ACTUAL_CONFLICT_DATA", NULL}
1548#define STMT_150 \
1549  "INSERT INTO actual_node (wc_id, local_relpath, conflict_data, parent_relpath) " \
1550  "VALUES (?1, ?2, ?3, ?4) " \
1551  ""
1552
1553#define STMT_SELECT_ALL_FILES 151
1554#define STMT_151_INFO {"STMT_SELECT_ALL_FILES", NULL}
1555#define STMT_151 \
1556  "SELECT local_relpath FROM nodes_current " \
1557  "WHERE wc_id = ?1 AND parent_relpath = ?2 AND kind = 'file' " \
1558  ""
1559
1560#define STMT_UPDATE_NODE_PROPS 152
1561#define STMT_152_INFO {"STMT_UPDATE_NODE_PROPS", NULL}
1562#define STMT_152 \
1563  "UPDATE nodes SET properties = ?4 " \
1564  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \
1565  ""
1566
1567#define STMT_PRAGMA_TABLE_INFO_NODES 153
1568#define STMT_153_INFO {"STMT_PRAGMA_TABLE_INFO_NODES", NULL}
1569#define STMT_153 \
1570  "PRAGMA table_info(\"NODES\") " \
1571  ""
1572
1573#define STMT_CREATE_TARGET_PROP_CACHE 154
1574#define STMT_154_INFO {"STMT_CREATE_TARGET_PROP_CACHE", NULL}
1575#define STMT_154 \
1576  "DROP TABLE IF EXISTS target_prop_cache; " \
1577  "CREATE TEMPORARY TABLE target_prop_cache ( " \
1578  "  local_relpath TEXT NOT NULL PRIMARY KEY, " \
1579  "  kind TEXT NOT NULL, " \
1580  "  properties BLOB " \
1581  "); " \
1582  ""
1583
1584#define STMT_CACHE_TARGET_PROPS 155
1585#define STMT_155_INFO {"STMT_CACHE_TARGET_PROPS", NULL}
1586#define STMT_155 \
1587  "INSERT INTO target_prop_cache(local_relpath, kind, properties) " \
1588  " SELECT n.local_relpath, n.kind, " \
1589  "        IFNULL((SELECT properties FROM actual_node AS a " \
1590  "                 WHERE a.wc_id = n.wc_id " \
1591  "                   AND a.local_relpath = n.local_relpath), " \
1592  "               n.properties) " \
1593  "   FROM targets_list AS t " \
1594  "   JOIN nodes AS n " \
1595  "     ON n.wc_id = ?1 " \
1596  "    AND n.local_relpath = t.local_relpath " \
1597  "    AND n.op_depth = (SELECT MAX(op_depth) FROM nodes AS n3 " \
1598  "                      WHERE n3.wc_id = ?1 " \
1599  "                        AND n3.local_relpath = t.local_relpath) " \
1600  "  WHERE t.wc_id = ?1 " \
1601  "    AND (presence='normal' OR presence='incomplete') " \
1602  "  ORDER BY t.local_relpath " \
1603  ""
1604
1605#define STMT_CACHE_TARGET_PRISTINE_PROPS 156
1606#define STMT_156_INFO {"STMT_CACHE_TARGET_PRISTINE_PROPS", NULL}
1607#define STMT_156 \
1608  "INSERT INTO target_prop_cache(local_relpath, kind, properties) " \
1609  " SELECT n.local_relpath, n.kind, " \
1610  "        CASE n.presence " \
1611  "          WHEN 'base-deleted' " \
1612  "          THEN (SELECT properties FROM nodes AS p " \
1613  "                 WHERE p.wc_id = n.wc_id " \
1614  "                   AND p.local_relpath = n.local_relpath " \
1615  "                   AND p.op_depth < n.op_depth " \
1616  "                 ORDER BY p.op_depth DESC ) " \
1617  "          ELSE properties END " \
1618  "  FROM targets_list AS t " \
1619  "  JOIN nodes AS n " \
1620  "    ON n.wc_id = ?1 " \
1621  "   AND n.local_relpath = t.local_relpath " \
1622  "   AND n.op_depth = (SELECT MAX(op_depth) FROM nodes AS n3 " \
1623  "                     WHERE n3.wc_id = ?1 " \
1624  "                       AND n3.local_relpath = t.local_relpath) " \
1625  "  WHERE t.wc_id = ?1 " \
1626  "    AND (presence = 'normal' " \
1627  "         OR presence = 'incomplete' " \
1628  "         OR presence = 'base-deleted') " \
1629  "  ORDER BY t.local_relpath " \
1630  ""
1631
1632#define STMT_SELECT_ALL_TARGET_PROP_CACHE 157
1633#define STMT_157_INFO {"STMT_SELECT_ALL_TARGET_PROP_CACHE", NULL}
1634#define STMT_157 \
1635  "SELECT local_relpath, properties FROM target_prop_cache " \
1636  "ORDER BY local_relpath " \
1637  ""
1638
1639#define STMT_DROP_TARGET_PROP_CACHE 158
1640#define STMT_158_INFO {"STMT_DROP_TARGET_PROP_CACHE", NULL}
1641#define STMT_158 \
1642  "DROP TABLE target_prop_cache; " \
1643  ""
1644
1645#define STMT_CREATE_REVERT_LIST 159
1646#define STMT_159_INFO {"STMT_CREATE_REVERT_LIST", NULL}
1647#define STMT_159 \
1648  "DROP TABLE IF EXISTS revert_list; " \
1649  "CREATE TEMPORARY TABLE revert_list ( " \
1650  "   local_relpath TEXT NOT NULL, " \
1651  "   actual INTEGER NOT NULL, " \
1652  "   conflict_data BLOB, " \
1653  "   notify INTEGER, " \
1654  "   op_depth INTEGER, " \
1655  "   repos_id INTEGER, " \
1656  "   kind TEXT, " \
1657  "   PRIMARY KEY (local_relpath, actual) " \
1658  "   ); " \
1659  "DROP TRIGGER IF EXISTS   trigger_revert_list_nodes; " \
1660  "CREATE TEMPORARY TRIGGER trigger_revert_list_nodes " \
1661  "BEFORE DELETE ON nodes " \
1662  "BEGIN " \
1663  "   INSERT OR REPLACE INTO revert_list(local_relpath, actual, op_depth, " \
1664  "                                      repos_id, kind) " \
1665  "   SELECT OLD.local_relpath, 0, OLD.op_depth, OLD.repos_id, OLD.kind; " \
1666  "END; " \
1667  "DROP TRIGGER IF EXISTS   trigger_revert_list_actual_delete; " \
1668  "CREATE TEMPORARY TRIGGER trigger_revert_list_actual_delete " \
1669  "BEFORE DELETE ON actual_node " \
1670  "BEGIN " \
1671  "   INSERT OR REPLACE INTO revert_list(local_relpath, actual, conflict_data, " \
1672  "                                      notify) " \
1673  "   SELECT OLD.local_relpath, 1, OLD.conflict_data, " \
1674  "          CASE " \
1675  "            WHEN OLD.properties IS NOT NULL " \
1676  "            THEN 1 " \
1677  "            WHEN NOT EXISTS(SELECT 1 FROM NODES n " \
1678  "                            WHERE n.wc_id = OLD.wc_id " \
1679  "                              AND n.local_relpath = OLD.local_relpath) " \
1680  "            THEN 1 " \
1681  "            ELSE NULL " \
1682  "          END; " \
1683  "END; " \
1684  "DROP TRIGGER IF EXISTS   trigger_revert_list_actual_update; " \
1685  "CREATE TEMPORARY TRIGGER trigger_revert_list_actual_update " \
1686  "BEFORE UPDATE ON actual_node " \
1687  "BEGIN " \
1688  "   INSERT OR REPLACE INTO revert_list(local_relpath, actual, conflict_data, " \
1689  "                                      notify) " \
1690  "   SELECT OLD.local_relpath, 1, OLD.conflict_data, " \
1691  "          CASE " \
1692  "            WHEN OLD.properties IS NOT NULL " \
1693  "            THEN 1 " \
1694  "            WHEN NOT EXISTS(SELECT 1 FROM NODES n " \
1695  "                            WHERE n.wc_id = OLD.wc_id " \
1696  "                              AND n.local_relpath = OLD.local_relpath) " \
1697  "            THEN 1 " \
1698  "            ELSE NULL " \
1699  "          END; " \
1700  "END " \
1701  ""
1702
1703#define STMT_DROP_REVERT_LIST_TRIGGERS 160
1704#define STMT_160_INFO {"STMT_DROP_REVERT_LIST_TRIGGERS", NULL}
1705#define STMT_160 \
1706  "DROP TRIGGER trigger_revert_list_nodes; " \
1707  "DROP TRIGGER trigger_revert_list_actual_delete; " \
1708  "DROP TRIGGER trigger_revert_list_actual_update " \
1709  ""
1710
1711#define STMT_SELECT_REVERT_LIST 161
1712#define STMT_161_INFO {"STMT_SELECT_REVERT_LIST", NULL}
1713#define STMT_161 \
1714  "SELECT actual, notify, kind, op_depth, repos_id, conflict_data " \
1715  "FROM revert_list " \
1716  "WHERE local_relpath = ?1 " \
1717  "ORDER BY actual DESC " \
1718  ""
1719
1720#define STMT_SELECT_REVERT_LIST_COPIED_CHILDREN 162
1721#define STMT_162_INFO {"STMT_SELECT_REVERT_LIST_COPIED_CHILDREN", NULL}
1722#define STMT_162 \
1723  "SELECT local_relpath, kind " \
1724  "FROM revert_list " \
1725  "WHERE (((local_relpath) > (CASE (?1) WHEN '' THEN '' ELSE (?1) || '/' END)) AND ((local_relpath) < CASE (?1) WHEN '' THEN X'FFFF' ELSE (?1) || '0' END)) " \
1726  "  AND op_depth >= ?2 " \
1727  "  AND repos_id IS NOT NULL " \
1728  "ORDER BY local_relpath " \
1729  ""
1730
1731#define STMT_DELETE_REVERT_LIST 163
1732#define STMT_163_INFO {"STMT_DELETE_REVERT_LIST", NULL}
1733#define STMT_163 \
1734  "DELETE FROM revert_list WHERE local_relpath = ?1 " \
1735  ""
1736
1737#define STMT_SELECT_REVERT_LIST_RECURSIVE 164
1738#define STMT_164_INFO {"STMT_SELECT_REVERT_LIST_RECURSIVE", NULL}
1739#define STMT_164 \
1740  "SELECT DISTINCT local_relpath " \
1741  "FROM revert_list " \
1742  "WHERE (local_relpath = ?1 " \
1743  "       OR (((local_relpath) > (CASE (?1) WHEN '' THEN '' ELSE (?1) || '/' END)) AND ((local_relpath) < CASE (?1) WHEN '' THEN X'FFFF' ELSE (?1) || '0' END))) " \
1744  "  AND (notify OR actual = 0) " \
1745  "ORDER BY local_relpath " \
1746  ""
1747
1748#define STMT_DELETE_REVERT_LIST_RECURSIVE 165
1749#define STMT_165_INFO {"STMT_DELETE_REVERT_LIST_RECURSIVE", NULL}
1750#define STMT_165 \
1751  "DELETE FROM revert_list " \
1752  "WHERE (local_relpath = ?1 " \
1753  "       OR (((local_relpath) > (CASE (?1) WHEN '' THEN '' ELSE (?1) || '/' END)) AND ((local_relpath) < CASE (?1) WHEN '' THEN X'FFFF' ELSE (?1) || '0' END))) " \
1754  ""
1755
1756#define STMT_DROP_REVERT_LIST 166
1757#define STMT_166_INFO {"STMT_DROP_REVERT_LIST", NULL}
1758#define STMT_166 \
1759  "DROP TABLE IF EXISTS revert_list " \
1760  ""
1761
1762#define STMT_CREATE_DELETE_LIST 167
1763#define STMT_167_INFO {"STMT_CREATE_DELETE_LIST", NULL}
1764#define STMT_167 \
1765  "DROP TABLE IF EXISTS delete_list; " \
1766  "CREATE TEMPORARY TABLE delete_list ( " \
1767  "   local_relpath TEXT PRIMARY KEY NOT NULL UNIQUE " \
1768  "   ) " \
1769  ""
1770
1771#define STMT_INSERT_DELETE_LIST 168
1772#define STMT_168_INFO {"STMT_INSERT_DELETE_LIST", NULL}
1773#define STMT_168 \
1774  "INSERT INTO delete_list(local_relpath) " \
1775  "SELECT local_relpath FROM nodes AS n " \
1776  "WHERE wc_id = ?1 " \
1777  "  AND (local_relpath = ?2 " \
1778  "       OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1779  "  AND op_depth >= ?3 " \
1780  "  AND op_depth = (SELECT MAX(s.op_depth) FROM nodes AS s " \
1781  "                  WHERE s.wc_id = ?1 " \
1782  "                    AND s.local_relpath = n.local_relpath) " \
1783  "  AND presence NOT IN ('base-deleted', 'not-present', 'excluded', 'server-excluded') " \
1784  "  AND file_external IS NULL " \
1785  ""
1786
1787#define STMT_SELECT_DELETE_LIST 169
1788#define STMT_169_INFO {"STMT_SELECT_DELETE_LIST", NULL}
1789#define STMT_169 \
1790  "SELECT local_relpath FROM delete_list " \
1791  "ORDER BY local_relpath " \
1792  ""
1793
1794#define STMT_FINALIZE_DELETE 170
1795#define STMT_170_INFO {"STMT_FINALIZE_DELETE", NULL}
1796#define STMT_170 \
1797  "DROP TABLE IF EXISTS delete_list " \
1798  ""
1799
1800#define STMT_CREATE_UPDATE_MOVE_LIST 171
1801#define STMT_171_INFO {"STMT_CREATE_UPDATE_MOVE_LIST", NULL}
1802#define STMT_171 \
1803  "DROP TABLE IF EXISTS update_move_list; " \
1804  "CREATE TEMPORARY TABLE update_move_list ( " \
1805  "  local_relpath TEXT PRIMARY KEY NOT NULL UNIQUE, " \
1806  "  action INTEGER NOT NULL, " \
1807  "  kind  INTEGER NOT NULL, " \
1808  "  content_state INTEGER NOT NULL, " \
1809  "  prop_state  INTEGER NOT NULL " \
1810  "  ) " \
1811  ""
1812
1813#define STMT_INSERT_UPDATE_MOVE_LIST 172
1814#define STMT_172_INFO {"STMT_INSERT_UPDATE_MOVE_LIST", NULL}
1815#define STMT_172 \
1816  "INSERT INTO update_move_list(local_relpath, action, kind, content_state, " \
1817  "  prop_state) " \
1818  "VALUES (?1, ?2, ?3, ?4, ?5) " \
1819  ""
1820
1821#define STMT_SELECT_UPDATE_MOVE_LIST 173
1822#define STMT_173_INFO {"STMT_SELECT_UPDATE_MOVE_LIST", NULL}
1823#define STMT_173 \
1824  "SELECT local_relpath, action, kind, content_state, prop_state " \
1825  "FROM update_move_list " \
1826  "ORDER BY local_relpath " \
1827  ""
1828
1829#define STMT_FINALIZE_UPDATE_MOVE 174
1830#define STMT_174_INFO {"STMT_FINALIZE_UPDATE_MOVE", NULL}
1831#define STMT_174 \
1832  "DROP TABLE IF EXISTS update_move_list " \
1833  ""
1834
1835#define STMT_SELECT_MIN_MAX_REVISIONS 175
1836#define STMT_175_INFO {"STMT_SELECT_MIN_MAX_REVISIONS", NULL}
1837#define STMT_175 \
1838  "SELECT MIN(revision), MAX(revision), " \
1839  "       MIN(changed_revision), MAX(changed_revision) FROM nodes " \
1840  "  WHERE wc_id = ?1 " \
1841  "    AND (local_relpath = ?2 " \
1842  "         OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1843  "    AND presence IN ('normal', 'incomplete') " \
1844  "    AND file_external IS NULL " \
1845  "    AND op_depth = 0 " \
1846  ""
1847
1848#define STMT_HAS_SPARSE_NODES 176
1849#define STMT_176_INFO {"STMT_HAS_SPARSE_NODES", NULL}
1850#define STMT_176 \
1851  "SELECT 1 FROM nodes " \
1852  "WHERE wc_id = ?1 " \
1853  "  AND (local_relpath = ?2 " \
1854  "       OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1855  "  AND op_depth = 0 " \
1856  "  AND (presence IN ('server-excluded', 'excluded') " \
1857  "        OR depth NOT IN ('infinity', 'unknown')) " \
1858  "  AND file_external IS NULL " \
1859  "LIMIT 1 " \
1860  ""
1861
1862#define STMT_SUBTREE_HAS_TREE_MODIFICATIONS 177
1863#define STMT_177_INFO {"STMT_SUBTREE_HAS_TREE_MODIFICATIONS", NULL}
1864#define STMT_177 \
1865  "SELECT 1 FROM nodes " \
1866  "WHERE wc_id = ?1 " \
1867  "  AND (local_relpath = ?2 " \
1868  "       OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1869  "  AND op_depth > 0 " \
1870  "LIMIT 1 " \
1871  ""
1872
1873#define STMT_SUBTREE_HAS_PROP_MODIFICATIONS 178
1874#define STMT_178_INFO {"STMT_SUBTREE_HAS_PROP_MODIFICATIONS", NULL}
1875#define STMT_178 \
1876  "SELECT 1 FROM actual_node " \
1877  "WHERE wc_id = ?1 " \
1878  "  AND (local_relpath = ?2 " \
1879  "       OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1880  "  AND properties IS NOT NULL " \
1881  "LIMIT 1 " \
1882  ""
1883
1884#define STMT_HAS_SWITCHED 179
1885#define STMT_179_INFO {"STMT_HAS_SWITCHED", NULL}
1886#define STMT_179 \
1887  "SELECT 1 " \
1888  "FROM nodes " \
1889  "WHERE wc_id = ?1 " \
1890  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
1891  "  AND op_depth = 0 " \
1892  "  AND file_external IS NULL " \
1893  "  AND presence IN ('normal', 'incomplete') " \
1894  "  AND repos_path IS NOT (CASE WHEN (?2) = '' THEN (CASE WHEN (?3) = '' THEN (local_relpath) WHEN (local_relpath) = '' THEN (?3) ELSE (?3) || '/' || (local_relpath) END) WHEN (?3) = '' THEN (CASE WHEN (?2) = '' THEN (local_relpath)  WHEN SUBSTR((local_relpath), 1, LENGTH(?2)) = (?2)  THEN CASE WHEN LENGTH(?2) = LENGTH(local_relpath) THEN '' WHEN SUBSTR((local_relpath), LENGTH(?2)+1, 1) = '/' THEN SUBSTR((local_relpath), LENGTH(?2)+2) END END) WHEN SUBSTR((local_relpath), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(local_relpath) THEN (?3) WHEN SUBSTR((local_relpath), LENGTH(?2)+1, 1) = '/' THEN (?3) || SUBSTR((local_relpath), LENGTH(?2)+1) END END) " \
1895  "LIMIT 1 " \
1896  ""
1897
1898#define STMT_SELECT_BASE_FILES_RECURSIVE 180
1899#define STMT_180_INFO {"STMT_SELECT_BASE_FILES_RECURSIVE", NULL}
1900#define STMT_180 \
1901  "SELECT local_relpath, translated_size, last_mod_time FROM nodes AS n " \
1902  "WHERE wc_id = ?1 " \
1903  "  AND (local_relpath = ?2 " \
1904  "       OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1905  "  AND op_depth = 0 " \
1906  "  AND kind='file' " \
1907  "  AND presence='normal' " \
1908  "  AND file_external IS NULL " \
1909  ""
1910
1911#define STMT_SELECT_MOVED_FROM_RELPATH 181
1912#define STMT_181_INFO {"STMT_SELECT_MOVED_FROM_RELPATH", NULL}
1913#define STMT_181 \
1914  "SELECT local_relpath, op_depth FROM nodes " \
1915  "WHERE wc_id = ?1 AND moved_to = ?2 AND op_depth > 0 " \
1916  ""
1917
1918#define STMT_UPDATE_MOVED_TO_RELPATH 182
1919#define STMT_182_INFO {"STMT_UPDATE_MOVED_TO_RELPATH", NULL}
1920#define STMT_182 \
1921  "UPDATE nodes SET moved_to = ?4 " \
1922  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \
1923  ""
1924
1925#define STMT_CLEAR_MOVED_TO_RELPATH 183
1926#define STMT_183_INFO {"STMT_CLEAR_MOVED_TO_RELPATH", NULL}
1927#define STMT_183 \
1928  "UPDATE nodes SET moved_to = NULL " \
1929  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \
1930  ""
1931
1932#define STMT_CLEAR_MOVED_HERE_RECURSIVE 184
1933#define STMT_184_INFO {"STMT_CLEAR_MOVED_HERE_RECURSIVE", NULL}
1934#define STMT_184 \
1935  "UPDATE nodes SET moved_here = NULL " \
1936  "WHERE wc_id = ?1 " \
1937  " AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1938  " AND op_depth = ?3 " \
1939  ""
1940
1941#define STMT_SELECT_MOVED_HERE_CHILDREN 185
1942#define STMT_185_INFO {"STMT_SELECT_MOVED_HERE_CHILDREN", NULL}
1943#define STMT_185 \
1944  "SELECT moved_to, local_relpath FROM nodes " \
1945  "WHERE wc_id = ?1 AND op_depth > 0 " \
1946  "  AND (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
1947  ""
1948
1949#define STMT_SELECT_MOVED_FOR_DELETE 186
1950#define STMT_186_INFO {"STMT_SELECT_MOVED_FOR_DELETE", NULL}
1951#define STMT_186 \
1952  "SELECT local_relpath, moved_to, op_depth FROM nodes " \
1953  "WHERE wc_id = ?1 " \
1954  "  AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1955  "  AND moved_to IS NOT NULL " \
1956  "  AND op_depth >= (SELECT MAX(op_depth) FROM nodes o " \
1957  "                    WHERE o.wc_id = ?1 " \
1958  "                      AND o.local_relpath = ?2) " \
1959  ""
1960
1961#define STMT_UPDATE_MOVED_TO_DESCENDANTS 187
1962#define STMT_187_INFO {"STMT_UPDATE_MOVED_TO_DESCENDANTS", NULL}
1963#define STMT_187 \
1964  "UPDATE nodes SET moved_to = (CASE WHEN (?2) = '' THEN (CASE WHEN (?3) = '' THEN (moved_to) WHEN (moved_to) = '' THEN (?3) ELSE (?3) || '/' || (moved_to) END) WHEN (?3) = '' THEN (CASE WHEN (?2) = '' THEN (moved_to)  WHEN SUBSTR((moved_to), 1, LENGTH(?2)) = (?2)  THEN CASE WHEN LENGTH(?2) = LENGTH(moved_to) THEN '' WHEN SUBSTR((moved_to), LENGTH(?2)+1, 1) = '/' THEN SUBSTR((moved_to), LENGTH(?2)+2) END END) WHEN SUBSTR((moved_to), 1, LENGTH(?2)) = (?2) THEN CASE WHEN LENGTH(?2) = LENGTH(moved_to) THEN (?3) WHEN SUBSTR((moved_to), LENGTH(?2)+1, 1) = '/' THEN (?3) || SUBSTR((moved_to), LENGTH(?2)+1) END END) " \
1965  " WHERE wc_id = ?1 " \
1966  "   AND (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
1967  ""
1968
1969#define STMT_CLEAR_MOVED_TO_DESCENDANTS 188
1970#define STMT_188_INFO {"STMT_CLEAR_MOVED_TO_DESCENDANTS", NULL}
1971#define STMT_188 \
1972  "UPDATE nodes SET moved_to = NULL " \
1973  " WHERE wc_id = ?1 " \
1974  "   AND (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
1975  ""
1976
1977#define STMT_SELECT_MOVED_PAIR2 189
1978#define STMT_189_INFO {"STMT_SELECT_MOVED_PAIR2", NULL}
1979#define STMT_189 \
1980  "SELECT local_relpath, moved_to, op_depth FROM nodes " \
1981  "WHERE wc_id = ?1 " \
1982  "  AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1983  "  AND moved_to IS NOT NULL " \
1984  "  AND NOT (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
1985  "  AND op_depth >= (SELECT MAX(op_depth) FROM nodes o " \
1986  "                    WHERE o.wc_id = ?1 " \
1987  "                      AND o.local_relpath = ?2) " \
1988  ""
1989
1990#define STMT_SELECT_MOVED_PAIR3 190
1991#define STMT_190_INFO {"STMT_SELECT_MOVED_PAIR3", NULL}
1992#define STMT_190 \
1993  "SELECT local_relpath, moved_to, op_depth, kind FROM nodes " \
1994  "WHERE wc_id = ?1 " \
1995  "  AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
1996  "  AND op_depth > ?3 " \
1997  "  AND moved_to IS NOT NULL " \
1998  ""
1999
2000#define STMT_SELECT_MOVED_OUTSIDE 191
2001#define STMT_191_INFO {"STMT_SELECT_MOVED_OUTSIDE", NULL}
2002#define STMT_191 \
2003  "SELECT local_relpath, moved_to FROM nodes " \
2004  "WHERE wc_id = ?1 " \
2005  "  AND (local_relpath = ?2 OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
2006  "  AND op_depth >= ?3 " \
2007  "  AND moved_to IS NOT NULL " \
2008  "  AND NOT (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
2009  ""
2010
2011#define STMT_SELECT_OP_DEPTH_MOVED_PAIR 192
2012#define STMT_192_INFO {"STMT_SELECT_OP_DEPTH_MOVED_PAIR", NULL}
2013#define STMT_192 \
2014  "SELECT n.local_relpath, n.moved_to, " \
2015  "       (SELECT o.repos_path FROM nodes AS o " \
2016  "        WHERE o.wc_id = n.wc_id " \
2017  "          AND o.local_relpath = n.local_relpath " \
2018  "          AND o.op_depth < ?3 ORDER BY o.op_depth DESC LIMIT 1) " \
2019  "FROM nodes AS n " \
2020  "WHERE n.wc_id = ?1 " \
2021  "  AND (((n.local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((n.local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
2022  "  AND n.op_depth = ?3 " \
2023  "  AND n.moved_to IS NOT NULL " \
2024  ""
2025
2026#define STMT_SELECT_MOVED_DESCENDANTS 193
2027#define STMT_193_INFO {"STMT_SELECT_MOVED_DESCENDANTS", NULL}
2028#define STMT_193 \
2029  "SELECT n.local_relpath, h.moved_to " \
2030  "FROM nodes n, nodes h " \
2031  "WHERE n.wc_id = ?1 " \
2032  "  AND h.wc_id = ?1 " \
2033  "  AND (((n.local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((n.local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
2034  "  AND h.local_relpath = n.local_relpath " \
2035  "  AND n.op_depth = ?3 " \
2036  "  AND h.op_depth = (SELECT MIN(o.op_depth) " \
2037  "                    FROM nodes o " \
2038  "                    WHERE o.wc_id = ?1 " \
2039  "                      AND o.local_relpath = n.local_relpath " \
2040  "                      AND o.op_depth > ?3) " \
2041  "  AND h.moved_to IS NOT NULL " \
2042  ""
2043
2044#define STMT_COMMIT_UPDATE_ORIGIN 194
2045#define STMT_194_INFO {"STMT_COMMIT_UPDATE_ORIGIN", NULL}
2046#define STMT_194 \
2047  "UPDATE nodes SET repos_id = ?4, " \
2048  "                 repos_path = ?5 || SUBSTR(local_relpath, LENGTH(?2)+1), " \
2049  "                 revision = ?6 " \
2050  "WHERE wc_id = ?1 " \
2051  "  AND (local_relpath = ?2 " \
2052  "       OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \
2053  "  AND op_depth = ?3 " \
2054  ""
2055
2056#define STMT_HAS_LAYER_BETWEEN 195
2057#define STMT_195_INFO {"STMT_HAS_LAYER_BETWEEN", NULL}
2058#define STMT_195 \
2059  "SELECT 1 FROM NODES " \
2060  "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > ?3 AND op_depth < ?4 " \
2061  ""
2062
2063#define STMT_SELECT_REPOS_PATH_REVISION 196
2064#define STMT_196_INFO {"STMT_SELECT_REPOS_PATH_REVISION", NULL}
2065#define STMT_196 \
2066  "SELECT local_relpath, repos_path, revision FROM nodes " \
2067  "WHERE wc_id = ?1 " \
2068  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
2069  "  AND op_depth = 0 " \
2070  "ORDER BY local_relpath " \
2071  ""
2072
2073#define STMT_SELECT_HAS_NON_FILE_CHILDREN 197
2074#define STMT_197_INFO {"STMT_SELECT_HAS_NON_FILE_CHILDREN", NULL}
2075#define STMT_197 \
2076  "SELECT 1 FROM nodes " \
2077  "WHERE wc_id = ?1 AND parent_relpath = ?2 AND op_depth = 0 AND kind != 'file' " \
2078  ""
2079
2080#define STMT_SELECT_HAS_GRANDCHILDREN 198
2081#define STMT_198_INFO {"STMT_SELECT_HAS_GRANDCHILDREN", NULL}
2082#define STMT_198 \
2083  "SELECT 1 FROM nodes " \
2084  "WHERE wc_id = ?1 " \
2085  "  AND (((parent_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((parent_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
2086  "  AND op_depth = 0 " \
2087  "  AND file_external IS NULL " \
2088  ""
2089
2090#define STMT_SELECT_ALL_NODES 199
2091#define STMT_199_INFO {"STMT_SELECT_ALL_NODES", NULL}
2092#define STMT_199 \
2093  "SELECT op_depth, local_relpath, parent_relpath, file_external FROM nodes " \
2094  "WHERE wc_id = ?1 " \
2095  ""
2096
2097#define STMT_SELECT_IPROPS 200
2098#define STMT_200_INFO {"STMT_SELECT_IPROPS", NULL}
2099#define STMT_200 \
2100  "SELECT inherited_props FROM nodes " \
2101  "WHERE wc_id = ?1 " \
2102  "  AND local_relpath = ?2 " \
2103  "  AND op_depth = 0 " \
2104  ""
2105
2106#define STMT_UPDATE_IPROP 201
2107#define STMT_201_INFO {"STMT_UPDATE_IPROP", NULL}
2108#define STMT_201 \
2109  "UPDATE nodes " \
2110  "SET inherited_props = ?3 " \
2111  "WHERE (wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0) " \
2112  ""
2113
2114#define STMT_SELECT_IPROPS_NODE 202
2115#define STMT_202_INFO {"STMT_SELECT_IPROPS_NODE", NULL}
2116#define STMT_202 \
2117  "SELECT local_relpath, repos_path FROM nodes " \
2118  "WHERE wc_id = ?1 " \
2119  "  AND local_relpath = ?2 " \
2120  "  AND op_depth = 0 " \
2121  "  AND (inherited_props not null) " \
2122  ""
2123
2124#define STMT_SELECT_IPROPS_RECURSIVE 203
2125#define STMT_203_INFO {"STMT_SELECT_IPROPS_RECURSIVE", NULL}
2126#define STMT_203 \
2127  "SELECT local_relpath, repos_path FROM nodes " \
2128  "WHERE wc_id = ?1 " \
2129  "  AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \
2130  "  AND op_depth = 0 " \
2131  "  AND (inherited_props not null) " \
2132  ""
2133
2134#define STMT_SELECT_IPROPS_CHILDREN 204
2135#define STMT_204_INFO {"STMT_SELECT_IPROPS_CHILDREN", NULL}
2136#define STMT_204 \
2137  "SELECT local_relpath, repos_path FROM nodes " \
2138  "WHERE wc_id = ?1 " \
2139  "  AND parent_relpath = ?2 " \
2140  "  AND op_depth = 0 " \
2141  "  AND (inherited_props not null) " \
2142  ""
2143
2144#define STMT_CREATE_SCHEMA 205
2145#define STMT_205_INFO {"STMT_CREATE_SCHEMA", NULL}
2146#define STMT_205 \
2147  "CREATE TABLE REPOSITORY ( " \
2148  "  id INTEGER PRIMARY KEY AUTOINCREMENT, " \
2149  "  root  TEXT UNIQUE NOT NULL, " \
2150  "  uuid  TEXT NOT NULL " \
2151  "  ); " \
2152  "CREATE INDEX I_UUID ON REPOSITORY (uuid); " \
2153  "CREATE INDEX I_ROOT ON REPOSITORY (root); " \
2154  "CREATE TABLE WCROOT ( " \
2155  "  id  INTEGER PRIMARY KEY AUTOINCREMENT, " \
2156  "  local_abspath  TEXT UNIQUE " \
2157  "  ); " \
2158  "CREATE UNIQUE INDEX I_LOCAL_ABSPATH ON WCROOT (local_abspath); " \
2159  "CREATE TABLE PRISTINE ( " \
2160  "  checksum  TEXT NOT NULL PRIMARY KEY, " \
2161  "  compression  INTEGER, " \
2162  "  size  INTEGER NOT NULL, " \
2163  "  refcount  INTEGER NOT NULL, " \
2164  "  md5_checksum  TEXT NOT NULL " \
2165  "  ); " \
2166  "CREATE INDEX I_PRISTINE_MD5 ON PRISTINE (md5_checksum); " \
2167  "CREATE TABLE ACTUAL_NODE ( " \
2168  "  wc_id  INTEGER NOT NULL REFERENCES WCROOT (id), " \
2169  "  local_relpath  TEXT NOT NULL, " \
2170  "  parent_relpath  TEXT, " \
2171  "  properties  BLOB, " \
2172  "  conflict_old  TEXT, " \
2173  "  conflict_new  TEXT, " \
2174  "  conflict_working  TEXT, " \
2175  "  prop_reject  TEXT, " \
2176  "  changelist  TEXT, " \
2177  "  text_mod  TEXT, " \
2178  "  tree_conflict_data  TEXT, " \
2179  "  conflict_data  BLOB, " \
2180  "  older_checksum  TEXT REFERENCES PRISTINE (checksum), " \
2181  "  left_checksum  TEXT REFERENCES PRISTINE (checksum), " \
2182  "  right_checksum  TEXT REFERENCES PRISTINE (checksum), " \
2183  "  PRIMARY KEY (wc_id, local_relpath) " \
2184  "  ); " \
2185  "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \
2186  "                                                    local_relpath); " \
2187  "CREATE TABLE LOCK ( " \
2188  "  repos_id  INTEGER NOT NULL REFERENCES REPOSITORY (id), " \
2189  "  repos_relpath  TEXT NOT NULL, " \
2190  "  lock_token  TEXT NOT NULL, " \
2191  "  lock_owner  TEXT, " \
2192  "  lock_comment  TEXT, " \
2193  "  lock_date  INTEGER, " \
2194  "  PRIMARY KEY (repos_id, repos_relpath) " \
2195  "  ); " \
2196  "CREATE TABLE WORK_QUEUE ( " \
2197  "  id  INTEGER PRIMARY KEY AUTOINCREMENT, " \
2198  "  work  BLOB NOT NULL " \
2199  "  ); " \
2200  "CREATE TABLE WC_LOCK ( " \
2201  "  wc_id  INTEGER NOT NULL  REFERENCES WCROOT (id), " \
2202  "  local_dir_relpath  TEXT NOT NULL, " \
2203  "  locked_levels  INTEGER NOT NULL DEFAULT -1, " \
2204  "  PRIMARY KEY (wc_id, local_dir_relpath) " \
2205  " ); " \
2206  "PRAGMA user_version = " \
2207  APR_STRINGIFY(SVN_WC__VERSION) \
2208  "; " \
2209  ""
2210
2211#define STMT_CREATE_NODES 206
2212#define STMT_206_INFO {"STMT_CREATE_NODES", NULL}
2213#define STMT_206 \
2214  "CREATE TABLE NODES ( " \
2215  "  wc_id  INTEGER NOT NULL REFERENCES WCROOT (id), " \
2216  "  local_relpath  TEXT NOT NULL, " \
2217  "  op_depth INTEGER NOT NULL, " \
2218  "  parent_relpath  TEXT, " \
2219  "  repos_id  INTEGER REFERENCES REPOSITORY (id), " \
2220  "  repos_path  TEXT, " \
2221  "  revision  INTEGER, " \
2222  "  presence  TEXT NOT NULL, " \
2223  "  moved_here  INTEGER, " \
2224  "  moved_to  TEXT, " \
2225  "  kind  TEXT NOT NULL, " \
2226  "  properties  BLOB, " \
2227  "  depth  TEXT, " \
2228  "  checksum  TEXT REFERENCES PRISTINE (checksum), " \
2229  "  symlink_target  TEXT, " \
2230  "  changed_revision  INTEGER, " \
2231  "  changed_date      INTEGER, " \
2232  "  changed_author    TEXT, " \
2233  "  translated_size  INTEGER, " \
2234  "  last_mod_time  INTEGER, " \
2235  "  dav_cache  BLOB, " \
2236  "  file_external  INTEGER, " \
2237  "  inherited_props  BLOB, " \
2238  "  PRIMARY KEY (wc_id, local_relpath, op_depth) " \
2239  "  ); " \
2240  "CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, " \
2241  "                                             local_relpath, op_depth); " \
2242  "CREATE UNIQUE INDEX I_NODES_MOVED ON NODES (wc_id, moved_to, op_depth); " \
2243  "CREATE VIEW NODES_CURRENT AS " \
2244  "  SELECT * FROM nodes AS n " \
2245  "    WHERE op_depth = (SELECT MAX(op_depth) FROM nodes AS n2 " \
2246  "                      WHERE n2.wc_id = n.wc_id " \
2247  "                        AND n2.local_relpath = n.local_relpath); " \
2248  "CREATE VIEW NODES_BASE AS " \
2249  "  SELECT * FROM nodes " \
2250  "  WHERE op_depth = 0; " \
2251  ""
2252
2253#define STMT_CREATE_NODES_TRIGGERS 207
2254#define STMT_207_INFO {"STMT_CREATE_NODES_TRIGGERS", NULL}
2255#define STMT_207 \
2256  "CREATE TRIGGER nodes_insert_trigger " \
2257  "AFTER INSERT ON nodes " \
2258  "WHEN NEW.checksum IS NOT NULL " \
2259  "BEGIN " \
2260  "  UPDATE pristine SET refcount = refcount + 1 " \
2261  "  WHERE checksum = NEW.checksum; " \
2262  "END; " \
2263  "CREATE TRIGGER nodes_delete_trigger " \
2264  "AFTER DELETE ON nodes " \
2265  "WHEN OLD.checksum IS NOT NULL " \
2266  "BEGIN " \
2267  "  UPDATE pristine SET refcount = refcount - 1 " \
2268  "  WHERE checksum = OLD.checksum; " \
2269  "END; " \
2270  "CREATE TRIGGER nodes_update_checksum_trigger " \
2271  "AFTER UPDATE OF checksum ON nodes " \
2272  "WHEN NEW.checksum IS NOT OLD.checksum " \
2273  "BEGIN " \
2274  "  UPDATE pristine SET refcount = refcount + 1 " \
2275  "  WHERE checksum = NEW.checksum; " \
2276  "  UPDATE pristine SET refcount = refcount - 1 " \
2277  "  WHERE checksum = OLD.checksum; " \
2278  "END; " \
2279  ""
2280
2281#define STMT_CREATE_EXTERNALS 208
2282#define STMT_208_INFO {"STMT_CREATE_EXTERNALS", NULL}
2283#define STMT_208 \
2284  "CREATE TABLE EXTERNALS ( " \
2285  "  wc_id  INTEGER NOT NULL REFERENCES WCROOT (id), " \
2286  "  local_relpath  TEXT NOT NULL, " \
2287  "  parent_relpath  TEXT NOT NULL, " \
2288  "  repos_id  INTEGER NOT NULL REFERENCES REPOSITORY (id), " \
2289  "  presence  TEXT NOT NULL, " \
2290  "  kind  TEXT NOT NULL, " \
2291  "  def_local_relpath         TEXT NOT NULL, " \
2292  "  def_repos_relpath         TEXT NOT NULL, " \
2293  "  def_operational_revision  TEXT, " \
2294  "  def_revision              TEXT, " \
2295  "  PRIMARY KEY (wc_id, local_relpath) " \
2296  "); " \
2297  "CREATE UNIQUE INDEX I_EXTERNALS_DEFINED ON EXTERNALS (wc_id, " \
2298  "                                                      def_local_relpath, " \
2299  "                                                      local_relpath); " \
2300  ""
2301
2302#define STMT_UPGRADE_TO_20 209
2303#define STMT_209_INFO {"STMT_UPGRADE_TO_20", NULL}
2304#define STMT_209 \
2305  "UPDATE BASE_NODE SET checksum = (SELECT checksum FROM pristine " \
2306  "                                 WHERE md5_checksum = BASE_NODE.checksum) " \
2307  "WHERE EXISTS (SELECT 1 FROM pristine WHERE md5_checksum = BASE_NODE.checksum); " \
2308  "UPDATE WORKING_NODE SET checksum = (SELECT checksum FROM pristine " \
2309  "                                    WHERE md5_checksum = WORKING_NODE.checksum) " \
2310  "WHERE EXISTS (SELECT 1 FROM pristine " \
2311  "              WHERE md5_checksum = WORKING_NODE.checksum); " \
2312  "INSERT INTO NODES ( " \
2313  "       wc_id, local_relpath, op_depth, parent_relpath, " \
2314  "       repos_id, repos_path, revision, " \
2315  "       presence, depth, moved_here, moved_to, kind, " \
2316  "       changed_revision, changed_date, changed_author, " \
2317  "       checksum, properties, translated_size, last_mod_time, " \
2318  "       dav_cache, symlink_target, file_external ) " \
2319  "SELECT wc_id, local_relpath, 0 , parent_relpath, " \
2320  "       repos_id, repos_relpath, revnum, " \
2321  "       presence, depth, NULL , NULL , kind, " \
2322  "       changed_rev, changed_date, changed_author, " \
2323  "       checksum, properties, translated_size, last_mod_time, " \
2324  "       dav_cache, symlink_target, file_external " \
2325  "FROM BASE_NODE; " \
2326  "INSERT INTO NODES ( " \
2327  "       wc_id, local_relpath, op_depth, parent_relpath, " \
2328  "       repos_id, repos_path, revision, " \
2329  "       presence, depth, moved_here, moved_to, kind, " \
2330  "       changed_revision, changed_date, changed_author, " \
2331  "       checksum, properties, translated_size, last_mod_time, " \
2332  "       dav_cache, symlink_target, file_external ) " \
2333  "SELECT wc_id, local_relpath, 2 , parent_relpath, " \
2334  "       copyfrom_repos_id, copyfrom_repos_path, copyfrom_revnum, " \
2335  "       presence, depth, NULL , NULL , kind, " \
2336  "       changed_rev, changed_date, changed_author, " \
2337  "       checksum, properties, translated_size, last_mod_time, " \
2338  "       NULL , symlink_target, NULL " \
2339  "FROM WORKING_NODE; " \
2340  "DROP TABLE BASE_NODE; " \
2341  "DROP TABLE WORKING_NODE; " \
2342  "PRAGMA user_version = 20; " \
2343  ""
2344
2345#define STMT_UPGRADE_TO_21 210
2346#define STMT_210_INFO {"STMT_UPGRADE_TO_21", NULL}
2347#define STMT_210 \
2348  "PRAGMA user_version = 21; " \
2349  ""
2350
2351#define STMT_UPGRADE_21_SELECT_OLD_TREE_CONFLICT 211
2352#define STMT_211_INFO {"STMT_UPGRADE_21_SELECT_OLD_TREE_CONFLICT", NULL}
2353#define STMT_211 \
2354  "SELECT wc_id, local_relpath, tree_conflict_data " \
2355  "FROM actual_node " \
2356  "WHERE tree_conflict_data IS NOT NULL " \
2357  ""
2358
2359#define STMT_UPGRADE_21_ERASE_OLD_CONFLICTS 212
2360#define STMT_212_INFO {"STMT_UPGRADE_21_ERASE_OLD_CONFLICTS", NULL}
2361#define STMT_212 \
2362  "UPDATE actual_node SET tree_conflict_data = NULL " \
2363  ""
2364
2365#define STMT_UPGRADE_TO_22 213
2366#define STMT_213_INFO {"STMT_UPGRADE_TO_22", NULL}
2367#define STMT_213 \
2368  "UPDATE actual_node SET tree_conflict_data = conflict_data; " \
2369  "UPDATE actual_node SET conflict_data = NULL; " \
2370  "PRAGMA user_version = 22; " \
2371  ""
2372
2373#define STMT_UPGRADE_TO_23 214
2374#define STMT_214_INFO {"STMT_UPGRADE_TO_23", NULL}
2375#define STMT_214 \
2376  "PRAGMA user_version = 23; " \
2377  ""
2378
2379#define STMT_UPGRADE_23_HAS_WORKING_NODES 215
2380#define STMT_215_INFO {"STMT_UPGRADE_23_HAS_WORKING_NODES", NULL}
2381#define STMT_215 \
2382  "SELECT 1 FROM nodes WHERE op_depth > 0 " \
2383  "LIMIT 1 " \
2384  ""
2385
2386#define STMT_UPGRADE_TO_24 216
2387#define STMT_216_INFO {"STMT_UPGRADE_TO_24", NULL}
2388#define STMT_216 \
2389  "UPDATE pristine SET refcount = " \
2390  "  (SELECT COUNT(*) FROM nodes " \
2391  "   WHERE checksum = pristine.checksum ); " \
2392  "PRAGMA user_version = 24; " \
2393  ""
2394
2395#define STMT_UPGRADE_TO_25 217
2396#define STMT_217_INFO {"STMT_UPGRADE_TO_25", NULL}
2397#define STMT_217 \
2398  "DROP VIEW IF EXISTS NODES_CURRENT; " \
2399  "CREATE VIEW NODES_CURRENT AS " \
2400  "  SELECT * FROM nodes " \
2401  "    JOIN (SELECT wc_id, local_relpath, MAX(op_depth) AS op_depth FROM nodes " \
2402  "          GROUP BY wc_id, local_relpath) AS filter " \
2403  "    ON nodes.wc_id = filter.wc_id " \
2404  "      AND nodes.local_relpath = filter.local_relpath " \
2405  "      AND nodes.op_depth = filter.op_depth; " \
2406  "PRAGMA user_version = 25; " \
2407  ""
2408
2409#define STMT_UPGRADE_TO_26 218
2410#define STMT_218_INFO {"STMT_UPGRADE_TO_26", NULL}
2411#define STMT_218 \
2412  "DROP VIEW IF EXISTS NODES_BASE; " \
2413  "CREATE VIEW NODES_BASE AS " \
2414  "  SELECT * FROM nodes " \
2415  "  WHERE op_depth = 0; " \
2416  "PRAGMA user_version = 26; " \
2417  ""
2418
2419#define STMT_UPGRADE_TO_27 219
2420#define STMT_219_INFO {"STMT_UPGRADE_TO_27", NULL}
2421#define STMT_219 \
2422  "PRAGMA user_version = 27; " \
2423  ""
2424
2425#define STMT_UPGRADE_27_HAS_ACTUAL_NODES_CONFLICTS 220
2426#define STMT_220_INFO {"STMT_UPGRADE_27_HAS_ACTUAL_NODES_CONFLICTS", NULL}
2427#define STMT_220 \
2428  "SELECT 1 FROM actual_node " \
2429  "WHERE NOT ((prop_reject IS NULL) AND (conflict_old IS NULL) " \
2430  "           AND (conflict_new IS NULL) AND (conflict_working IS NULL) " \
2431  "           AND (tree_conflict_data IS NULL)) " \
2432  "LIMIT 1 " \
2433  ""
2434
2435#define STMT_UPGRADE_TO_28 221
2436#define STMT_221_INFO {"STMT_UPGRADE_TO_28", NULL}
2437#define STMT_221 \
2438  "UPDATE NODES SET checksum = (SELECT checksum FROM pristine " \
2439  "                             WHERE md5_checksum = nodes.checksum) " \
2440  "WHERE EXISTS (SELECT 1 FROM pristine WHERE md5_checksum = nodes.checksum); " \
2441  "PRAGMA user_version = 28; " \
2442  ""
2443
2444#define STMT_UPGRADE_TO_29 222
2445#define STMT_222_INFO {"STMT_UPGRADE_TO_29", NULL}
2446#define STMT_222 \
2447  "DROP TRIGGER IF EXISTS nodes_update_checksum_trigger; " \
2448  "DROP TRIGGER IF EXISTS nodes_insert_trigger; " \
2449  "DROP TRIGGER IF EXISTS nodes_delete_trigger; " \
2450  "CREATE TRIGGER nodes_update_checksum_trigger " \
2451  "AFTER UPDATE OF checksum ON nodes " \
2452  "WHEN NEW.checksum IS NOT OLD.checksum " \
2453  "BEGIN " \
2454  "  UPDATE pristine SET refcount = refcount + 1 " \
2455  "  WHERE checksum = NEW.checksum; " \
2456  "  UPDATE pristine SET refcount = refcount - 1 " \
2457  "  WHERE checksum = OLD.checksum; " \
2458  "END; " \
2459  "CREATE TRIGGER nodes_insert_trigger " \
2460  "AFTER INSERT ON nodes " \
2461  "WHEN NEW.checksum IS NOT NULL " \
2462  "BEGIN " \
2463  "  UPDATE pristine SET refcount = refcount + 1 " \
2464  "  WHERE checksum = NEW.checksum; " \
2465  "END; " \
2466  "CREATE TRIGGER nodes_delete_trigger " \
2467  "AFTER DELETE ON nodes " \
2468  "WHEN OLD.checksum IS NOT NULL " \
2469  "BEGIN " \
2470  "  UPDATE pristine SET refcount = refcount - 1 " \
2471  "  WHERE checksum = OLD.checksum; " \
2472  "END; " \
2473  "PRAGMA user_version = 29; " \
2474  ""
2475
2476#define STMT_UPGRADE_TO_30 223
2477#define STMT_223_INFO {"STMT_UPGRADE_TO_30", NULL}
2478#define STMT_223 \
2479  "CREATE UNIQUE INDEX IF NOT EXISTS I_NODES_MOVED " \
2480  "ON NODES (wc_id, moved_to, op_depth); " \
2481  "CREATE INDEX IF NOT EXISTS I_PRISTINE_MD5 ON PRISTINE (md5_checksum); " \
2482  "UPDATE nodes SET presence = \"server-excluded\" WHERE presence = \"absent\"; " \
2483  "UPDATE nodes SET file_external=1 WHERE file_external IS NOT NULL; " \
2484  ""
2485
2486#define STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE 224
2487#define STMT_224_INFO {"STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE", NULL}
2488#define STMT_224 \
2489  "SELECT wc_id, local_relpath, " \
2490  "  conflict_old, conflict_working, conflict_new, prop_reject, tree_conflict_data " \
2491  "FROM actual_node " \
2492  "WHERE conflict_old IS NOT NULL " \
2493  "   OR conflict_working IS NOT NULL " \
2494  "   OR conflict_new IS NOT NULL " \
2495  "   OR prop_reject IS NOT NULL " \
2496  "   OR tree_conflict_data IS NOT NULL " \
2497  "ORDER by wc_id, local_relpath " \
2498  ""
2499
2500#define STMT_UPGRADE_30_SET_CONFLICT 225
2501#define STMT_225_INFO {"STMT_UPGRADE_30_SET_CONFLICT", NULL}
2502#define STMT_225 \
2503  "UPDATE actual_node SET conflict_data = ?3, conflict_old = NULL, " \
2504  "  conflict_working = NULL, conflict_new = NULL, prop_reject = NULL, " \
2505  "  tree_conflict_data = NULL " \
2506  "WHERE wc_id = ?1 and local_relpath = ?2 " \
2507  ""
2508
2509#define STMT_UPGRADE_TO_31_ALTER_TABLE 226
2510#define STMT_226_INFO {"STMT_UPGRADE_TO_31_ALTER_TABLE", NULL}
2511#define STMT_226 \
2512  "ALTER TABLE NODES ADD COLUMN inherited_props BLOB; " \
2513  ""
2514
2515#define STMT_UPGRADE_TO_31_FINALIZE 227
2516#define STMT_227_INFO {"STMT_UPGRADE_TO_31_FINALIZE", NULL}
2517#define STMT_227 \
2518  "DROP INDEX IF EXISTS I_ACTUAL_CHANGELIST; " \
2519  "DROP INDEX IF EXISTS I_EXTERNALS_PARENT; " \
2520  "DROP INDEX I_NODES_PARENT; " \
2521  "CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, " \
2522  "                                             local_relpath, op_depth); " \
2523  "DROP INDEX I_ACTUAL_PARENT; " \
2524  "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \
2525  "                                                    local_relpath); " \
2526  "PRAGMA user_version = 31; " \
2527  ""
2528
2529#define STMT_UPGRADE_31_SELECT_WCROOT_NODES 228
2530#define STMT_228_INFO {"STMT_UPGRADE_31_SELECT_WCROOT_NODES", NULL}
2531#define STMT_228 \
2532  "SELECT l.wc_id, l.local_relpath FROM nodes as l " \
2533  "LEFT OUTER JOIN nodes as r " \
2534  "ON l.wc_id = r.wc_id " \
2535  "   AND r.local_relpath = l.parent_relpath " \
2536  "   AND r.op_depth = 0 " \
2537  "WHERE l.op_depth = 0 " \
2538  "  AND l.repos_path != '' " \
2539  "  AND ((l.repos_id IS NOT r.repos_id) " \
2540  "       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))) " \
2541  ""
2542
2543#define STMT_UPGRADE_TO_32 229
2544#define STMT_229_INFO {"STMT_UPGRADE_TO_32", NULL}
2545#define STMT_229 \
2546  "DROP INDEX IF EXISTS I_ACTUAL_CHANGELIST; " \
2547  "DROP INDEX IF EXISTS I_EXTERNALS_PARENT; " \
2548  "CREATE INDEX I_EXTERNALS_PARENT ON EXTERNALS (wc_id, parent_relpath); " \
2549  "DROP INDEX I_NODES_PARENT; " \
2550  "CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, " \
2551  "                                             local_relpath, op_depth); " \
2552  "DROP INDEX I_ACTUAL_PARENT; " \
2553  "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \
2554  "                                                    local_relpath); " \
2555  "-- format: YYY " \
2556  ""
2557
2558#define WC_QUERIES_SQL_99 \
2559  "CREATE TABLE ACTUAL_NODE_BACKUP ( " \
2560  "  wc_id  INTEGER NOT NULL, " \
2561  "  local_relpath  TEXT NOT NULL, " \
2562  "  parent_relpath  TEXT, " \
2563  "  properties  BLOB, " \
2564  "  conflict_old  TEXT, " \
2565  "  conflict_new  TEXT, " \
2566  "  conflict_working  TEXT, " \
2567  "  prop_reject  TEXT, " \
2568  "  changelist  TEXT, " \
2569  "  text_mod  TEXT " \
2570  "  ); " \
2571  "INSERT INTO ACTUAL_NODE_BACKUP SELECT " \
2572  "  wc_id, local_relpath, parent_relpath, properties, conflict_old, " \
2573  "  conflict_new, conflict_working, prop_reject, changelist, text_mod " \
2574  "FROM ACTUAL_NODE; " \
2575  "DROP TABLE ACTUAL_NODE; " \
2576  "CREATE TABLE ACTUAL_NODE ( " \
2577  "  wc_id  INTEGER NOT NULL REFERENCES WCROOT (id), " \
2578  "  local_relpath  TEXT NOT NULL, " \
2579  "  parent_relpath  TEXT, " \
2580  "  properties  BLOB, " \
2581  "  conflict_old  TEXT, " \
2582  "  conflict_new  TEXT, " \
2583  "  conflict_working  TEXT, " \
2584  "  prop_reject  TEXT, " \
2585  "  changelist  TEXT, " \
2586  "  text_mod  TEXT, " \
2587  "  PRIMARY KEY (wc_id, local_relpath) " \
2588  "  ); " \
2589  "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \
2590  "                                                    local_relpath); " \
2591  "INSERT INTO ACTUAL_NODE SELECT " \
2592  "  wc_id, local_relpath, parent_relpath, properties, conflict_old, " \
2593  "  conflict_new, conflict_working, prop_reject, changelist, text_mod " \
2594  "FROM ACTUAL_NODE_BACKUP; " \
2595  "DROP TABLE ACTUAL_NODE_BACKUP; " \
2596  ""
2597
2598#define STMT_VERIFICATION_TRIGGERS 230
2599#define STMT_230_INFO {"STMT_VERIFICATION_TRIGGERS", NULL}
2600#define STMT_230 \
2601  "CREATE TEMPORARY TRIGGER no_repository_updates BEFORE UPDATE ON repository " \
2602  "BEGIN " \
2603  "  SELECT RAISE(FAIL, 'Updates to REPOSITORY are not allowed.'); " \
2604  "END; " \
2605  "CREATE TEMPORARY TRIGGER validation_01 BEFORE INSERT ON nodes " \
2606  "WHEN NOT ((new.local_relpath = '' AND new.parent_relpath IS NULL) " \
2607  "          OR (relpath_depth(new.local_relpath) " \
2608  "              = relpath_depth(new.parent_relpath) + 1)) " \
2609  "BEGIN " \
2610  "  SELECT RAISE(FAIL, 'WC DB validity check 01 failed'); " \
2611  "END; " \
2612  "CREATE TEMPORARY TRIGGER validation_02 BEFORE INSERT ON nodes " \
2613  "WHEN NOT new.op_depth <= relpath_depth(new.local_relpath) " \
2614  "BEGIN " \
2615  "  SELECT RAISE(FAIL, 'WC DB validity check 02 failed'); " \
2616  "END; " \
2617  "CREATE TEMPORARY TRIGGER validation_03 BEFORE INSERT ON nodes " \
2618  "WHEN NOT ( " \
2619  "    (new.op_depth = relpath_depth(new.local_relpath)) " \
2620  "    OR " \
2621  "    (EXISTS (SELECT 1 FROM nodes " \
2622  "              WHERE wc_id = new.wc_id AND op_depth = new.op_depth " \
2623  "                AND local_relpath = new.parent_relpath)) " \
2624  "  ) " \
2625  " AND NOT (new.file_external IS NOT NULL AND new.op_depth = 0) " \
2626  "BEGIN " \
2627  "  SELECT RAISE(FAIL, 'WC DB validity check 03 failed'); " \
2628  "END; " \
2629  "CREATE TEMPORARY TRIGGER validation_04 BEFORE INSERT ON actual_node " \
2630  "WHEN NOT (new.local_relpath = '' " \
2631  "          OR EXISTS (SELECT 1 FROM nodes " \
2632  "                       WHERE wc_id = new.wc_id " \
2633  "                         AND local_relpath = new.parent_relpath)) " \
2634  "BEGIN " \
2635  "  SELECT RAISE(FAIL, 'WC DB validity check 04 failed'); " \
2636  "END; " \
2637  ""
2638
2639#define WC_QUERIES_SQL_DECLARE_STATEMENTS(varname) \
2640  static const char * const varname[] = { \
2641    STMT_0, \
2642    STMT_1, \
2643    STMT_2, \
2644    STMT_3, \
2645    STMT_4, \
2646    STMT_5, \
2647    STMT_6, \
2648    STMT_7, \
2649    STMT_8, \
2650    STMT_9, \
2651    STMT_10, \
2652    STMT_11, \
2653    STMT_12, \
2654    STMT_13, \
2655    STMT_14, \
2656    STMT_15, \
2657    STMT_16, \
2658    STMT_17, \
2659    STMT_18, \
2660    STMT_19, \
2661    STMT_20, \
2662    STMT_21, \
2663    STMT_22, \
2664    STMT_23, \
2665    STMT_24, \
2666    STMT_25, \
2667    STMT_26, \
2668    STMT_27, \
2669    STMT_28, \
2670    STMT_29, \
2671    STMT_30, \
2672    STMT_31, \
2673    STMT_32, \
2674    STMT_33, \
2675    STMT_34, \
2676    STMT_35, \
2677    STMT_36, \
2678    STMT_37, \
2679    STMT_38, \
2680    STMT_39, \
2681    STMT_40, \
2682    STMT_41, \
2683    STMT_42, \
2684    STMT_43, \
2685    STMT_44, \
2686    STMT_45, \
2687    STMT_46, \
2688    STMT_47, \
2689    STMT_48, \
2690    STMT_49, \
2691    STMT_50, \
2692    STMT_51, \
2693    STMT_52, \
2694    STMT_53, \
2695    STMT_54, \
2696    STMT_55, \
2697    STMT_56, \
2698    STMT_57, \
2699    STMT_58, \
2700    STMT_59, \
2701    STMT_60, \
2702    STMT_61, \
2703    STMT_62, \
2704    STMT_63, \
2705    STMT_64, \
2706    STMT_65, \
2707    STMT_66, \
2708    STMT_67, \
2709    STMT_68, \
2710    STMT_69, \
2711    STMT_70, \
2712    STMT_71, \
2713    STMT_72, \
2714    STMT_73, \
2715    STMT_74, \
2716    STMT_75, \
2717    STMT_76, \
2718    STMT_77, \
2719    STMT_78, \
2720    STMT_79, \
2721    STMT_80, \
2722    STMT_81, \
2723    STMT_82, \
2724    STMT_83, \
2725    STMT_84, \
2726    STMT_85, \
2727    STMT_86, \
2728    STMT_87, \
2729    STMT_88, \
2730    STMT_89, \
2731    STMT_90, \
2732    STMT_91, \
2733    STMT_92, \
2734    STMT_93, \
2735    STMT_94, \
2736    STMT_95, \
2737    STMT_96, \
2738    STMT_97, \
2739    STMT_98, \
2740    STMT_99, \
2741    STMT_100, \
2742    STMT_101, \
2743    STMT_102, \
2744    STMT_103, \
2745    STMT_104, \
2746    STMT_105, \
2747    STMT_106, \
2748    STMT_107, \
2749    STMT_108, \
2750    STMT_109, \
2751    STMT_110, \
2752    STMT_111, \
2753    STMT_112, \
2754    STMT_113, \
2755    STMT_114, \
2756    STMT_115, \
2757    STMT_116, \
2758    STMT_117, \
2759    STMT_118, \
2760    STMT_119, \
2761    STMT_120, \
2762    STMT_121, \
2763    STMT_122, \
2764    STMT_123, \
2765    STMT_124, \
2766    STMT_125, \
2767    STMT_126, \
2768    STMT_127, \
2769    STMT_128, \
2770    STMT_129, \
2771    STMT_130, \
2772    STMT_131, \
2773    STMT_132, \
2774    STMT_133, \
2775    STMT_134, \
2776    STMT_135, \
2777    STMT_136, \
2778    STMT_137, \
2779    STMT_138, \
2780    STMT_139, \
2781    STMT_140, \
2782    STMT_141, \
2783    STMT_142, \
2784    STMT_143, \
2785    STMT_144, \
2786    STMT_145, \
2787    STMT_146, \
2788    STMT_147, \
2789    STMT_148, \
2790    STMT_149, \
2791    STMT_150, \
2792    STMT_151, \
2793    STMT_152, \
2794    STMT_153, \
2795    STMT_154, \
2796    STMT_155, \
2797    STMT_156, \
2798    STMT_157, \
2799    STMT_158, \
2800    STMT_159, \
2801    STMT_160, \
2802    STMT_161, \
2803    STMT_162, \
2804    STMT_163, \
2805    STMT_164, \
2806    STMT_165, \
2807    STMT_166, \
2808    STMT_167, \
2809    STMT_168, \
2810    STMT_169, \
2811    STMT_170, \
2812    STMT_171, \
2813    STMT_172, \
2814    STMT_173, \
2815    STMT_174, \
2816    STMT_175, \
2817    STMT_176, \
2818    STMT_177, \
2819    STMT_178, \
2820    STMT_179, \
2821    STMT_180, \
2822    STMT_181, \
2823    STMT_182, \
2824    STMT_183, \
2825    STMT_184, \
2826    STMT_185, \
2827    STMT_186, \
2828    STMT_187, \
2829    STMT_188, \
2830    STMT_189, \
2831    STMT_190, \
2832    STMT_191, \
2833    STMT_192, \
2834    STMT_193, \
2835    STMT_194, \
2836    STMT_195, \
2837    STMT_196, \
2838    STMT_197, \
2839    STMT_198, \
2840    STMT_199, \
2841    STMT_200, \
2842    STMT_201, \
2843    STMT_202, \
2844    STMT_203, \
2845    STMT_204, \
2846    STMT_205, \
2847    STMT_206, \
2848    STMT_207, \
2849    STMT_208, \
2850    STMT_209, \
2851    STMT_210, \
2852    STMT_211, \
2853    STMT_212, \
2854    STMT_213, \
2855    STMT_214, \
2856    STMT_215, \
2857    STMT_216, \
2858    STMT_217, \
2859    STMT_218, \
2860    STMT_219, \
2861    STMT_220, \
2862    STMT_221, \
2863    STMT_222, \
2864    STMT_223, \
2865    STMT_224, \
2866    STMT_225, \
2867    STMT_226, \
2868    STMT_227, \
2869    STMT_228, \
2870    STMT_229, \
2871    STMT_230, \
2872    NULL \
2873  }
2874
2875#define WC_QUERIES_SQL_DECLARE_STATEMENT_INFO(varname) \
2876  static const char * const varname[][2] = { \
2877    STMT_0_INFO, \
2878    STMT_1_INFO, \
2879    STMT_2_INFO, \
2880    STMT_3_INFO, \
2881    STMT_4_INFO, \
2882    STMT_5_INFO, \
2883    STMT_6_INFO, \
2884    STMT_7_INFO, \
2885    STMT_8_INFO, \
2886    STMT_9_INFO, \
2887    STMT_10_INFO, \
2888    STMT_11_INFO, \
2889    STMT_12_INFO, \
2890    STMT_13_INFO, \
2891    STMT_14_INFO, \
2892    STMT_15_INFO, \
2893    STMT_16_INFO, \
2894    STMT_17_INFO, \
2895    STMT_18_INFO, \
2896    STMT_19_INFO, \
2897    STMT_20_INFO, \
2898    STMT_21_INFO, \
2899    STMT_22_INFO, \
2900    STMT_23_INFO, \
2901    STMT_24_INFO, \
2902    STMT_25_INFO, \
2903    STMT_26_INFO, \
2904    STMT_27_INFO, \
2905    STMT_28_INFO, \
2906    STMT_29_INFO, \
2907    STMT_30_INFO, \
2908    STMT_31_INFO, \
2909    STMT_32_INFO, \
2910    STMT_33_INFO, \
2911    STMT_34_INFO, \
2912    STMT_35_INFO, \
2913    STMT_36_INFO, \
2914    STMT_37_INFO, \
2915    STMT_38_INFO, \
2916    STMT_39_INFO, \
2917    STMT_40_INFO, \
2918    STMT_41_INFO, \
2919    STMT_42_INFO, \
2920    STMT_43_INFO, \
2921    STMT_44_INFO, \
2922    STMT_45_INFO, \
2923    STMT_46_INFO, \
2924    STMT_47_INFO, \
2925    STMT_48_INFO, \
2926    STMT_49_INFO, \
2927    STMT_50_INFO, \
2928    STMT_51_INFO, \
2929    STMT_52_INFO, \
2930    STMT_53_INFO, \
2931    STMT_54_INFO, \
2932    STMT_55_INFO, \
2933    STMT_56_INFO, \
2934    STMT_57_INFO, \
2935    STMT_58_INFO, \
2936    STMT_59_INFO, \
2937    STMT_60_INFO, \
2938    STMT_61_INFO, \
2939    STMT_62_INFO, \
2940    STMT_63_INFO, \
2941    STMT_64_INFO, \
2942    STMT_65_INFO, \
2943    STMT_66_INFO, \
2944    STMT_67_INFO, \
2945    STMT_68_INFO, \
2946    STMT_69_INFO, \
2947    STMT_70_INFO, \
2948    STMT_71_INFO, \
2949    STMT_72_INFO, \
2950    STMT_73_INFO, \
2951    STMT_74_INFO, \
2952    STMT_75_INFO, \
2953    STMT_76_INFO, \
2954    STMT_77_INFO, \
2955    STMT_78_INFO, \
2956    STMT_79_INFO, \
2957    STMT_80_INFO, \
2958    STMT_81_INFO, \
2959    STMT_82_INFO, \
2960    STMT_83_INFO, \
2961    STMT_84_INFO, \
2962    STMT_85_INFO, \
2963    STMT_86_INFO, \
2964    STMT_87_INFO, \
2965    STMT_88_INFO, \
2966    STMT_89_INFO, \
2967    STMT_90_INFO, \
2968    STMT_91_INFO, \
2969    STMT_92_INFO, \
2970    STMT_93_INFO, \
2971    STMT_94_INFO, \
2972    STMT_95_INFO, \
2973    STMT_96_INFO, \
2974    STMT_97_INFO, \
2975    STMT_98_INFO, \
2976    STMT_99_INFO, \
2977    STMT_100_INFO, \
2978    STMT_101_INFO, \
2979    STMT_102_INFO, \
2980    STMT_103_INFO, \
2981    STMT_104_INFO, \
2982    STMT_105_INFO, \
2983    STMT_106_INFO, \
2984    STMT_107_INFO, \
2985    STMT_108_INFO, \
2986    STMT_109_INFO, \
2987    STMT_110_INFO, \
2988    STMT_111_INFO, \
2989    STMT_112_INFO, \
2990    STMT_113_INFO, \
2991    STMT_114_INFO, \
2992    STMT_115_INFO, \
2993    STMT_116_INFO, \
2994    STMT_117_INFO, \
2995    STMT_118_INFO, \
2996    STMT_119_INFO, \
2997    STMT_120_INFO, \
2998    STMT_121_INFO, \
2999    STMT_122_INFO, \
3000    STMT_123_INFO, \
3001    STMT_124_INFO, \
3002    STMT_125_INFO, \
3003    STMT_126_INFO, \
3004    STMT_127_INFO, \
3005    STMT_128_INFO, \
3006    STMT_129_INFO, \
3007    STMT_130_INFO, \
3008    STMT_131_INFO, \
3009    STMT_132_INFO, \
3010    STMT_133_INFO, \
3011    STMT_134_INFO, \
3012    STMT_135_INFO, \
3013    STMT_136_INFO, \
3014    STMT_137_INFO, \
3015    STMT_138_INFO, \
3016    STMT_139_INFO, \
3017    STMT_140_INFO, \
3018    STMT_141_INFO, \
3019    STMT_142_INFO, \
3020    STMT_143_INFO, \
3021    STMT_144_INFO, \
3022    STMT_145_INFO, \
3023    STMT_146_INFO, \
3024    STMT_147_INFO, \
3025    STMT_148_INFO, \
3026    STMT_149_INFO, \
3027    STMT_150_INFO, \
3028    STMT_151_INFO, \
3029    STMT_152_INFO, \
3030    STMT_153_INFO, \
3031    STMT_154_INFO, \
3032    STMT_155_INFO, \
3033    STMT_156_INFO, \
3034    STMT_157_INFO, \
3035    STMT_158_INFO, \
3036    STMT_159_INFO, \
3037    STMT_160_INFO, \
3038    STMT_161_INFO, \
3039    STMT_162_INFO, \
3040    STMT_163_INFO, \
3041    STMT_164_INFO, \
3042    STMT_165_INFO, \
3043    STMT_166_INFO, \
3044    STMT_167_INFO, \
3045    STMT_168_INFO, \
3046    STMT_169_INFO, \
3047    STMT_170_INFO, \
3048    STMT_171_INFO, \
3049    STMT_172_INFO, \
3050    STMT_173_INFO, \
3051    STMT_174_INFO, \
3052    STMT_175_INFO, \
3053    STMT_176_INFO, \
3054    STMT_177_INFO, \
3055    STMT_178_INFO, \
3056    STMT_179_INFO, \
3057    STMT_180_INFO, \
3058    STMT_181_INFO, \
3059    STMT_182_INFO, \
3060    STMT_183_INFO, \
3061    STMT_184_INFO, \
3062    STMT_185_INFO, \
3063    STMT_186_INFO, \
3064    STMT_187_INFO, \
3065    STMT_188_INFO, \
3066    STMT_189_INFO, \
3067    STMT_190_INFO, \
3068    STMT_191_INFO, \
3069    STMT_192_INFO, \
3070    STMT_193_INFO, \
3071    STMT_194_INFO, \
3072    STMT_195_INFO, \
3073    STMT_196_INFO, \
3074    STMT_197_INFO, \
3075    STMT_198_INFO, \
3076    STMT_199_INFO, \
3077    STMT_200_INFO, \
3078    STMT_201_INFO, \
3079    STMT_202_INFO, \
3080    STMT_203_INFO, \
3081    STMT_204_INFO, \
3082    STMT_205_INFO, \
3083    STMT_206_INFO, \
3084    STMT_207_INFO, \
3085    STMT_208_INFO, \
3086    STMT_209_INFO, \
3087    STMT_210_INFO, \
3088    STMT_211_INFO, \
3089    STMT_212_INFO, \
3090    STMT_213_INFO, \
3091    STMT_214_INFO, \
3092    STMT_215_INFO, \
3093    STMT_216_INFO, \
3094    STMT_217_INFO, \
3095    STMT_218_INFO, \
3096    STMT_219_INFO, \
3097    STMT_220_INFO, \
3098    STMT_221_INFO, \
3099    STMT_222_INFO, \
3100    STMT_223_INFO, \
3101    STMT_224_INFO, \
3102    STMT_225_INFO, \
3103    STMT_226_INFO, \
3104    STMT_227_INFO, \
3105    STMT_228_INFO, \
3106    STMT_229_INFO, \
3107    STMT_230_INFO, \
3108    {NULL, NULL} \
3109  }
3110