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