]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - contrib/subversion/subversion/libsvn_wc/wc-queries.h
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
[FreeBSD/stable/10.git] / contrib / subversion / subversion / libsvn_wc / wc-queries.h
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   }