diff options
Diffstat (limited to 'subversion/libsvn_wc/wc-queries.h')
-rw-r--r-- | subversion/libsvn_wc/wc-queries.h | 2750 |
1 files changed, 1888 insertions, 862 deletions
diff --git a/subversion/libsvn_wc/wc-queries.h b/subversion/libsvn_wc/wc-queries.h index 198f9be..e33af98 100644 --- a/subversion/libsvn_wc/wc-queries.h +++ b/subversion/libsvn_wc/wc-queries.h @@ -1,22 +1,26 @@ -/* This file is automatically generated from wc-queries.sql. +/* This file is automatically generated from wc-queries.sql and .dist_sandbox/subversion-1.8.13/subversion/libsvn_wc/token-map.h. * Do not edit this file -- edit the source and rerun gen-make.py */ #define STMT_SELECT_NODE_INFO 0 +#define STMT_0_INFO {"STMT_SELECT_NODE_INFO", NULL} #define STMT_0 \ "SELECT op_depth, repos_id, repos_path, presence, kind, revision, checksum, " \ " translated_size, changed_revision, changed_date, changed_author, depth, " \ - " symlink_target, last_mod_time, properties " \ + " symlink_target, last_mod_time, properties, moved_here, inherited_props, " \ + " moved_to " \ "FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "ORDER BY op_depth DESC " \ "" #define STMT_SELECT_NODE_INFO_WITH_LOCK 1 +#define STMT_1_INFO {"STMT_SELECT_NODE_INFO_WITH_LOCK", NULL} #define STMT_1 \ "SELECT op_depth, nodes.repos_id, nodes.repos_path, presence, kind, revision, " \ " checksum, translated_size, changed_revision, changed_date, changed_author, " \ - " depth, symlink_target, last_mod_time, properties, lock_token, lock_owner, " \ - " lock_comment, lock_date " \ + " depth, symlink_target, last_mod_time, properties, moved_here, " \ + " inherited_props, " \ + " lock_token, lock_owner, lock_comment, lock_date " \ "FROM nodes " \ "LEFT OUTER JOIN lock ON nodes.repos_id = lock.repos_id " \ " AND nodes.repos_path = lock.repos_relpath " \ @@ -25,19 +29,21 @@ "" #define STMT_SELECT_BASE_NODE 2 +#define STMT_2_INFO {"STMT_SELECT_BASE_NODE", NULL} #define STMT_2 \ "SELECT repos_id, repos_path, presence, kind, revision, checksum, " \ " translated_size, changed_revision, changed_date, changed_author, depth, " \ - " symlink_target, last_mod_time, properties, file_external IS NOT NULL " \ + " symlink_target, last_mod_time, properties, file_external " \ "FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" #define STMT_SELECT_BASE_NODE_WITH_LOCK 3 +#define STMT_3_INFO {"STMT_SELECT_BASE_NODE_WITH_LOCK", NULL} #define STMT_3 \ "SELECT nodes.repos_id, nodes.repos_path, presence, kind, revision, " \ " checksum, translated_size, changed_revision, changed_date, changed_author, " \ - " depth, symlink_target, last_mod_time, properties, file_external IS NOT NULL, " \ + " depth, symlink_target, last_mod_time, properties, file_external, " \ " lock_token, lock_owner, lock_comment, lock_date " \ "FROM nodes " \ "LEFT OUTER JOIN lock ON nodes.repos_id = lock.repos_id " \ @@ -46,9 +52,10 @@ "" #define STMT_SELECT_BASE_CHILDREN_INFO 4 +#define STMT_4_INFO {"STMT_SELECT_BASE_CHILDREN_INFO", NULL} #define STMT_4 \ "SELECT local_relpath, nodes.repos_id, nodes.repos_path, presence, kind, " \ - " revision, depth, file_external IS NOT NULL, " \ + " revision, depth, file_external, " \ " lock_token, lock_owner, lock_comment, lock_date " \ "FROM nodes " \ "LEFT OUTER JOIN lock ON nodes.repos_id = lock.repos_id " \ @@ -57,6 +64,7 @@ "" #define STMT_SELECT_WORKING_NODE 5 +#define STMT_5_INFO {"STMT_SELECT_WORKING_NODE", NULL} #define STMT_5 \ "SELECT op_depth, presence, kind, checksum, translated_size, " \ " changed_revision, changed_date, changed_author, depth, symlink_target, " \ @@ -69,6 +77,7 @@ "" #define STMT_SELECT_DEPTH_NODE 6 +#define STMT_6_INFO {"STMT_SELECT_DEPTH_NODE", NULL} #define STMT_6 \ "SELECT repos_id, repos_path, presence, kind, revision, checksum, " \ " translated_size, changed_revision, changed_date, changed_author, depth, " \ @@ -78,149 +87,329 @@ "" #define STMT_SELECT_LOWEST_WORKING_NODE 7 +#define STMT_7_INFO {"STMT_SELECT_LOWEST_WORKING_NODE", NULL} #define STMT_7 \ - "SELECT op_depth, presence " \ + "SELECT op_depth, presence, kind, moved_to " \ "FROM nodes " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > 0 " \ + "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > ?3 " \ "ORDER BY op_depth " \ "LIMIT 1 " \ "" -#define STMT_SELECT_ACTUAL_NODE 8 +#define STMT_SELECT_HIGHEST_WORKING_NODE 8 +#define STMT_8_INFO {"STMT_SELECT_HIGHEST_WORKING_NODE", NULL} #define STMT_8 \ - "SELECT prop_reject, changelist, conflict_old, conflict_new, " \ - "conflict_working, tree_conflict_data, properties " \ - "FROM actual_node " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 " \ + "SELECT op_depth " \ + "FROM nodes " \ + "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth < ?3 " \ + "ORDER BY op_depth DESC " \ + "LIMIT 1 " \ "" -#define STMT_SELECT_ACTUAL_TREE_CONFLICT 9 +#define STMT_SELECT_ACTUAL_NODE 9 +#define STMT_9_INFO {"STMT_SELECT_ACTUAL_NODE", NULL} #define STMT_9 \ - "SELECT tree_conflict_data " \ + "SELECT changelist, properties, conflict_data " \ "FROM actual_node " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 AND tree_conflict_data IS NOT NULL " \ + "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" -#define STMT_SELECT_ACTUAL_CHANGELIST 10 +#define STMT_SELECT_NODE_CHILDREN_INFO 10 +#define STMT_10_INFO {"STMT_SELECT_NODE_CHILDREN_INFO", NULL} #define STMT_10 \ - "SELECT changelist " \ - "FROM actual_node " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 AND changelist IS NOT NULL " \ - "" - -#define STMT_SELECT_NODE_CHILDREN_INFO 11 -#define STMT_11 \ "SELECT op_depth, nodes.repos_id, nodes.repos_path, presence, kind, revision, " \ " checksum, translated_size, changed_revision, changed_date, changed_author, " \ " depth, symlink_target, last_mod_time, properties, lock_token, lock_owner, " \ - " lock_comment, lock_date, local_relpath " \ + " lock_comment, lock_date, local_relpath, moved_here, moved_to, file_external " \ "FROM nodes " \ "LEFT OUTER JOIN lock ON nodes.repos_id = lock.repos_id " \ - " AND nodes.repos_path = lock.repos_relpath " \ + " AND nodes.repos_path = lock.repos_relpath AND op_depth = 0 " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 " \ "" -#define STMT_SELECT_NODE_CHILDREN_WALKER_INFO 12 -#define STMT_12 \ +#define STMT_SELECT_NODE_CHILDREN_WALKER_INFO 11 +#define STMT_11_INFO {"STMT_SELECT_NODE_CHILDREN_WALKER_INFO", NULL} +#define STMT_11 \ "SELECT local_relpath, op_depth, presence, kind " \ "FROM nodes_current " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 " \ "" -#define STMT_SELECT_ACTUAL_CHILDREN_INFO 13 -#define STMT_13 \ - "SELECT prop_reject, changelist, conflict_old, conflict_new, " \ - "conflict_working, tree_conflict_data, properties, local_relpath, " \ - "conflict_data " \ +#define STMT_SELECT_ACTUAL_CHILDREN_INFO 12 +#define STMT_12_INFO {"STMT_SELECT_ACTUAL_CHILDREN_INFO", NULL} +#define STMT_12 \ + "SELECT local_relpath, changelist, properties, conflict_data " \ "FROM actual_node " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 " \ "" -#define STMT_SELECT_REPOSITORY_BY_ID 14 -#define STMT_14 \ +#define STMT_SELECT_REPOSITORY_BY_ID 13 +#define STMT_13_INFO {"STMT_SELECT_REPOSITORY_BY_ID", NULL} +#define STMT_13 \ "SELECT root, uuid FROM repository WHERE id = ?1 " \ "" -#define STMT_SELECT_WCROOT_NULL 15 -#define STMT_15 \ +#define STMT_SELECT_WCROOT_NULL 14 +#define STMT_14_INFO {"STMT_SELECT_WCROOT_NULL", NULL} +#define STMT_14 \ "SELECT id FROM wcroot WHERE local_abspath IS NULL " \ "" -#define STMT_SELECT_REPOSITORY 16 -#define STMT_16 \ +#define STMT_SELECT_REPOSITORY 15 +#define STMT_15_INFO {"STMT_SELECT_REPOSITORY", NULL} +#define STMT_15 \ "SELECT id FROM repository WHERE root = ?1 " \ "" -#define STMT_INSERT_REPOSITORY 17 -#define STMT_17 \ +#define STMT_INSERT_REPOSITORY 16 +#define STMT_16_INFO {"STMT_INSERT_REPOSITORY", NULL} +#define STMT_16 \ "INSERT INTO repository (root, uuid) VALUES (?1, ?2) " \ "" -#define STMT_INSERT_NODE 18 -#define STMT_18 \ +#define STMT_INSERT_NODE 17 +#define STMT_17_INFO {"STMT_INSERT_NODE", NULL} +#define STMT_17 \ "INSERT OR REPLACE INTO nodes ( " \ " wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \ " revision, presence, depth, kind, changed_revision, changed_date, " \ " changed_author, checksum, properties, translated_size, last_mod_time, " \ - " dav_cache, symlink_target, file_external) " \ + " dav_cache, symlink_target, file_external, moved_to, moved_here, " \ + " inherited_props) " \ "VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, " \ - " ?15, ?16, ?17, ?18, ?19, ?20) " \ + " ?15, ?16, ?17, ?18, ?19, ?20, ?21, ?22, ?23) " \ + "" + +#define STMT_SELECT_BASE_PRESENT 18 +#define STMT_18_INFO {"STMT_SELECT_BASE_PRESENT", NULL} +#define STMT_18 \ + "SELECT local_relpath, kind FROM nodes n " \ + "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)) " \ + " AND op_depth = 0 " \ + " AND presence in ('normal', 'incomplete') " \ + " AND NOT EXISTS(SELECT 1 FROM NODES w " \ + " WHERE w.wc_id = ?1 AND w.local_relpath = n.local_relpath " \ + " AND op_depth > 0) " \ + "ORDER BY local_relpath DESC " \ "" -#define STMT_SELECT_OP_DEPTH_CHILDREN 19 +#define STMT_SELECT_WORKING_PRESENT 19 +#define STMT_19_INFO {"STMT_SELECT_WORKING_PRESENT", NULL} #define STMT_19 \ - "SELECT local_relpath FROM nodes " \ - "WHERE wc_id = ?1 AND parent_relpath = ?2 AND op_depth = ?3 " \ - " AND (?3 != 0 OR file_external is NULL) " \ + "SELECT local_relpath, kind, checksum, translated_size, last_mod_time " \ + "FROM nodes n " \ + "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)) " \ + " AND presence in ('normal', 'incomplete') " \ + " AND op_depth = (SELECT MAX(op_depth) " \ + " FROM NODES w " \ + " WHERE w.wc_id = ?1 " \ + " AND w.local_relpath = n.local_relpath) " \ + "ORDER BY local_relpath DESC " \ "" -#define STMT_SELECT_GE_OP_DEPTH_CHILDREN 20 +#define STMT_DELETE_NODE_RECURSIVE 20 +#define STMT_20_INFO {"STMT_DELETE_NODE_RECURSIVE", NULL} #define STMT_20 \ + "DELETE FROM NODES " \ + "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)) " \ + "" + +#define STMT_DELETE_NODE 21 +#define STMT_21_INFO {"STMT_DELETE_NODE", NULL} +#define STMT_21 \ + "DELETE " \ + "FROM NODES " \ + "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \ + "" + +#define STMT_DELETE_ACTUAL_FOR_BASE_RECURSIVE 22 +#define STMT_22_INFO {"STMT_DELETE_ACTUAL_FOR_BASE_RECURSIVE", NULL} +#define STMT_22 \ + "DELETE FROM actual_node " \ + "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)) " \ + " AND EXISTS(SELECT 1 FROM NODES b " \ + " WHERE b.wc_id = ?1 " \ + " AND b.local_relpath = actual_node.local_relpath " \ + " AND op_depth = 0) " \ + " AND NOT EXISTS(SELECT 1 FROM NODES w " \ + " WHERE w.wc_id = ?1 " \ + " AND w.local_relpath = actual_node.local_relpath " \ + " AND op_depth > 0 " \ + " AND presence in ('normal', 'incomplete', 'not-present')) " \ + "" + +#define STMT_DELETE_WORKING_BASE_DELETE 23 +#define STMT_23_INFO {"STMT_DELETE_WORKING_BASE_DELETE", NULL} +#define STMT_23 \ + "DELETE FROM nodes " \ + "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)) " \ + " AND presence = 'base-deleted' " \ + " AND op_depth > 0 " \ + " AND op_depth = (SELECT MIN(op_depth) FROM nodes n " \ + " WHERE n.wc_id = ?1 " \ + " AND n.local_relpath = nodes.local_relpath " \ + " AND op_depth > 0) " \ + "" + +#define STMT_DELETE_WORKING_RECURSIVE 24 +#define STMT_24_INFO {"STMT_DELETE_WORKING_RECURSIVE", NULL} +#define STMT_24 \ + "DELETE FROM nodes " \ + "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)) " \ + " AND op_depth > 0 " \ + "" + +#define STMT_DELETE_BASE_RECURSIVE 25 +#define STMT_25_INFO {"STMT_DELETE_BASE_RECURSIVE", NULL} +#define STMT_25 \ + "DELETE FROM nodes " \ + "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)) " \ + " AND op_depth = 0 " \ + "" + +#define STMT_DELETE_WORKING_OP_DEPTH 26 +#define STMT_26_INFO {"STMT_DELETE_WORKING_OP_DEPTH", NULL} +#define STMT_26 \ + "DELETE FROM nodes " \ + "WHERE wc_id = ?1 " \ + " 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))) " \ + " AND op_depth = ?3 " \ + "" + +#define STMT_DELETE_WORKING_OP_DEPTH_ABOVE 27 +#define STMT_27_INFO {"STMT_DELETE_WORKING_OP_DEPTH_ABOVE", NULL} +#define STMT_27 \ + "DELETE FROM nodes " \ + "WHERE wc_id = ?1 " \ + " 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))) " \ + " AND op_depth > ?3 " \ + "" + +#define STMT_SELECT_LOCAL_RELPATH_OP_DEPTH 28 +#define STMT_28_INFO {"STMT_SELECT_LOCAL_RELPATH_OP_DEPTH", NULL} +#define STMT_28 \ + "SELECT local_relpath " \ + "FROM nodes " \ + "WHERE wc_id = ?1 " \ + " 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))) " \ + " AND op_depth = ?3 " \ + "" + +#define STMT_SELECT_CHILDREN_OP_DEPTH 29 +#define STMT_29_INFO {"STMT_SELECT_CHILDREN_OP_DEPTH", NULL} +#define STMT_29 \ + "SELECT local_relpath, kind " \ + "FROM nodes " \ + "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)) " \ + " AND op_depth = ?3 " \ + "ORDER BY local_relpath DESC " \ + "" + +#define STMT_COPY_NODE_MOVE 30 +#define STMT_30_INFO {"STMT_COPY_NODE_MOVE", NULL} +#define STMT_30 \ + "INSERT OR REPLACE INTO nodes ( " \ + " wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \ + " revision, presence, depth, kind, changed_revision, changed_date, " \ + " changed_author, checksum, properties, translated_size, last_mod_time, " \ + " symlink_target, moved_here, moved_to ) " \ + "SELECT " \ + " wc_id, ?4 , ?5 , ?6 , " \ + " repos_id, " \ + " repos_path, revision, presence, depth, kind, changed_revision, " \ + " changed_date, changed_author, checksum, properties, translated_size, " \ + " last_mod_time, symlink_target, 1, " \ + " (SELECT dst.moved_to FROM nodes AS dst " \ + " WHERE dst.wc_id = ?1 " \ + " AND dst.local_relpath = ?4 " \ + " AND dst.op_depth = ?5) " \ + "FROM nodes " \ + "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \ + "" + +#define STMT_SELECT_OP_DEPTH_CHILDREN 31 +#define STMT_31_INFO {"STMT_SELECT_OP_DEPTH_CHILDREN", NULL} +#define STMT_31 \ + "SELECT local_relpath, kind FROM nodes " \ + "WHERE wc_id = ?1 " \ + " AND parent_relpath = ?2 " \ + " AND op_depth = ?3 " \ + " AND presence != 'base-deleted' " \ + " AND file_external is NULL " \ + "" + +#define STMT_SELECT_GE_OP_DEPTH_CHILDREN 32 +#define STMT_32_INFO {"STMT_SELECT_GE_OP_DEPTH_CHILDREN", NULL} +#define STMT_32 \ "SELECT 1 FROM nodes " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 " \ " AND (op_depth > ?3 OR (op_depth = ?3 AND presence != 'base-deleted')) " \ - "UNION " \ - "SELECT 1 FROM ACTUAL_NODE " \ + "UNION ALL " \ + "SELECT 1 FROM ACTUAL_NODE a " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 " \ + " AND NOT EXISTS (SELECT 1 FROM nodes n " \ + " WHERE wc_id = ?1 AND n.local_relpath = a.local_relpath) " \ "" -#define STMT_DELETE_SHADOWED_RECURSIVE 21 -#define STMT_21 \ +#define STMT_DELETE_SHADOWED_RECURSIVE 33 +#define STMT_33_INFO {"STMT_DELETE_SHADOWED_RECURSIVE", NULL} +#define STMT_33 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 " \ - " AND (local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND (op_depth < ?3 " \ " OR (op_depth = ?3 AND presence = 'base-deleted')) " \ "" -#define STMT_SELECT_NOT_PRESENT_DESCENDANTS 22 -#define STMT_22 \ +#define STMT_CLEAR_MOVED_TO_FROM_DEST 34 +#define STMT_34_INFO {"STMT_CLEAR_MOVED_TO_FROM_DEST", NULL} +#define STMT_34 \ + "UPDATE NODES SET moved_to = NULL " \ + "WHERE wc_id = ?1 " \ + " AND moved_to = ?2 " \ + "" + +#define STMT_SELECT_NOT_PRESENT_DESCENDANTS 35 +#define STMT_35_INFO {"STMT_SELECT_NOT_PRESENT_DESCENDANTS", NULL} +#define STMT_35 \ "SELECT local_relpath FROM nodes " \ "WHERE wc_id = ?1 AND op_depth = ?3 " \ - " AND (parent_relpath = ?2 " \ - " OR ((parent_relpath) > (?2) || '/' AND (parent_relpath) < (?2) || '0') ) " \ - " AND presence == 'not-present' " \ + " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ + " AND presence = 'not-present' " \ "" -#define STMT_COMMIT_DESCENDANT_TO_BASE 23 -#define STMT_23 \ - "UPDATE NODES SET op_depth = 0, repos_id = ?4, repos_path = ?5, revision = ?6, " \ - " moved_here = NULL, moved_to = NULL, dav_cache = NULL, " \ - " presence = CASE presence WHEN 'normal' THEN 'normal' " \ - " WHEN 'excluded' THEN 'excluded' " \ - " ELSE 'not-present' END " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 and op_depth = ?3 " \ +#define STMT_COMMIT_DESCENDANTS_TO_BASE 36 +#define STMT_36_INFO {"STMT_COMMIT_DESCENDANTS_TO_BASE", NULL} +#define STMT_36 \ + "UPDATE NODES SET op_depth = 0, " \ + " repos_id = ?4, " \ + " repos_path = ?5 || SUBSTR(local_relpath, LENGTH(?2)+1), " \ + " revision = ?6, " \ + " dav_cache = NULL, " \ + " moved_here = NULL, " \ + " presence = CASE presence " \ + " WHEN 'normal' THEN 'normal' " \ + " WHEN 'excluded' THEN 'excluded' " \ + " ELSE 'not-present' " \ + " END " \ + "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)) " \ + " AND op_depth = ?3 " \ "" -#define STMT_SELECT_NODE_CHILDREN 24 -#define STMT_24 \ +#define STMT_SELECT_NODE_CHILDREN 37 +#define STMT_37_INFO {"STMT_SELECT_NODE_CHILDREN", NULL} +#define STMT_37 \ "SELECT local_relpath FROM nodes " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 " \ "" -#define STMT_SELECT_WORKING_CHILDREN 25 -#define STMT_25 \ +#define STMT_SELECT_WORKING_CHILDREN 38 +#define STMT_38_INFO {"STMT_SELECT_WORKING_CHILDREN", NULL} +#define STMT_38 \ "SELECT local_relpath FROM nodes " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 " \ " AND (op_depth > (SELECT MAX(op_depth) FROM nodes " \ @@ -231,475 +420,532 @@ " AND presence != 'base-deleted')) " \ "" -#define STMT_SELECT_BASE_PROPS 26 -#define STMT_26 \ - "SELECT properties FROM nodes " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ - "" - -#define STMT_SELECT_NODE_PROPS 27 -#define STMT_27 \ +#define STMT_SELECT_NODE_PROPS 39 +#define STMT_39_INFO {"STMT_SELECT_NODE_PROPS", NULL} +#define STMT_39 \ "SELECT properties, presence FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "ORDER BY op_depth DESC " \ "" -#define STMT_SELECT_ACTUAL_PROPS 28 -#define STMT_28 \ +#define STMT_SELECT_ACTUAL_PROPS 40 +#define STMT_40_INFO {"STMT_SELECT_ACTUAL_PROPS", NULL} +#define STMT_40 \ "SELECT properties FROM actual_node " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" -#define STMT_UPDATE_NODE_BASE_PROPS 29 -#define STMT_29 \ - "UPDATE nodes SET properties = ?3 " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ - "" - -#define STMT_UPDATE_NODE_WORKING_PROPS 30 -#define STMT_30 \ - "UPDATE nodes SET properties = ?3 " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 " \ - " AND op_depth = " \ - " (SELECT MAX(op_depth) FROM nodes " \ - " WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > 0) " \ - "" - -#define STMT_UPDATE_ACTUAL_PROPS 31 -#define STMT_31 \ +#define STMT_UPDATE_ACTUAL_PROPS 41 +#define STMT_41_INFO {"STMT_UPDATE_ACTUAL_PROPS", NULL} +#define STMT_41 \ "UPDATE actual_node SET properties = ?3 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" -#define STMT_INSERT_ACTUAL_PROPS 32 -#define STMT_32 \ +#define STMT_INSERT_ACTUAL_PROPS 42 +#define STMT_42_INFO {"STMT_INSERT_ACTUAL_PROPS", NULL} +#define STMT_42 \ "INSERT INTO actual_node (wc_id, local_relpath, parent_relpath, properties) " \ "VALUES (?1, ?2, ?3, ?4) " \ "" -#define STMT_INSERT_LOCK 33 -#define STMT_33 \ +#define STMT_INSERT_LOCK 43 +#define STMT_43_INFO {"STMT_INSERT_LOCK", NULL} +#define STMT_43 \ "INSERT OR REPLACE INTO lock " \ "(repos_id, repos_relpath, lock_token, lock_owner, lock_comment, " \ " lock_date) " \ "VALUES (?1, ?2, ?3, ?4, ?5, ?6) " \ "" -#define STMT_SELECT_BASE_NODE_LOCK_TOKENS_RECURSIVE 34 -#define STMT_34 \ +#define STMT_SELECT_BASE_NODE_LOCK_TOKENS_RECURSIVE 44 +#define STMT_44_INFO {"STMT_SELECT_BASE_NODE_LOCK_TOKENS_RECURSIVE", NULL} +#define STMT_44 \ "SELECT nodes.repos_id, nodes.repos_path, lock_token " \ "FROM nodes " \ "LEFT JOIN lock ON nodes.repos_id = lock.repos_id " \ " AND nodes.repos_path = lock.repos_relpath " \ "WHERE wc_id = ?1 AND op_depth = 0 " \ - " AND (?2 = '' " \ - " OR local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ "" -#define STMT_INSERT_WCROOT 35 -#define STMT_35 \ +#define STMT_INSERT_WCROOT 45 +#define STMT_45_INFO {"STMT_INSERT_WCROOT", NULL} +#define STMT_45 \ "INSERT INTO wcroot (local_abspath) " \ "VALUES (?1) " \ "" -#define STMT_UPDATE_BASE_NODE_DAV_CACHE 36 -#define STMT_36 \ +#define STMT_UPDATE_BASE_NODE_DAV_CACHE 46 +#define STMT_46_INFO {"STMT_UPDATE_BASE_NODE_DAV_CACHE", NULL} +#define STMT_46 \ "UPDATE nodes SET dav_cache = ?3 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" -#define STMT_SELECT_BASE_DAV_CACHE 37 -#define STMT_37 \ +#define STMT_SELECT_BASE_DAV_CACHE 47 +#define STMT_47_INFO {"STMT_SELECT_BASE_DAV_CACHE", NULL} +#define STMT_47 \ "SELECT dav_cache FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" -#define STMT_SELECT_DELETION_INFO 38 -#define STMT_38 \ - "SELECT nodes_base.presence, nodes_work.presence, nodes_work.moved_to, " \ - " nodes_work.op_depth " \ - "FROM nodes AS nodes_work " \ - "LEFT OUTER JOIN nodes nodes_base ON nodes_base.wc_id = nodes_work.wc_id " \ - " AND nodes_base.local_relpath = nodes_work.local_relpath " \ - " AND nodes_base.op_depth = 0 " \ - "WHERE nodes_work.wc_id = ?1 AND nodes_work.local_relpath = ?2 " \ - " AND nodes_work.op_depth = (SELECT MAX(op_depth) FROM nodes " \ - " WHERE wc_id = ?1 AND local_relpath = ?2 " \ - " AND op_depth > 0) " \ - "" - -#define STMT_DELETE_LOCK 39 -#define STMT_39 \ +#define STMT_SELECT_DELETION_INFO 48 +#define STMT_48_INFO {"STMT_SELECT_DELETION_INFO", NULL} +#define STMT_48 \ + "SELECT (SELECT b.presence FROM nodes AS b " \ + " WHERE b.wc_id = ?1 AND b.local_relpath = ?2 AND b.op_depth = 0), " \ + " work.presence, work.op_depth " \ + "FROM nodes_current AS work " \ + "WHERE work.wc_id = ?1 AND work.local_relpath = ?2 AND work.op_depth > 0 " \ + "LIMIT 1 " \ + "" + +#define STMT_SELECT_DELETION_INFO_SCAN 49 +#define STMT_49_INFO {"STMT_SELECT_DELETION_INFO_SCAN", NULL} +#define STMT_49 \ + "SELECT (SELECT b.presence FROM nodes AS b " \ + " WHERE b.wc_id = ?1 AND b.local_relpath = ?2 AND b.op_depth = 0), " \ + " work.presence, work.op_depth, moved.moved_to " \ + "FROM nodes_current AS work " \ + "LEFT OUTER JOIN nodes AS moved " \ + " ON moved.wc_id = work.wc_id " \ + " AND moved.local_relpath = work.local_relpath " \ + " AND moved.moved_to IS NOT NULL " \ + "WHERE work.wc_id = ?1 AND work.local_relpath = ?2 AND work.op_depth > 0 " \ + "LIMIT 1 " \ + "" + +#define STMT_SELECT_MOVED_TO_NODE 50 +#define STMT_50_INFO {"STMT_SELECT_MOVED_TO_NODE", NULL} +#define STMT_50 \ + "SELECT op_depth, moved_to " \ + "FROM nodes " \ + "WHERE wc_id = ?1 AND local_relpath = ?2 AND moved_to IS NOT NULL " \ + "ORDER BY op_depth DESC " \ + "" + +#define STMT_SELECT_OP_DEPTH_MOVED_TO 51 +#define STMT_51_INFO {"STMT_SELECT_OP_DEPTH_MOVED_TO", NULL} +#define STMT_51 \ + "SELECT op_depth, moved_to, repos_path, revision " \ + "FROM nodes " \ + "WHERE wc_id = ?1 AND local_relpath = ?2 " \ + " AND op_depth <= (SELECT MIN(op_depth) FROM nodes " \ + " WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > ?3) " \ + "ORDER BY op_depth DESC " \ + "" + +#define STMT_SELECT_MOVED_TO 52 +#define STMT_52_INFO {"STMT_SELECT_MOVED_TO", NULL} +#define STMT_52 \ + "SELECT moved_to " \ + "FROM nodes " \ + "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \ + "" + +#define STMT_SELECT_MOVED_HERE 53 +#define STMT_53_INFO {"STMT_SELECT_MOVED_HERE", NULL} +#define STMT_53 \ + "SELECT moved_here, presence, repos_path, revision " \ + "FROM nodes " \ + "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth >= ?3 " \ + "ORDER BY op_depth " \ + "" + +#define STMT_SELECT_MOVED_BACK 54 +#define STMT_54_INFO {"STMT_SELECT_MOVED_BACK", NULL} +#define STMT_54 \ + "SELECT u.local_relpath, " \ + " u.presence, u.repos_id, u.repos_path, u.revision, " \ + " l.presence, l.repos_id, l.repos_path, l.revision, " \ + " u.moved_here, u.moved_to " \ + "FROM nodes u " \ + "LEFT OUTER JOIN nodes l ON l.wc_id = ?1 " \ + " AND l.local_relpath = u.local_relpath " \ + " AND l.op_depth = ?3 " \ + "WHERE u.wc_id = ?1 " \ + " AND u.local_relpath = ?2 " \ + " AND u.op_depth = ?4 " \ + "UNION ALL " \ + "SELECT u.local_relpath, " \ + " u.presence, u.repos_id, u.repos_path, u.revision, " \ + " l.presence, l.repos_id, l.repos_path, l.revision, " \ + " u.moved_here, NULL " \ + "FROM nodes u " \ + "LEFT OUTER JOIN nodes l ON l.wc_id=?1 " \ + " AND l.local_relpath=u.local_relpath " \ + " AND l.op_depth=?3 " \ + "WHERE u.wc_id = ?1 " \ + " 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)) " \ + " AND u.op_depth = ?4 " \ + "" + +#define STMT_DELETE_MOVED_BACK 55 +#define STMT_55_INFO {"STMT_DELETE_MOVED_BACK", NULL} +#define STMT_55 \ + "DELETE FROM nodes " \ + "WHERE wc_id = ?1 " \ + " 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))) " \ + " AND op_depth = ?3 " \ + "" + +#define STMT_DELETE_LOCK 56 +#define STMT_56_INFO {"STMT_DELETE_LOCK", NULL} +#define STMT_56 \ "DELETE FROM lock " \ "WHERE repos_id = ?1 AND repos_relpath = ?2 " \ "" -#define STMT_CLEAR_BASE_NODE_RECURSIVE_DAV_CACHE 40 -#define STMT_40 \ +#define STMT_DELETE_LOCK_RECURSIVELY 57 +#define STMT_57_INFO {"STMT_DELETE_LOCK_RECURSIVELY", NULL} +#define STMT_57 \ + "DELETE FROM lock " \ + "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))) " \ + "" + +#define STMT_CLEAR_BASE_NODE_RECURSIVE_DAV_CACHE 58 +#define STMT_58_INFO {"STMT_CLEAR_BASE_NODE_RECURSIVE_DAV_CACHE", NULL} +#define STMT_58 \ "UPDATE nodes SET dav_cache = NULL " \ "WHERE dav_cache IS NOT NULL AND wc_id = ?1 AND op_depth = 0 " \ - " AND (?2 = '' " \ - " OR local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + " 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))) " \ "" -#define STMT_RECURSIVE_UPDATE_NODE_REPO 41 -#define STMT_41 \ +#define STMT_RECURSIVE_UPDATE_NODE_REPO 59 +#define STMT_59_INFO {"STMT_RECURSIVE_UPDATE_NODE_REPO", NULL} +#define STMT_59 \ "UPDATE nodes SET repos_id = ?4, dav_cache = NULL " \ - "WHERE wc_id = ?1 " \ - " AND repos_id = ?3 " \ - " AND (?2 = '' " \ - " OR local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + "WHERE (wc_id = ?1 AND local_relpath = ?2 AND repos_id = ?3) " \ + " 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)) " \ + " AND repos_id = ?3) " \ "" -#define STMT_UPDATE_LOCK_REPOS_ID 42 -#define STMT_42 \ +#define STMT_UPDATE_LOCK_REPOS_ID 60 +#define STMT_60_INFO {"STMT_UPDATE_LOCK_REPOS_ID", NULL} +#define STMT_60 \ "UPDATE lock SET repos_id = ?2 " \ "WHERE repos_id = ?1 " \ "" -#define STMT_UPDATE_NODE_FILEINFO 43 -#define STMT_43 \ +#define STMT_UPDATE_NODE_FILEINFO 61 +#define STMT_61_INFO {"STMT_UPDATE_NODE_FILEINFO", NULL} +#define STMT_61 \ "UPDATE nodes SET translated_size = ?3, last_mod_time = ?4 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ " AND op_depth = (SELECT MAX(op_depth) FROM nodes " \ " WHERE wc_id = ?1 AND local_relpath = ?2) " \ "" -#define STMT_UPDATE_ACTUAL_TREE_CONFLICTS 44 -#define STMT_44 \ - "UPDATE actual_node SET tree_conflict_data = ?3 " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 " \ - "" - -#define STMT_INSERT_ACTUAL_TREE_CONFLICTS 45 -#define STMT_45 \ - "INSERT INTO actual_node ( " \ - " wc_id, local_relpath, tree_conflict_data, parent_relpath) " \ +#define STMT_INSERT_ACTUAL_CONFLICT 62 +#define STMT_62_INFO {"STMT_INSERT_ACTUAL_CONFLICT", NULL} +#define STMT_62 \ + "INSERT INTO actual_node (wc_id, local_relpath, conflict_data, parent_relpath) " \ "VALUES (?1, ?2, ?3, ?4) " \ "" -#define STMT_UPDATE_ACTUAL_TEXT_CONFLICTS 46 -#define STMT_46 \ - "UPDATE actual_node SET conflict_old = ?3, conflict_new = ?4, " \ - " conflict_working = ?5 " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 " \ - "" - -#define STMT_INSERT_ACTUAL_TEXT_CONFLICTS 47 -#define STMT_47 \ - "INSERT INTO actual_node ( " \ - " wc_id, local_relpath, conflict_old, conflict_new, conflict_working, " \ - " parent_relpath) " \ - "VALUES (?1, ?2, ?3, ?4, ?5, ?6) " \ - "" - -#define STMT_UPDATE_ACTUAL_PROPERTY_CONFLICTS 48 -#define STMT_48 \ - "UPDATE actual_node SET prop_reject = ?3 " \ +#define STMT_UPDATE_ACTUAL_CONFLICT 63 +#define STMT_63_INFO {"STMT_UPDATE_ACTUAL_CONFLICT", NULL} +#define STMT_63 \ + "UPDATE actual_node SET conflict_data = ?3 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" -#define STMT_INSERT_ACTUAL_PROPERTY_CONFLICTS 49 -#define STMT_49 \ - "INSERT INTO actual_node ( " \ - " wc_id, local_relpath, prop_reject, parent_relpath) " \ - "VALUES (?1, ?2, ?3, ?4) " \ - "" - -#define STMT_UPDATE_ACTUAL_CHANGELISTS 50 -#define STMT_50 \ - "UPDATE actual_node SET changelist = ?2 " \ - "WHERE wc_id = ?1 AND local_relpath IN " \ - "(SELECT local_relpath FROM targets_list WHERE kind = 'file' AND wc_id = ?1) " \ +#define STMT_UPDATE_ACTUAL_CHANGELISTS 64 +#define STMT_64_INFO {"STMT_UPDATE_ACTUAL_CHANGELISTS", NULL} +#define STMT_64 \ + "UPDATE actual_node SET changelist = ?3 " \ + "WHERE wc_id = ?1 " \ + " 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))) " \ + " AND local_relpath = (SELECT local_relpath FROM targets_list AS t " \ + " WHERE wc_id = ?1 " \ + " AND t.local_relpath = actual_node.local_relpath " \ + " AND kind = 'file') " \ "" -#define STMT_UPDATE_ACTUAL_CLEAR_CHANGELIST 51 -#define STMT_51 \ +#define STMT_UPDATE_ACTUAL_CLEAR_CHANGELIST 65 +#define STMT_65_INFO {"STMT_UPDATE_ACTUAL_CLEAR_CHANGELIST", NULL} +#define STMT_65 \ "UPDATE actual_node SET changelist = NULL " \ " WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" -#define STMT_MARK_SKIPPED_CHANGELIST_DIRS 52 -#define STMT_52 \ +#define STMT_MARK_SKIPPED_CHANGELIST_DIRS 66 +#define STMT_66_INFO {"STMT_MARK_SKIPPED_CHANGELIST_DIRS", NULL} +#define STMT_66 \ "INSERT INTO changelist_list (wc_id, local_relpath, notify, changelist) " \ - "SELECT wc_id, local_relpath, 7, ?1 FROM targets_list WHERE kind = 'dir' " \ + "SELECT wc_id, local_relpath, 7, ?3 " \ + "FROM targets_list " \ + "WHERE wc_id = ?1 " \ + " 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))) " \ + " AND kind = 'dir' " \ "" -#define STMT_RESET_ACTUAL_WITH_CHANGELIST 53 -#define STMT_53 \ +#define STMT_RESET_ACTUAL_WITH_CHANGELIST 67 +#define STMT_67_INFO {"STMT_RESET_ACTUAL_WITH_CHANGELIST", NULL} +#define STMT_67 \ "REPLACE INTO actual_node ( " \ " wc_id, local_relpath, parent_relpath, changelist) " \ "VALUES (?1, ?2, ?3, ?4) " \ "" -#define STMT_CREATE_CHANGELIST_LIST 54 -#define STMT_54 \ +#define STMT_CREATE_CHANGELIST_LIST 68 +#define STMT_68_INFO {"STMT_CREATE_CHANGELIST_LIST", NULL} +#define STMT_68 \ "DROP TABLE IF EXISTS changelist_list; " \ "CREATE TEMPORARY TABLE changelist_list ( " \ " wc_id INTEGER NOT NULL, " \ " local_relpath TEXT NOT NULL, " \ - " notify INTEGER, " \ - " changelist TEXT NOT NULL " \ - " ); " \ - "CREATE INDEX changelist_list_index ON changelist_list(wc_id, local_relpath); " \ - "DROP TRIGGER IF EXISTS trigger_changelist_list_actual_cl_insert; " \ - "CREATE TEMPORARY TRIGGER trigger_changelist_list_actual_cl_insert " \ - "BEFORE INSERT ON actual_node " \ - "BEGIN " \ - " INSERT INTO changelist_list(wc_id, local_relpath, notify, changelist) " \ - " VALUES (NEW.wc_id, NEW.local_relpath, 26, NEW.changelist); " \ - "END; " \ - "DROP TRIGGER IF EXISTS trigger_changelist_list_actual_cl_clear; " \ - "CREATE TEMPORARY TRIGGER trigger_changelist_list_actual_cl_clear " \ - "BEFORE UPDATE ON actual_node " \ - "WHEN OLD.changelist IS NOT NULL AND " \ - " (OLD.changelist != NEW.changelist OR NEW.changelist IS NULL) " \ - "BEGIN " \ - " INSERT INTO changelist_list(wc_id, local_relpath, notify, changelist) " \ - " VALUES (OLD.wc_id, OLD.local_relpath, 27, OLD.changelist); " \ - "END; " \ - "DROP TRIGGER IF EXISTS trigger_changelist_list_actual_cl_set; " \ - "CREATE TEMPORARY TRIGGER trigger_changelist_list_actual_cl_set " \ + " notify INTEGER NOT NULL, " \ + " changelist TEXT NOT NULL, " \ + " PRIMARY KEY (wc_id, local_relpath, notify DESC) " \ + ") " \ + "" + +#define STMT_CREATE_CHANGELIST_TRIGGER 69 +#define STMT_69_INFO {"STMT_CREATE_CHANGELIST_TRIGGER", NULL} +#define STMT_69 \ + "DROP TRIGGER IF EXISTS trigger_changelist_list_change; " \ + "CREATE TEMPORARY TRIGGER trigger_changelist_list_change " \ "BEFORE UPDATE ON actual_node " \ - "WHEN NEW.CHANGELIST IS NOT NULL AND " \ - " (OLD.changelist != NEW.changelist OR OLD.changelist IS NULL) " \ + "WHEN old.changelist IS NOT new.changelist " \ "BEGIN " \ - " INSERT INTO changelist_list(wc_id, local_relpath, notify, changelist) " \ - " VALUES (NEW.wc_id, NEW.local_relpath, 26, NEW.changelist); " \ + " INSERT INTO changelist_list(wc_id, local_relpath, notify, changelist) " \ + " SELECT old.wc_id, old.local_relpath, 27, old.changelist " \ + " WHERE old.changelist is NOT NULL; " \ + " INSERT INTO changelist_list(wc_id, local_relpath, notify, changelist) " \ + " SELECT new.wc_id, new.local_relpath, 26, new.changelist " \ + " WHERE new.changelist IS NOT NULL; " \ "END " \ "" -#define STMT_INSERT_CHANGELIST_LIST 55 -#define STMT_55 \ - "INSERT INTO changelist_list(wc_id, local_relpath, notify, changelist) " \ - "VALUES (?1, ?2, ?3, ?4) " \ - "" - -#define STMT_FINALIZE_CHANGELIST 56 -#define STMT_56 \ - "DROP TRIGGER IF EXISTS trigger_changelist_list_actual_cl_insert; " \ - "DROP TRIGGER IF EXISTS trigger_changelist_list_actual_cl_set; " \ - "DROP TRIGGER IF EXISTS trigger_changelist_list_actual_cl_clear; " \ - "DROP TABLE IF EXISTS changelist_list; " \ - "DROP TABLE IF EXISTS targets_list " \ +#define STMT_FINALIZE_CHANGELIST 70 +#define STMT_70_INFO {"STMT_FINALIZE_CHANGELIST", NULL} +#define STMT_70 \ + "DROP TRIGGER trigger_changelist_list_change; " \ + "DROP TABLE changelist_list; " \ + "DROP TABLE targets_list " \ "" -#define STMT_SELECT_CHANGELIST_LIST 57 -#define STMT_57 \ +#define STMT_SELECT_CHANGELIST_LIST 71 +#define STMT_71_INFO {"STMT_SELECT_CHANGELIST_LIST", NULL} +#define STMT_71 \ "SELECT wc_id, local_relpath, notify, changelist " \ "FROM changelist_list " \ - "ORDER BY wc_id, local_relpath " \ + "ORDER BY wc_id, local_relpath ASC, notify DESC " \ "" -#define STMT_CREATE_TARGETS_LIST 58 -#define STMT_58 \ +#define STMT_CREATE_TARGETS_LIST 72 +#define STMT_72_INFO {"STMT_CREATE_TARGETS_LIST", NULL} +#define STMT_72 \ "DROP TABLE IF EXISTS targets_list; " \ "CREATE TEMPORARY TABLE targets_list ( " \ " wc_id INTEGER NOT NULL, " \ " local_relpath TEXT NOT NULL, " \ " parent_relpath TEXT, " \ - " kind TEXT NOT NULL " \ + " kind TEXT NOT NULL, " \ + " PRIMARY KEY (wc_id, local_relpath) " \ " ); " \ - "CREATE INDEX targets_list_kind " \ - " ON targets_list (kind) " \ "" -#define STMT_DROP_TARGETS_LIST 59 -#define STMT_59 \ - "DROP TABLE IF EXISTS targets_list " \ +#define STMT_DROP_TARGETS_LIST 73 +#define STMT_73_INFO {"STMT_DROP_TARGETS_LIST", NULL} +#define STMT_73 \ + "DROP TABLE targets_list " \ "" -#define STMT_INSERT_TARGET 60 -#define STMT_60 \ +#define STMT_INSERT_TARGET 74 +#define STMT_74_INFO {"STMT_INSERT_TARGET", NULL} +#define STMT_74 \ "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \ "SELECT wc_id, local_relpath, parent_relpath, kind " \ - "FROM nodes_current WHERE wc_id = ?1 AND local_relpath = ?2 " \ + "FROM nodes_current " \ + "WHERE wc_id = ?1 " \ + " AND local_relpath = ?2 " \ "" -#define STMT_INSERT_TARGET_DEPTH_FILES 61 -#define STMT_61 \ +#define STMT_INSERT_TARGET_DEPTH_FILES 75 +#define STMT_75_INFO {"STMT_INSERT_TARGET_DEPTH_FILES", NULL} +#define STMT_75 \ "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \ "SELECT wc_id, local_relpath, parent_relpath, kind " \ "FROM nodes_current " \ - "WHERE wc_id = ?1 AND ((parent_relpath = ?2 AND kind = 'file') " \ - " OR local_relpath = ?2) " \ + "WHERE wc_id = ?1 " \ + " AND parent_relpath = ?2 " \ + " AND kind = 'file' " \ "" -#define STMT_INSERT_TARGET_DEPTH_IMMEDIATES 62 -#define STMT_62 \ +#define STMT_INSERT_TARGET_DEPTH_IMMEDIATES 76 +#define STMT_76_INFO {"STMT_INSERT_TARGET_DEPTH_IMMEDIATES", NULL} +#define STMT_76 \ "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \ "SELECT wc_id, local_relpath, parent_relpath, kind " \ "FROM nodes_current " \ - "WHERE wc_id = ?1 AND (parent_relpath = ?2 OR local_relpath = ?2) " \ + "WHERE wc_id = ?1 " \ + " AND parent_relpath = ?2 " \ "" -#define STMT_INSERT_TARGET_DEPTH_INFINITY 63 -#define STMT_63 \ +#define STMT_INSERT_TARGET_DEPTH_INFINITY 77 +#define STMT_77_INFO {"STMT_INSERT_TARGET_DEPTH_INFINITY", NULL} +#define STMT_77 \ "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \ "SELECT wc_id, local_relpath, parent_relpath, kind " \ "FROM nodes_current " \ "WHERE wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ "" -#define STMT_INSERT_TARGET_WITH_CHANGELIST 64 -#define STMT_64 \ +#define STMT_INSERT_TARGET_WITH_CHANGELIST 78 +#define STMT_78_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST", NULL} +#define STMT_78 \ "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \ "SELECT N.wc_id, N.local_relpath, N.parent_relpath, N.kind " \ " FROM actual_node AS A JOIN nodes_current AS N " \ " ON A.wc_id = N.wc_id AND A.local_relpath = N.local_relpath " \ - " WHERE N.wc_id = ?1 AND A.changelist = ?3 AND N.local_relpath = ?2 " \ + " WHERE N.wc_id = ?1 " \ + " AND N.local_relpath = ?2 " \ + " AND A.changelist = ?3 " \ "" -#define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_FILES 65 -#define STMT_65 \ +#define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_FILES 79 +#define STMT_79_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_FILES", NULL} +#define STMT_79 \ "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \ "SELECT N.wc_id, N.local_relpath, N.parent_relpath, N.kind " \ " FROM actual_node AS A JOIN nodes_current AS N " \ " ON A.wc_id = N.wc_id AND A.local_relpath = N.local_relpath " \ - " WHERE N.wc_id = ?1 AND A.changelist = ?3 " \ - " AND ((N.parent_relpath = ?2 AND kind = 'file') OR N.local_relpath = ?2) " \ + " WHERE N.wc_id = ?1 " \ + " AND N.parent_relpath = ?2 " \ + " AND kind = 'file' " \ + " AND A.changelist = ?3 " \ "" -#define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_IMMEDIATES 66 -#define STMT_66 \ +#define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_IMMEDIATES 80 +#define STMT_80_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_IMMEDIATES", NULL} +#define STMT_80 \ "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \ "SELECT N.wc_id, N.local_relpath, N.parent_relpath, N.kind " \ " FROM actual_node AS A JOIN nodes_current AS N " \ " ON A.wc_id = N.wc_id AND A.local_relpath = N.local_relpath " \ - " WHERE N.wc_id = ?1 AND A.changelist = ?3 " \ - " AND (N.parent_relpath = ?2 OR N.local_relpath = ?2) " \ + " WHERE N.wc_id = ?1 " \ + " AND N.parent_relpath = ?2 " \ + " AND A.changelist = ?3 " \ "" -#define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_INFINITY 67 -#define STMT_67 \ +#define STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_INFINITY 81 +#define STMT_81_INFO {"STMT_INSERT_TARGET_WITH_CHANGELIST_DEPTH_INFINITY", NULL} +#define STMT_81 \ "INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) " \ "SELECT N.wc_id, N.local_relpath, N.parent_relpath, N.kind " \ " FROM actual_node AS A JOIN nodes_current AS N " \ " ON A.wc_id = N.wc_id AND A.local_relpath = N.local_relpath " \ " WHERE N.wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR N.local_relpath = ?2 " \ - " OR ((N.local_relpath) > (?2) || '/' AND (N.local_relpath) < (?2) || '0') ) " \ - " AND A.changelist = ?3 " \ - "" - -#define STMT_SELECT_TARGETS 68 -#define STMT_68 \ - "SELECT local_relpath, parent_relpath from targets_list " \ + " 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)) " \ + " AND A.changelist = ?3 " \ "" -#define STMT_INSERT_ACTUAL_EMPTIES 69 -#define STMT_69 \ +#define STMT_INSERT_ACTUAL_EMPTIES 82 +#define STMT_82_INFO {"STMT_INSERT_ACTUAL_EMPTIES", NULL} +#define STMT_82 \ "INSERT OR IGNORE INTO actual_node ( " \ - " wc_id, local_relpath, parent_relpath, properties, " \ - " conflict_old, conflict_new, conflict_working, " \ - " prop_reject, changelist, text_mod, tree_conflict_data ) " \ - "SELECT wc_id, local_relpath, parent_relpath, NULL, NULL, NULL, NULL, " \ - " NULL, NULL, NULL, NULL " \ + " wc_id, local_relpath, parent_relpath) " \ + "SELECT wc_id, local_relpath, parent_relpath " \ "FROM targets_list " \ "" -#define STMT_DELETE_ACTUAL_EMPTY 70 -#define STMT_70 \ +#define STMT_DELETE_ACTUAL_EMPTY 83 +#define STMT_83_INFO {"STMT_DELETE_ACTUAL_EMPTY", NULL} +#define STMT_83 \ "DELETE FROM actual_node " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ " AND properties IS NULL " \ - " AND conflict_old IS NULL " \ - " AND conflict_new IS NULL " \ - " AND prop_reject IS NULL " \ + " AND conflict_data IS NULL " \ " AND changelist IS NULL " \ " AND text_mod IS NULL " \ - " AND tree_conflict_data IS NULL " \ " AND older_checksum IS NULL " \ " AND right_checksum IS NULL " \ " AND left_checksum IS NULL " \ "" -#define STMT_DELETE_ACTUAL_EMPTIES 71 -#define STMT_71 \ +#define STMT_DELETE_ACTUAL_EMPTIES 84 +#define STMT_84_INFO {"STMT_DELETE_ACTUAL_EMPTIES", NULL} +#define STMT_84 \ "DELETE FROM actual_node " \ "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)) " \ " AND properties IS NULL " \ - " AND conflict_old IS NULL " \ - " AND conflict_new IS NULL " \ - " AND prop_reject IS NULL " \ + " AND conflict_data IS NULL " \ " AND changelist IS NULL " \ " AND text_mod IS NULL " \ - " AND tree_conflict_data IS NULL " \ " AND older_checksum IS NULL " \ " AND right_checksum IS NULL " \ " AND left_checksum IS NULL " \ "" -#define STMT_DELETE_BASE_NODE 72 -#define STMT_72 \ +#define STMT_DELETE_BASE_NODE 85 +#define STMT_85_INFO {"STMT_DELETE_BASE_NODE", NULL} +#define STMT_85 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" -#define STMT_DELETE_WORKING_NODE 73 -#define STMT_73 \ +#define STMT_DELETE_WORKING_NODE 86 +#define STMT_86_INFO {"STMT_DELETE_WORKING_NODE", NULL} +#define STMT_86 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ " AND op_depth = (SELECT MAX(op_depth) FROM nodes " \ " WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > 0) " \ "" -#define STMT_DELETE_LOWEST_WORKING_NODE 74 -#define STMT_74 \ +#define STMT_DELETE_LOWEST_WORKING_NODE 87 +#define STMT_87_INFO {"STMT_DELETE_LOWEST_WORKING_NODE", NULL} +#define STMT_87 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ " AND op_depth = (SELECT MIN(op_depth) FROM nodes " \ - " WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > 0) " \ + " WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > ?3) " \ " AND presence = 'base-deleted' " \ "" -#define STMT_DELETE_ALL_LAYERS 75 -#define STMT_75 \ +#define STMT_DELETE_NODE_ALL_LAYERS 88 +#define STMT_88_INFO {"STMT_DELETE_NODE_ALL_LAYERS", NULL} +#define STMT_88 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" -#define STMT_DELETE_NODES_RECURSIVE 76 -#define STMT_76 \ +#define STMT_DELETE_NODES_ABOVE_DEPTH_RECURSIVE 89 +#define STMT_89_INFO {"STMT_DELETE_NODES_ABOVE_DEPTH_RECURSIVE", NULL} +#define STMT_89 \ "DELETE FROM nodes " \ "WHERE wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + " 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))) " \ " AND op_depth >= ?3 " \ "" -#define STMT_DELETE_ACTUAL_NODE 77 -#define STMT_77 \ +#define STMT_DELETE_ACTUAL_NODE 90 +#define STMT_90_INFO {"STMT_DELETE_ACTUAL_NODE", NULL} +#define STMT_90 \ "DELETE FROM actual_node " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" -#define STMT_DELETE_ACTUAL_NODE_RECURSIVE 78 -#define STMT_78 \ +#define STMT_DELETE_ACTUAL_NODE_RECURSIVE 91 +#define STMT_91_INFO {"STMT_DELETE_ACTUAL_NODE_RECURSIVE", NULL} +#define STMT_91 \ "DELETE FROM actual_node " \ "WHERE wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ - "" - -#define STMT_DELETE_ACTUAL_NODE_WITHOUT_CONFLICT 79 -#define STMT_79 \ - "DELETE FROM actual_node " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 " \ - " AND tree_conflict_data IS NULL " \ + " 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))) " \ "" -#define STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST 80 -#define STMT_80 \ +#define STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST 92 +#define STMT_92_INFO {"STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST", NULL} +#define STMT_92 \ "DELETE FROM actual_node " \ "WHERE wc_id = ?1 " \ " AND local_relpath = ?2 " \ @@ -709,13 +955,13 @@ " AND c.kind = 'file')) " \ "" -#define STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE 81 -#define STMT_81 \ +#define STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE 93 +#define STMT_93_INFO {"STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE", NULL} +#define STMT_93 \ "DELETE FROM actual_node " \ "WHERE wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + " 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))) " \ " AND (changelist IS NULL " \ " OR NOT EXISTS (SELECT 1 FROM nodes_current c " \ " WHERE c.wc_id = ?1 " \ @@ -723,211 +969,211 @@ " AND c.kind = 'file')) " \ "" -#define STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST 82 -#define STMT_82 \ +#define STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST 94 +#define STMT_94_INFO {"STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST", NULL} +#define STMT_94 \ "UPDATE actual_node " \ "SET properties = NULL, " \ " text_mod = NULL, " \ + " conflict_data = NULL, " \ " tree_conflict_data = NULL, " \ - " conflict_old = NULL, " \ - " conflict_new = NULL, " \ - " conflict_working = NULL, " \ - " prop_reject = NULL, " \ " older_checksum = NULL, " \ " left_checksum = NULL, " \ " right_checksum = NULL " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" -#define STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE 83 -#define STMT_83 \ +#define STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE 95 +#define STMT_95_INFO {"STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE", NULL} +#define STMT_95 \ "UPDATE actual_node " \ "SET properties = NULL, " \ " text_mod = NULL, " \ + " conflict_data = NULL, " \ " tree_conflict_data = NULL, " \ - " conflict_old = NULL, " \ - " conflict_new = NULL, " \ - " conflict_working = NULL, " \ - " prop_reject = NULL, " \ " older_checksum = NULL, " \ " left_checksum = NULL, " \ " right_checksum = NULL " \ "WHERE wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + " 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))) " \ "" -#define STMT_UPDATE_NODE_BASE_DEPTH 84 -#define STMT_84 \ +#define STMT_UPDATE_NODE_BASE_DEPTH 96 +#define STMT_96_INFO {"STMT_UPDATE_NODE_BASE_DEPTH", NULL} +#define STMT_96 \ "UPDATE nodes SET depth = ?3 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ " AND kind='dir' " \ "" -#define STMT_UPDATE_NODE_BASE_PRESENCE 85 -#define STMT_85 \ +#define STMT_UPDATE_NODE_BASE_PRESENCE 97 +#define STMT_97_INFO {"STMT_UPDATE_NODE_BASE_PRESENCE", NULL} +#define STMT_97 \ "UPDATE nodes SET presence = ?3 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" -#define STMT_UPDATE_BASE_NODE_PRESENCE_REVNUM_AND_REPOS_PATH 86 -#define STMT_86 \ +#define STMT_UPDATE_BASE_NODE_PRESENCE_REVNUM_AND_REPOS_PATH 98 +#define STMT_98_INFO {"STMT_UPDATE_BASE_NODE_PRESENCE_REVNUM_AND_REPOS_PATH", NULL} +#define STMT_98 \ "UPDATE nodes SET presence = ?3, revision = ?4, repos_path = ?5 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" -#define STMT_LOOK_FOR_WORK 87 -#define STMT_87 \ +#define STMT_LOOK_FOR_WORK 99 +#define STMT_99_INFO {"STMT_LOOK_FOR_WORK", NULL} +#define STMT_99 \ "SELECT id FROM work_queue LIMIT 1 " \ "" -#define STMT_INSERT_WORK_ITEM 88 -#define STMT_88 \ +#define STMT_INSERT_WORK_ITEM 100 +#define STMT_100_INFO {"STMT_INSERT_WORK_ITEM", NULL} +#define STMT_100 \ "INSERT INTO work_queue (work) VALUES (?1) " \ "" -#define STMT_SELECT_WORK_ITEM 89 -#define STMT_89 \ +#define STMT_SELECT_WORK_ITEM 101 +#define STMT_101_INFO {"STMT_SELECT_WORK_ITEM", NULL} +#define STMT_101 \ "SELECT id, work FROM work_queue ORDER BY id LIMIT 1 " \ "" -#define STMT_DELETE_WORK_ITEM 90 -#define STMT_90 \ +#define STMT_DELETE_WORK_ITEM 102 +#define STMT_102_INFO {"STMT_DELETE_WORK_ITEM", NULL} +#define STMT_102 \ "DELETE FROM work_queue WHERE id = ?1 " \ "" -#define STMT_INSERT_OR_IGNORE_PRISTINE 91 -#define STMT_91 \ +#define STMT_INSERT_OR_IGNORE_PRISTINE 103 +#define STMT_103_INFO {"STMT_INSERT_OR_IGNORE_PRISTINE", NULL} +#define STMT_103 \ "INSERT OR IGNORE INTO pristine (checksum, md5_checksum, size, refcount) " \ "VALUES (?1, ?2, ?3, 0) " \ "" -#define STMT_INSERT_PRISTINE 92 -#define STMT_92 \ +#define STMT_INSERT_PRISTINE 104 +#define STMT_104_INFO {"STMT_INSERT_PRISTINE", NULL} +#define STMT_104 \ "INSERT INTO pristine (checksum, md5_checksum, size, refcount) " \ "VALUES (?1, ?2, ?3, 0) " \ "" -#define STMT_SELECT_PRISTINE 93 -#define STMT_93 \ +#define STMT_SELECT_PRISTINE 105 +#define STMT_105_INFO {"STMT_SELECT_PRISTINE", NULL} +#define STMT_105 \ "SELECT md5_checksum " \ "FROM pristine " \ "WHERE checksum = ?1 " \ "" -#define STMT_SELECT_PRISTINE_SIZE 94 -#define STMT_94 \ +#define STMT_SELECT_PRISTINE_SIZE 106 +#define STMT_106_INFO {"STMT_SELECT_PRISTINE_SIZE", NULL} +#define STMT_106 \ "SELECT size " \ "FROM pristine " \ "WHERE checksum = ?1 LIMIT 1 " \ "" -#define STMT_SELECT_PRISTINE_BY_MD5 95 -#define STMT_95 \ +#define STMT_SELECT_PRISTINE_BY_MD5 107 +#define STMT_107_INFO {"STMT_SELECT_PRISTINE_BY_MD5", NULL} +#define STMT_107 \ "SELECT checksum " \ "FROM pristine " \ "WHERE md5_checksum = ?1 " \ "" -#define STMT_SELECT_UNREFERENCED_PRISTINES 96 -#define STMT_96 \ +#define STMT_SELECT_UNREFERENCED_PRISTINES 108 +#define STMT_108_INFO {"STMT_SELECT_UNREFERENCED_PRISTINES", NULL} +#define STMT_108 \ "SELECT checksum " \ "FROM pristine " \ "WHERE refcount = 0 " \ "" -#define STMT_DELETE_PRISTINE_IF_UNREFERENCED 97 -#define STMT_97 \ +#define STMT_DELETE_PRISTINE_IF_UNREFERENCED 109 +#define STMT_109_INFO {"STMT_DELETE_PRISTINE_IF_UNREFERENCED", NULL} +#define STMT_109 \ "DELETE FROM pristine " \ "WHERE checksum = ?1 AND refcount = 0 " \ "" -#define STMT_SELECT_ACTUAL_CONFLICT_VICTIMS 98 -#define STMT_98 \ - "SELECT local_relpath " \ - "FROM actual_node " \ - "WHERE wc_id = ?1 AND parent_relpath = ?2 AND " \ - " NOT ((prop_reject IS NULL) AND (conflict_old IS NULL) " \ - " AND (conflict_new IS NULL) AND (conflict_working IS NULL) " \ - " AND (tree_conflict_data IS NULL)) " \ - "" - -#define STMT_SELECT_CONFLICT_MARKER_FILES 99 -#define STMT_99 \ - "SELECT prop_reject, conflict_old, conflict_new, conflict_working " \ - "FROM actual_node " \ - "WHERE wc_id = ?1 AND (local_relpath = ?2 OR parent_relpath = ?2) " \ - " AND ((prop_reject IS NOT NULL) OR (conflict_old IS NOT NULL) " \ - " OR (conflict_new IS NOT NULL) OR (conflict_working IS NOT NULL)) " \ +#define STMT_SELECT_COPY_PRISTINES 110 +#define STMT_110_INFO {"STMT_SELECT_COPY_PRISTINES", NULL} +#define STMT_110 \ + "SELECT n.checksum, md5_checksum, size " \ + "FROM nodes_current n " \ + "LEFT JOIN pristine p ON n.checksum = p.checksum " \ + "WHERE wc_id = ?1 " \ + " AND n.local_relpath = ?2 " \ + " AND n.checksum IS NOT NULL " \ + "UNION ALL " \ + "SELECT n.checksum, md5_checksum, size " \ + "FROM nodes n " \ + "LEFT JOIN pristine p ON n.checksum = p.checksum " \ + "WHERE 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)) " \ + " AND op_depth >= " \ + " (SELECT MAX(op_depth) FROM nodes WHERE wc_id = ?1 AND local_relpath = ?2) " \ + " AND n.checksum IS NOT NULL " \ "" -#define STMT_SELECT_ACTUAL_CHILDREN_TREE_CONFLICT 100 -#define STMT_100 \ - "SELECT local_relpath, tree_conflict_data " \ - "FROM actual_node " \ - "WHERE wc_id = ?1 AND parent_relpath = ?2 AND tree_conflict_data IS NOT NULL " \ +#define STMT_VACUUM 111 +#define STMT_111_INFO {"STMT_VACUUM", NULL} +#define STMT_111 \ + "VACUUM " \ "" -#define STMT_SELECT_CONFLICT_DETAILS 101 -#define STMT_101 \ - "SELECT prop_reject, conflict_old, conflict_new, conflict_working, " \ - " tree_conflict_data " \ +#define STMT_SELECT_CONFLICT_VICTIMS 112 +#define STMT_112_INFO {"STMT_SELECT_CONFLICT_VICTIMS", NULL} +#define STMT_112 \ + "SELECT local_relpath, conflict_data " \ "FROM actual_node " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 " \ - "" - -#define STMT_CLEAR_TEXT_CONFLICT 102 -#define STMT_102 \ - "UPDATE actual_node SET " \ - " conflict_old = NULL, " \ - " conflict_new = NULL, " \ - " conflict_working = NULL " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 " \ - "" - -#define STMT_CLEAR_PROPS_CONFLICT 103 -#define STMT_103 \ - "UPDATE actual_node SET " \ - " prop_reject = NULL " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 " \ + "WHERE wc_id = ?1 AND parent_relpath = ?2 AND " \ + " NOT (conflict_data IS NULL) " \ "" -#define STMT_INSERT_WC_LOCK 104 -#define STMT_104 \ +#define STMT_INSERT_WC_LOCK 113 +#define STMT_113_INFO {"STMT_INSERT_WC_LOCK", NULL} +#define STMT_113 \ "INSERT INTO wc_lock (wc_id, local_dir_relpath, locked_levels) " \ "VALUES (?1, ?2, ?3) " \ "" -#define STMT_SELECT_WC_LOCK 105 -#define STMT_105 \ +#define STMT_SELECT_WC_LOCK 114 +#define STMT_114_INFO {"STMT_SELECT_WC_LOCK", NULL} +#define STMT_114 \ "SELECT locked_levels FROM wc_lock " \ "WHERE wc_id = ?1 AND local_dir_relpath = ?2 " \ "" -#define STMT_SELECT_ANCESTOR_WCLOCKS 106 -#define STMT_106 \ +#define STMT_SELECT_ANCESTOR_WCLOCKS 115 +#define STMT_115_INFO {"STMT_SELECT_ANCESTOR_WCLOCKS", NULL} +#define STMT_115 \ "SELECT local_dir_relpath, locked_levels FROM wc_lock " \ "WHERE wc_id = ?1 " \ - " AND ((local_dir_relpath <= ?2 AND local_dir_relpath >= ?3) " \ + " AND ((local_dir_relpath >= ?3 AND local_dir_relpath <= ?2) " \ " OR local_dir_relpath = '') " \ - "ORDER BY local_dir_relpath DESC " \ "" -#define STMT_DELETE_WC_LOCK 107 -#define STMT_107 \ +#define STMT_DELETE_WC_LOCK 116 +#define STMT_116_INFO {"STMT_DELETE_WC_LOCK", NULL} +#define STMT_116 \ "DELETE FROM wc_lock " \ "WHERE wc_id = ?1 AND local_dir_relpath = ?2 " \ "" -#define STMT_FIND_WC_LOCK 108 -#define STMT_108 \ +#define STMT_FIND_WC_LOCK 117 +#define STMT_117_INFO {"STMT_FIND_WC_LOCK", NULL} +#define STMT_117 \ "SELECT local_dir_relpath FROM wc_lock " \ - "WHERE wc_id = ?1 AND local_dir_relpath LIKE ?2 ESCAPE '#' " \ + "WHERE wc_id = ?1 " \ + " 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)) " \ "" -#define STMT_DELETE_WC_LOCK_ORPHAN 109 -#define STMT_109 \ +#define STMT_DELETE_WC_LOCK_ORPHAN 118 +#define STMT_118_INFO {"STMT_DELETE_WC_LOCK_ORPHAN", NULL} +#define STMT_118 \ "DELETE FROM wc_lock " \ "WHERE wc_id = ?1 AND local_dir_relpath = ?2 " \ "AND NOT EXISTS (SELECT 1 FROM nodes " \ @@ -935,46 +1181,73 @@ " AND nodes.local_relpath = wc_lock.local_dir_relpath) " \ "" -#define STMT_DELETE_WC_LOCK_ORPHAN_RECURSIVE 110 -#define STMT_110 \ +#define STMT_DELETE_WC_LOCK_ORPHAN_RECURSIVE 119 +#define STMT_119_INFO {"STMT_DELETE_WC_LOCK_ORPHAN_RECURSIVE", NULL} +#define STMT_119 \ "DELETE FROM wc_lock " \ "WHERE wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR local_dir_relpath = ?2 " \ - " OR ((local_dir_relpath) > (?2) || '/' AND (local_dir_relpath) < (?2) || '0') ) " \ + " AND (local_dir_relpath = ?2 " \ + " 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))) " \ " AND NOT EXISTS (SELECT 1 FROM nodes " \ " WHERE nodes.wc_id = ?1 " \ " AND nodes.local_relpath = wc_lock.local_dir_relpath) " \ "" -#define STMT_APPLY_CHANGES_TO_BASE_NODE 111 -#define STMT_111 \ +#define STMT_APPLY_CHANGES_TO_BASE_NODE 120 +#define STMT_120_INFO {"STMT_APPLY_CHANGES_TO_BASE_NODE", NULL} +#define STMT_120 \ "INSERT OR REPLACE INTO nodes ( " \ " wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \ " revision, presence, depth, kind, changed_revision, changed_date, " \ " changed_author, checksum, properties, dav_cache, symlink_target, " \ - " file_external ) " \ + " inherited_props, file_external ) " \ "VALUES (?1, ?2, 0, " \ - " ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, " \ + " ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, " \ " (SELECT file_external FROM nodes " \ " WHERE wc_id = ?1 " \ " AND local_relpath = ?2 " \ " AND op_depth = 0)) " \ "" -#define STMT_INSTALL_WORKING_NODE_FOR_DELETE 112 -#define STMT_112 \ +#define STMT_INSTALL_WORKING_NODE_FOR_DELETE 121 +#define STMT_121_INFO {"STMT_INSTALL_WORKING_NODE_FOR_DELETE", NULL} +#define STMT_121 \ "INSERT OR REPLACE INTO nodes ( " \ " wc_id, local_relpath, op_depth, " \ " parent_relpath, presence, kind) " \ - "SELECT wc_id, local_relpath, ?3 , " \ - " parent_relpath, ?4 , kind " \ - "FROM nodes " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ + "VALUES(?1, ?2, ?3, ?4, 'base-deleted', ?5) " \ "" -#define STMT_INSERT_DELETE_FROM_NODE_RECURSIVE 113 -#define STMT_113 \ +#define STMT_DELETE_NO_LOWER_LAYER 122 +#define STMT_122_INFO {"STMT_DELETE_NO_LOWER_LAYER", NULL} +#define STMT_122 \ + "DELETE FROM nodes " \ + " WHERE wc_id = ?1 " \ + " 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))) " \ + " AND op_depth = ?3 " \ + " AND NOT EXISTS (SELECT 1 FROM nodes n " \ + " WHERE n.wc_id = ?1 " \ + " AND n.local_relpath = nodes.local_relpath " \ + " AND n.op_depth = ?4 " \ + " AND n.presence IN ('normal', 'incomplete')) " \ + "" + +#define STMT_REPLACE_WITH_BASE_DELETED 123 +#define STMT_123_INFO {"STMT_REPLACE_WITH_BASE_DELETED", NULL} +#define STMT_123 \ + "INSERT OR REPLACE INTO nodes (wc_id, local_relpath, op_depth, parent_relpath, " \ + " kind, moved_to, presence) " \ + "SELECT wc_id, local_relpath, op_depth, parent_relpath, " \ + " kind, moved_to, 'base-deleted' " \ + " FROM nodes " \ + " WHERE wc_id = ?1 " \ + " 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))) " \ + " AND op_depth = ?3 " \ + "" + +#define STMT_INSERT_DELETE_FROM_NODE_RECURSIVE 124 +#define STMT_124_INFO {"STMT_INSERT_DELETE_FROM_NODE_RECURSIVE", NULL} +#define STMT_124 \ "INSERT INTO nodes ( " \ " wc_id, local_relpath, op_depth, parent_relpath, presence, kind) " \ "SELECT wc_id, local_relpath, ?4 , parent_relpath, 'base-deleted', " \ @@ -982,13 +1255,15 @@ "FROM nodes " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + " OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND op_depth = ?3 " \ - " AND presence NOT IN ('base-deleted', 'not-present', 'excluded', 'absent') " \ + " AND presence NOT IN ('base-deleted', 'not-present', 'excluded', 'server-excluded') " \ + " AND file_external IS NULL " \ "" -#define STMT_INSERT_WORKING_NODE_FROM_BASE_COPY 114 -#define STMT_114 \ +#define STMT_INSERT_WORKING_NODE_FROM_BASE_COPY 125 +#define STMT_125_INFO {"STMT_INSERT_WORKING_NODE_FROM_BASE_COPY", NULL} +#define STMT_125 \ "INSERT INTO nodes ( " \ " wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \ " revision, presence, depth, kind, changed_revision, changed_date, " \ @@ -1002,8 +1277,9 @@ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" -#define STMT_INSERT_DELETE_FROM_BASE 115 -#define STMT_115 \ +#define STMT_INSERT_DELETE_FROM_BASE 126 +#define STMT_126_INFO {"STMT_INSERT_DELETE_FROM_BASE", NULL} +#define STMT_126 \ "INSERT INTO nodes ( " \ " wc_id, local_relpath, op_depth, parent_relpath, presence, kind) " \ "SELECT wc_id, local_relpath, ?3 , parent_relpath, " \ @@ -1012,332 +1288,377 @@ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" -#define STMT_UPDATE_OP_DEPTH_INCREASE_RECURSIVE 116 -#define STMT_116 \ +#define STMT_UPDATE_OP_DEPTH_INCREASE_RECURSIVE 127 +#define STMT_127_INFO {"STMT_UPDATE_OP_DEPTH_INCREASE_RECURSIVE", NULL} +#define STMT_127 \ "UPDATE nodes SET op_depth = ?3 + 1 " \ "WHERE wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth = ?3 " \ "" -#define STMT_DOES_NODE_EXIST 117 -#define STMT_117 \ +#define STMT_UPDATE_OP_DEPTH_RECURSIVE 128 +#define STMT_128_INFO {"STMT_UPDATE_OP_DEPTH_RECURSIVE", NULL} +#define STMT_128 \ + "UPDATE nodes SET op_depth = ?4, moved_here = NULL " \ + "WHERE wc_id = ?1 " \ + " 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))) " \ + " AND op_depth = ?3 " \ + "" + +#define STMT_DOES_NODE_EXIST 129 +#define STMT_129_INFO {"STMT_DOES_NODE_EXIST", NULL} +#define STMT_129 \ "SELECT 1 FROM nodes WHERE wc_id = ?1 AND local_relpath = ?2 " \ "LIMIT 1 " \ "" -#define STMT_HAS_SERVER_EXCLUDED_NODES 118 -#define STMT_118 \ +#define STMT_HAS_SERVER_EXCLUDED_DESCENDANTS 130 +#define STMT_130_INFO {"STMT_HAS_SERVER_EXCLUDED_DESCENDANTS", NULL} +#define STMT_130 \ "SELECT local_relpath FROM nodes " \ "WHERE wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ - " AND op_depth = 0 AND presence = 'absent' " \ + " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ + " AND op_depth = 0 AND presence = 'server-excluded' " \ "LIMIT 1 " \ "" -#define STMT_SELECT_ALL_SERVER_EXCLUDED_NODES 119 -#define STMT_119 \ +#define STMT_SELECT_ALL_EXCLUDED_DESCENDANTS 131 +#define STMT_131_INFO {"STMT_SELECT_ALL_EXCLUDED_DESCENDANTS", NULL} +#define STMT_131 \ "SELECT local_relpath FROM nodes " \ "WHERE wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth = 0 " \ - " AND presence = 'absent' " \ + " AND (presence = 'server-excluded' OR presence = 'excluded') " \ "" -#define STMT_INSERT_WORKING_NODE_COPY_FROM_BASE 120 -#define STMT_120 \ +#define STMT_INSERT_WORKING_NODE_COPY_FROM 132 +#define STMT_132_INFO {"STMT_INSERT_WORKING_NODE_COPY_FROM", NULL} +#define STMT_132 \ "INSERT OR REPLACE INTO nodes ( " \ " wc_id, local_relpath, op_depth, parent_relpath, repos_id, " \ - " repos_path, revision, presence, depth, kind, changed_revision, " \ + " repos_path, revision, presence, depth, moved_here, kind, changed_revision, " \ " changed_date, changed_author, checksum, properties, translated_size, " \ - " last_mod_time, symlink_target ) " \ + " last_mod_time, symlink_target, moved_to ) " \ "SELECT wc_id, ?3 , ?4 , ?5 , " \ " repos_id, repos_path, revision, ?6 , depth, " \ - " kind, changed_revision, changed_date, changed_author, checksum, properties, " \ - " translated_size, last_mod_time, symlink_target " \ - "FROM nodes " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ + " ?7, kind, changed_revision, changed_date, " \ + " changed_author, checksum, properties, translated_size, " \ + " last_mod_time, symlink_target, " \ + " (SELECT dst.moved_to FROM nodes AS dst " \ + " WHERE dst.wc_id = ?1 " \ + " AND dst.local_relpath = ?3 " \ + " AND dst.op_depth = ?4) " \ + "FROM nodes_current " \ + "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" -#define STMT_INSERT_WORKING_NODE_COPY_FROM_WORKING 121 -#define STMT_121 \ +#define STMT_INSERT_WORKING_NODE_COPY_FROM_DEPTH 133 +#define STMT_133_INFO {"STMT_INSERT_WORKING_NODE_COPY_FROM_DEPTH", NULL} +#define STMT_133 \ "INSERT OR REPLACE INTO nodes ( " \ - " wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \ - " revision, presence, depth, kind, changed_revision, changed_date, " \ - " changed_author, checksum, properties, translated_size, last_mod_time, " \ - " symlink_target ) " \ + " wc_id, local_relpath, op_depth, parent_relpath, repos_id, " \ + " repos_path, revision, presence, depth, moved_here, kind, changed_revision, " \ + " changed_date, changed_author, checksum, properties, translated_size, " \ + " last_mod_time, symlink_target, moved_to ) " \ "SELECT wc_id, ?3 , ?4 , ?5 , " \ " repos_id, repos_path, revision, ?6 , depth, " \ - " kind, changed_revision, changed_date, changed_author, checksum, properties, " \ - " translated_size, last_mod_time, symlink_target " \ - "FROM nodes " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > 0 " \ - "ORDER BY op_depth DESC " \ - "LIMIT 1 " \ - "" - -#define STMT_INSERT_WORKING_NODE_COPY_FROM_DEPTH 122 -#define STMT_122 \ - "INSERT OR REPLACE INTO nodes ( " \ - " wc_id, local_relpath, op_depth, parent_relpath, repos_id, repos_path, " \ - " revision, presence, depth, kind, changed_revision, changed_date, " \ - " changed_author, checksum, properties, translated_size, last_mod_time, " \ - " symlink_target ) " \ - "SELECT wc_id, ?3 , ?4 , ?5 , " \ - " repos_id, repos_path, revision, ?6 , " \ - " depth, kind, changed_revision, changed_date, changed_author, checksum, " \ - " properties, translated_size, last_mod_time, symlink_target " \ + " ?8 , kind, changed_revision, changed_date, " \ + " changed_author, checksum, properties, translated_size, " \ + " last_mod_time, symlink_target, " \ + " (SELECT dst.moved_to FROM nodes AS dst " \ + " WHERE dst.wc_id = ?1 " \ + " AND dst.local_relpath = ?3 " \ + " AND dst.op_depth = ?4) " \ "FROM nodes " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?7 " \ "" -#define STMT_INSERT_ACTUAL_NODE_FROM_ACTUAL_NODE 123 -#define STMT_123 \ - "INSERT OR REPLACE INTO actual_node ( " \ - " wc_id, local_relpath, parent_relpath, properties, " \ - " conflict_old, conflict_new, conflict_working, " \ - " prop_reject, changelist, text_mod, tree_conflict_data ) " \ - "SELECT wc_id, ?3 , ?4 , properties, " \ - " conflict_old, conflict_new, conflict_working, " \ - " prop_reject, changelist, text_mod, tree_conflict_data " \ - "FROM actual_node " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 " \ - "" - -#define STMT_UPDATE_BASE_REVISION 124 -#define STMT_124 \ +#define STMT_UPDATE_BASE_REVISION 134 +#define STMT_134_INFO {"STMT_UPDATE_BASE_REVISION", NULL} +#define STMT_134 \ "UPDATE nodes SET revision = ?3 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" -#define STMT_UPDATE_BASE_REPOS 125 -#define STMT_125 \ +#define STMT_UPDATE_BASE_REPOS 135 +#define STMT_135_INFO {"STMT_UPDATE_BASE_REPOS", NULL} +#define STMT_135 \ "UPDATE nodes SET repos_id = ?3, repos_path = ?4 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 " \ "" -#define STMT_ACTUAL_HAS_CHILDREN 126 -#define STMT_126 \ +#define STMT_ACTUAL_HAS_CHILDREN 136 +#define STMT_136_INFO {"STMT_ACTUAL_HAS_CHILDREN", NULL} +#define STMT_136 \ "SELECT 1 FROM actual_node " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 " \ "LIMIT 1 " \ "" -#define STMT_INSERT_EXTERNAL 127 -#define STMT_127 \ +#define STMT_INSERT_EXTERNAL 137 +#define STMT_137_INFO {"STMT_INSERT_EXTERNAL", NULL} +#define STMT_137 \ "INSERT OR REPLACE INTO externals ( " \ " wc_id, local_relpath, parent_relpath, presence, kind, def_local_relpath, " \ " repos_id, def_repos_relpath, def_operational_revision, def_revision) " \ "VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10) " \ "" -#define STMT_INSERT_EXTERNAL_UPGRADE 128 -#define STMT_128 \ - "INSERT OR REPLACE INTO externals ( " \ - " wc_id, local_relpath, parent_relpath, presence, kind, def_local_relpath, " \ - " repos_id, def_repos_relpath, def_operational_revision, def_revision) " \ - "VALUES (?1, ?2, ?3, ?4, " \ - " CASE WHEN (SELECT file_external FROM nodes " \ - " WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0) " \ - " IS NOT NULL THEN 'file' ELSE 'unknown' END, " \ - " ?5, ?6, ?7, ?8, ?9) " \ - "" - -#define STMT_SELECT_EXTERNAL_INFO 129 -#define STMT_129 \ +#define STMT_SELECT_EXTERNAL_INFO 138 +#define STMT_138_INFO {"STMT_SELECT_EXTERNAL_INFO", NULL} +#define STMT_138 \ "SELECT presence, kind, def_local_relpath, repos_id, " \ - " def_repos_relpath, def_operational_revision, def_revision, presence " \ + " def_repos_relpath, def_operational_revision, def_revision " \ "FROM externals WHERE wc_id = ?1 AND local_relpath = ?2 " \ "LIMIT 1 " \ "" -#define STMT_SELECT_EXTERNAL_CHILDREN 130 -#define STMT_130 \ - "SELECT local_relpath " \ - "FROM externals WHERE wc_id = ?1 AND parent_relpath = ?2 " \ +#define STMT_DELETE_FILE_EXTERNALS 139 +#define STMT_139_INFO {"STMT_DELETE_FILE_EXTERNALS", NULL} +#define STMT_139 \ + "DELETE FROM nodes " \ + "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)) " \ + " AND op_depth = 0 " \ + " AND file_external IS NOT NULL " \ "" -#define STMT_SELECT_EXTERNALS_DEFINED 131 -#define STMT_131 \ - "SELECT local_relpath, def_local_relpath " \ - "FROM externals " \ +#define STMT_DELETE_FILE_EXTERNAL_REGISTATIONS 140 +#define STMT_140_INFO {"STMT_DELETE_FILE_EXTERNAL_REGISTATIONS", NULL} +#define STMT_140 \ + "DELETE FROM externals " \ "WHERE wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR def_local_relpath = ?2 " \ - " OR ((def_local_relpath) > (?2) || '/' AND (def_local_relpath) < (?2) || '0') ) " \ + " AND (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ + " AND kind != 'dir' " \ "" -#define STMT_UPDATE_EXTERNAL_FILEINFO 132 -#define STMT_132 \ - "UPDATE externals SET recorded_size = ?3, recorded_mod_time = ?4 " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 " \ +#define STMT_DELETE_EXTERNAL_REGISTATIONS 141 +#define STMT_141_INFO {"STMT_DELETE_EXTERNAL_REGISTATIONS", NULL} +#define STMT_141 \ + "DELETE FROM externals " \ + "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)) " \ "" -#define STMT_DELETE_EXTERNAL 133 -#define STMT_133 \ +#define STMT_SELECT_COMMITTABLE_EXTERNALS_BELOW 142 +#define STMT_142_INFO {"STMT_SELECT_COMMITTABLE_EXTERNALS_BELOW", NULL} +#define STMT_142 \ + "SELECT local_relpath, kind, def_repos_relpath, " \ + " (SELECT root FROM repository AS r WHERE r.id = e.repos_id) " \ + "FROM externals e " \ + "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)) " \ + " AND def_revision IS NULL " \ + " AND repos_id = (SELECT repos_id " \ + " FROM nodes AS n " \ + " WHERE n.wc_id = ?1 " \ + " AND n.local_relpath = '' " \ + " AND n.op_depth = 0) " \ + " AND ((kind='dir') " \ + " OR EXISTS (SELECT 1 FROM nodes " \ + " WHERE nodes.wc_id = e.wc_id " \ + " AND nodes.local_relpath = e.parent_relpath)) " \ + "" + +#define STMT_SELECT_COMMITTABLE_EXTERNALS_IMMEDIATELY_BELOW 143 +#define STMT_143_INFO {"STMT_SELECT_COMMITTABLE_EXTERNALS_IMMEDIATELY_BELOW", NULL} +#define STMT_143 \ + "SELECT local_relpath, kind, def_repos_relpath, " \ + " (SELECT root FROM repository AS r WHERE r.id = e.repos_id) " \ + "FROM externals e " \ + "WHERE wc_id = ?1 " \ + " 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)) " \ + " AND parent_relpath = ?2 " \ + " AND def_revision IS NULL " \ + " AND repos_id = (SELECT repos_id " \ + " FROM nodes AS n " \ + " WHERE n.wc_id = ?1 " \ + " AND n.local_relpath = '' " \ + " AND n.op_depth = 0) " \ + " AND ((kind='dir') " \ + " OR EXISTS (SELECT 1 FROM nodes " \ + " WHERE nodes.wc_id = e.wc_id " \ + " AND nodes.local_relpath = e.parent_relpath)) " \ + "" + +#define STMT_SELECT_EXTERNALS_DEFINED 144 +#define STMT_144_INFO {"STMT_SELECT_EXTERNALS_DEFINED", NULL} +#define STMT_144 \ + "SELECT local_relpath, def_local_relpath " \ + "FROM externals " \ + "WHERE (wc_id = ?1 AND def_local_relpath = ?2) " \ + " 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))) " \ + "" + +#define STMT_DELETE_EXTERNAL 145 +#define STMT_145_INFO {"STMT_DELETE_EXTERNAL", NULL} +#define STMT_145 \ "DELETE FROM externals " \ "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" -#define STMT_SELECT_EXTERNAL_PROPERTIES 134 -#define STMT_134 \ +#define STMT_SELECT_EXTERNAL_PROPERTIES 146 +#define STMT_146_INFO {"STMT_SELECT_EXTERNAL_PROPERTIES", NULL} +#define STMT_146 \ "SELECT IFNULL((SELECT properties FROM actual_node a " \ " WHERE a.wc_id = ?1 AND A.local_relpath = n.local_relpath), " \ " properties), " \ " local_relpath, depth " \ - "FROM nodes n " \ - "WHERE wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ - " AND kind = 'dir' AND presence='normal' " \ - " AND op_depth=(SELECT MAX(op_depth) FROM nodes o " \ - " WHERE o.wc_id = ?1 AND o.local_relpath = n.local_relpath) " \ + "FROM nodes_current n " \ + "WHERE wc_id = ?1 AND local_relpath = ?2 " \ + " AND kind = 'dir' AND presence IN ('normal', 'incomplete') " \ + "UNION ALL " \ + "SELECT IFNULL((SELECT properties FROM actual_node a " \ + " WHERE a.wc_id = ?1 AND A.local_relpath = n.local_relpath), " \ + " properties), " \ + " local_relpath, depth " \ + "FROM nodes_current n " \ + "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)) " \ + " AND kind = 'dir' AND presence IN ('normal', 'incomplete') " \ "" -#define STMT_INSERT_ACTUAL_NODE 135 -#define STMT_135 \ - "INSERT OR REPLACE INTO actual_node ( " \ - " wc_id, local_relpath, parent_relpath, properties, conflict_old, " \ - " conflict_new, " \ - " conflict_working, prop_reject, changelist, text_mod, " \ - " tree_conflict_data) " \ - "VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, NULL, ?10) " \ +#define STMT_SELECT_CURRENT_PROPS_RECURSIVE 147 +#define STMT_147_INFO {"STMT_SELECT_CURRENT_PROPS_RECURSIVE", NULL} +#define STMT_147 \ + "SELECT IFNULL((SELECT properties FROM actual_node a " \ + " WHERE a.wc_id = ?1 AND A.local_relpath = n.local_relpath), " \ + " properties), " \ + " local_relpath " \ + "FROM nodes_current n " \ + "WHERE (wc_id = ?1 AND local_relpath = ?2) " \ + " 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))) " \ "" -#define STMT_UPDATE_ACTUAL_CONFLICT_DATA 136 -#define STMT_136 \ - "UPDATE actual_node SET conflict_data = ?3 " \ - "WHERE wc_id = ?1 AND local_relpath = ?2 " \ +#define STMT_PRAGMA_LOCKING_MODE 148 +#define STMT_148_INFO {"STMT_PRAGMA_LOCKING_MODE", NULL} +#define STMT_148 \ + "PRAGMA locking_mode = exclusive " \ "" -#define STMT_INSERT_ACTUAL_CONFLICT_DATA 137 -#define STMT_137 \ - "INSERT INTO actual_node ( " \ - " wc_id, local_relpath, conflict_data, parent_relpath) " \ - "VALUES (?1, ?2, ?3, ?4) " \ +#define STMT_INSERT_ACTUAL_NODE 149 +#define STMT_149_INFO {"STMT_INSERT_ACTUAL_NODE", NULL} +#define STMT_149 \ + "INSERT OR REPLACE INTO actual_node ( " \ + " wc_id, local_relpath, parent_relpath, properties, changelist, conflict_data) " \ + "VALUES (?1, ?2, ?3, ?4, ?5, ?6) " \ "" -#define STMT_SELECT_OLD_TREE_CONFLICT 138 -#define STMT_138 \ - "SELECT wc_id, local_relpath, tree_conflict_data " \ - "FROM actual_node " \ - "WHERE tree_conflict_data IS NOT NULL " \ +#define STMT_UPDATE_ACTUAL_CONFLICT_DATA 150 +#define STMT_150_INFO {"STMT_UPDATE_ACTUAL_CONFLICT_DATA", NULL} +#define STMT_150 \ + "UPDATE actual_node SET conflict_data = ?3 " \ + "WHERE wc_id = ?1 AND local_relpath = ?2 " \ "" -#define STMT_ERASE_OLD_CONFLICTS 139 -#define STMT_139 \ - "UPDATE actual_node SET tree_conflict_data = NULL " \ +#define STMT_INSERT_ACTUAL_CONFLICT_DATA 151 +#define STMT_151_INFO {"STMT_INSERT_ACTUAL_CONFLICT_DATA", NULL} +#define STMT_151 \ + "INSERT INTO actual_node (wc_id, local_relpath, conflict_data, parent_relpath) " \ + "VALUES (?1, ?2, ?3, ?4) " \ "" -#define STMT_SELECT_ALL_FILES 140 -#define STMT_140 \ +#define STMT_SELECT_ALL_FILES 152 +#define STMT_152_INFO {"STMT_SELECT_ALL_FILES", NULL} +#define STMT_152 \ "SELECT local_relpath FROM nodes_current " \ "WHERE wc_id = ?1 AND parent_relpath = ?2 AND kind = 'file' " \ "" -#define STMT_UPDATE_NODE_PROPS 141 -#define STMT_141 \ +#define STMT_UPDATE_NODE_PROPS 153 +#define STMT_153_INFO {"STMT_UPDATE_NODE_PROPS", NULL} +#define STMT_153 \ "UPDATE nodes SET properties = ?4 " \ "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \ "" -#define STMT_HAS_WORKING_NODES 142 -#define STMT_142 \ - "SELECT 1 FROM nodes WHERE op_depth > 0 " \ - "LIMIT 1 " \ - "" - -#define STMT_HAS_ACTUAL_NODES_CONFLICTS 143 -#define STMT_143 \ - "SELECT 1 FROM actual_node " \ - "WHERE NOT ((prop_reject IS NULL) AND (conflict_old IS NULL) " \ - " AND (conflict_new IS NULL) AND (conflict_working IS NULL) " \ - " AND (tree_conflict_data IS NULL)) " \ - "LIMIT 1 " \ +#define STMT_PRAGMA_TABLE_INFO_NODES 154 +#define STMT_154_INFO {"STMT_PRAGMA_TABLE_INFO_NODES", NULL} +#define STMT_154 \ + "PRAGMA table_info(\"NODES\") " \ "" -#define STMT_CREATE_NODE_PROPS_CACHE 144 -#define STMT_144 \ - "DROP TABLE IF EXISTS temp__node_props_cache; " \ - "CREATE TEMPORARY TABLE temp__node_props_cache ( " \ - " local_Relpath TEXT NOT NULL, " \ +#define STMT_CREATE_TARGET_PROP_CACHE 155 +#define STMT_155_INFO {"STMT_CREATE_TARGET_PROP_CACHE", NULL} +#define STMT_155 \ + "DROP TABLE IF EXISTS target_prop_cache; " \ + "CREATE TEMPORARY TABLE target_prop_cache ( " \ + " local_relpath TEXT NOT NULL PRIMARY KEY, " \ " kind TEXT NOT NULL, " \ " properties BLOB " \ - " ); " \ - "" - -#define STMT_CACHE_NODE_PROPS 145 -#define STMT_145 \ - "INSERT INTO temp__node_props_cache(local_relpath, kind, properties) " \ - " SELECT local_relpath, kind, properties FROM nodes_current " \ - " WHERE wc_id = ?1 " \ - " AND local_relpath IN (SELECT local_relpath FROM targets_list) " \ - " AND presence IN ('normal', 'incomplete') " \ - "" - -#define STMT_CACHE_ACTUAL_PROPS 146 -#define STMT_146 \ - "UPDATE temp__node_props_cache " \ - " SET properties= " \ - " IFNULL((SELECT properties FROM actual_node a " \ - " WHERE a.wc_id = ?1 " \ - " AND a.local_relpath = temp__node_props_cache.local_relpath), " \ - " properties) " \ - "" - -#define STMT_CACHE_NODE_BASE_PROPS 147 -#define STMT_147 \ - "INSERT INTO temp__node_props_cache (local_relpath, kind, properties) " \ - " SELECT local_relpath, kind, properties FROM nodes_base " \ - " WHERE wc_id = ?1 " \ - " AND local_relpath IN (SELECT local_relpath FROM targets_list) " \ - " AND presence IN ('normal', 'incomplete') " \ - "" - -#define STMT_CACHE_NODE_PRISTINE_PROPS 148 -#define STMT_148 \ - "INSERT INTO temp__node_props_cache(local_relpath, kind, properties) " \ - " SELECT local_relpath, kind, " \ - " IFNULL((SELECT properties FROM nodes nn " \ - " WHERE n.presence = 'base-deleted' " \ - " AND nn.wc_id = n.wc_id " \ - " AND nn.local_relpath = n.local_relpath " \ - " AND nn.op_depth < n.op_depth " \ - " ORDER BY op_depth DESC), " \ - " properties) " \ - " FROM nodes_current n " \ - " WHERE wc_id = ?1 " \ - " AND local_relpath IN (SELECT local_relpath FROM targets_list) " \ - " AND presence IN ('normal', 'incomplete', 'base-deleted') " \ + "); " \ "" -#define STMT_SELECT_RELEVANT_PROPS_FROM_CACHE 149 -#define STMT_149 \ - "SELECT local_relpath, properties FROM temp__node_props_cache " \ +#define STMT_CACHE_TARGET_PROPS 156 +#define STMT_156_INFO {"STMT_CACHE_TARGET_PROPS", NULL} +#define STMT_156 \ + "INSERT INTO target_prop_cache(local_relpath, kind, properties) " \ + " SELECT n.local_relpath, n.kind, " \ + " IFNULL((SELECT properties FROM actual_node AS a " \ + " WHERE a.wc_id = n.wc_id " \ + " AND a.local_relpath = n.local_relpath), " \ + " n.properties) " \ + " FROM targets_list AS t " \ + " JOIN nodes AS n " \ + " ON n.wc_id = ?1 " \ + " AND n.local_relpath = t.local_relpath " \ + " AND n.op_depth = (SELECT MAX(op_depth) FROM nodes AS n3 " \ + " WHERE n3.wc_id = ?1 " \ + " AND n3.local_relpath = t.local_relpath) " \ + " WHERE t.wc_id = ?1 " \ + " AND (presence='normal' OR presence='incomplete') " \ + " ORDER BY t.local_relpath " \ + "" + +#define STMT_CACHE_TARGET_PRISTINE_PROPS 157 +#define STMT_157_INFO {"STMT_CACHE_TARGET_PRISTINE_PROPS", NULL} +#define STMT_157 \ + "INSERT INTO target_prop_cache(local_relpath, kind, properties) " \ + " SELECT n.local_relpath, n.kind, " \ + " CASE n.presence " \ + " WHEN 'base-deleted' " \ + " THEN (SELECT properties FROM nodes AS p " \ + " WHERE p.wc_id = n.wc_id " \ + " AND p.local_relpath = n.local_relpath " \ + " AND p.op_depth < n.op_depth " \ + " ORDER BY p.op_depth DESC ) " \ + " ELSE properties END " \ + " FROM targets_list AS t " \ + " JOIN nodes AS n " \ + " ON n.wc_id = ?1 " \ + " AND n.local_relpath = t.local_relpath " \ + " AND n.op_depth = (SELECT MAX(op_depth) FROM nodes AS n3 " \ + " WHERE n3.wc_id = ?1 " \ + " AND n3.local_relpath = t.local_relpath) " \ + " WHERE t.wc_id = ?1 " \ + " AND (presence = 'normal' " \ + " OR presence = 'incomplete' " \ + " OR presence = 'base-deleted') " \ + " ORDER BY t.local_relpath " \ + "" + +#define STMT_SELECT_ALL_TARGET_PROP_CACHE 158 +#define STMT_158_INFO {"STMT_SELECT_ALL_TARGET_PROP_CACHE", NULL} +#define STMT_158 \ + "SELECT local_relpath, properties FROM target_prop_cache " \ "ORDER BY local_relpath " \ "" -#define STMT_DROP_NODE_PROPS_CACHE 150 -#define STMT_150 \ - "DROP TABLE IF EXISTS temp__node_props_cache; " \ +#define STMT_DROP_TARGET_PROP_CACHE 159 +#define STMT_159_INFO {"STMT_DROP_TARGET_PROP_CACHE", NULL} +#define STMT_159 \ + "DROP TABLE target_prop_cache; " \ "" -#define STMT_CREATE_REVERT_LIST 151 -#define STMT_151 \ +#define STMT_CREATE_REVERT_LIST 160 +#define STMT_160_INFO {"STMT_CREATE_REVERT_LIST", NULL} +#define STMT_160 \ "DROP TABLE IF EXISTS revert_list; " \ "CREATE TEMPORARY TABLE revert_list ( " \ " local_relpath TEXT NOT NULL, " \ " actual INTEGER NOT NULL, " \ - " conflict_old TEXT, " \ - " conflict_new TEXT, " \ - " conflict_working TEXT, " \ - " prop_reject TEXT, " \ + " conflict_data BLOB, " \ " notify INTEGER, " \ " op_depth INTEGER, " \ " repos_id INTEGER, " \ @@ -1356,246 +1677,511 @@ "CREATE TEMPORARY TRIGGER trigger_revert_list_actual_delete " \ "BEFORE DELETE ON actual_node " \ "BEGIN " \ - " INSERT OR REPLACE INTO revert_list(local_relpath, actual, conflict_old, " \ - " conflict_new, conflict_working, " \ - " prop_reject, notify) " \ - " SELECT OLD.local_relpath, 1, " \ - " OLD.conflict_old, OLD.conflict_new, OLD.conflict_working, " \ - " OLD.prop_reject, " \ + " INSERT OR REPLACE INTO revert_list(local_relpath, actual, conflict_data, " \ + " notify) " \ + " SELECT OLD.local_relpath, 1, OLD.conflict_data, " \ " CASE " \ - " WHEN OLD.properties IS NOT NULL OR OLD.tree_conflict_data IS NOT NULL " \ - " THEN 1 ELSE NULL END; " \ + " WHEN OLD.properties IS NOT NULL " \ + " THEN 1 " \ + " WHEN NOT EXISTS(SELECT 1 FROM NODES n " \ + " WHERE n.wc_id = OLD.wc_id " \ + " AND n.local_relpath = OLD.local_relpath) " \ + " THEN 1 " \ + " ELSE NULL " \ + " END; " \ "END; " \ "DROP TRIGGER IF EXISTS trigger_revert_list_actual_update; " \ "CREATE TEMPORARY TRIGGER trigger_revert_list_actual_update " \ "BEFORE UPDATE ON actual_node " \ "BEGIN " \ - " INSERT OR REPLACE INTO revert_list(local_relpath, actual, conflict_old, " \ - " conflict_new, conflict_working, " \ - " prop_reject, notify) " \ - " SELECT OLD.local_relpath, 1, " \ - " OLD.conflict_old, OLD.conflict_new, OLD.conflict_working, " \ - " OLD.prop_reject, " \ + " INSERT OR REPLACE INTO revert_list(local_relpath, actual, conflict_data, " \ + " notify) " \ + " SELECT OLD.local_relpath, 1, OLD.conflict_data, " \ " CASE " \ - " WHEN OLD.properties IS NOT NULL OR OLD.tree_conflict_data IS NOT NULL " \ - " THEN 1 ELSE NULL END; " \ + " WHEN OLD.properties IS NOT NULL " \ + " THEN 1 " \ + " WHEN NOT EXISTS(SELECT 1 FROM NODES n " \ + " WHERE n.wc_id = OLD.wc_id " \ + " AND n.local_relpath = OLD.local_relpath) " \ + " THEN 1 " \ + " ELSE NULL " \ + " END; " \ "END " \ "" -#define STMT_DROP_REVERT_LIST_TRIGGERS 152 -#define STMT_152 \ - "DROP TRIGGER IF EXISTS trigger_revert_list_nodes; " \ - "DROP TRIGGER IF EXISTS trigger_revert_list_actual_delete; " \ - "DROP TRIGGER IF EXISTS trigger_revert_list_actual_update " \ +#define STMT_DROP_REVERT_LIST_TRIGGERS 161 +#define STMT_161_INFO {"STMT_DROP_REVERT_LIST_TRIGGERS", NULL} +#define STMT_161 \ + "DROP TRIGGER trigger_revert_list_nodes; " \ + "DROP TRIGGER trigger_revert_list_actual_delete; " \ + "DROP TRIGGER trigger_revert_list_actual_update " \ "" -#define STMT_SELECT_REVERT_LIST 153 -#define STMT_153 \ - "SELECT conflict_old, conflict_new, conflict_working, prop_reject, notify, " \ - " actual, op_depth, repos_id, kind " \ +#define STMT_SELECT_REVERT_LIST 162 +#define STMT_162_INFO {"STMT_SELECT_REVERT_LIST", NULL} +#define STMT_162 \ + "SELECT actual, notify, kind, op_depth, repos_id, conflict_data " \ "FROM revert_list " \ "WHERE local_relpath = ?1 " \ "ORDER BY actual DESC " \ "" -#define STMT_SELECT_REVERT_LIST_COPIED_CHILDREN 154 -#define STMT_154 \ +#define STMT_SELECT_REVERT_LIST_COPIED_CHILDREN 163 +#define STMT_163_INFO {"STMT_SELECT_REVERT_LIST_COPIED_CHILDREN", NULL} +#define STMT_163 \ "SELECT local_relpath, kind " \ "FROM revert_list " \ - "WHERE local_relpath LIKE ?1 ESCAPE '#' " \ + "WHERE (((local_relpath) > (CASE (?1) WHEN '' THEN '' ELSE (?1) || '/' END)) AND ((local_relpath) < CASE (?1) WHEN '' THEN X'FFFF' ELSE (?1) || '0' END)) " \ " AND op_depth >= ?2 " \ " AND repos_id IS NOT NULL " \ "ORDER BY local_relpath " \ "" -#define STMT_DELETE_REVERT_LIST 155 -#define STMT_155 \ +#define STMT_DELETE_REVERT_LIST 164 +#define STMT_164_INFO {"STMT_DELETE_REVERT_LIST", NULL} +#define STMT_164 \ "DELETE FROM revert_list WHERE local_relpath = ?1 " \ "" -#define STMT_SELECT_REVERT_LIST_RECURSIVE 156 -#define STMT_156 \ +#define STMT_SELECT_REVERT_LIST_RECURSIVE 165 +#define STMT_165_INFO {"STMT_SELECT_REVERT_LIST_RECURSIVE", NULL} +#define STMT_165 \ "SELECT DISTINCT local_relpath " \ "FROM revert_list " \ - "WHERE (local_relpath = ?1 OR local_relpath LIKE ?2 ESCAPE '#') " \ + "WHERE (local_relpath = ?1 " \ + " OR (((local_relpath) > (CASE (?1) WHEN '' THEN '' ELSE (?1) || '/' END)) AND ((local_relpath) < CASE (?1) WHEN '' THEN X'FFFF' ELSE (?1) || '0' END))) " \ " AND (notify OR actual = 0) " \ "ORDER BY local_relpath " \ "" -#define STMT_DELETE_REVERT_LIST_RECURSIVE 157 -#define STMT_157 \ +#define STMT_DELETE_REVERT_LIST_RECURSIVE 166 +#define STMT_166_INFO {"STMT_DELETE_REVERT_LIST_RECURSIVE", NULL} +#define STMT_166 \ "DELETE FROM revert_list " \ - "WHERE local_relpath = ?1 OR local_relpath LIKE ?2 ESCAPE '#' " \ + "WHERE (local_relpath = ?1 " \ + " OR (((local_relpath) > (CASE (?1) WHEN '' THEN '' ELSE (?1) || '/' END)) AND ((local_relpath) < CASE (?1) WHEN '' THEN X'FFFF' ELSE (?1) || '0' END))) " \ "" -#define STMT_DROP_REVERT_LIST 158 -#define STMT_158 \ +#define STMT_DROP_REVERT_LIST 167 +#define STMT_167_INFO {"STMT_DROP_REVERT_LIST", NULL} +#define STMT_167 \ "DROP TABLE IF EXISTS revert_list " \ "" -#define STMT_CREATE_DELETE_LIST 159 -#define STMT_159 \ +#define STMT_CREATE_DELETE_LIST 168 +#define STMT_168_INFO {"STMT_CREATE_DELETE_LIST", NULL} +#define STMT_168 \ "DROP TABLE IF EXISTS delete_list; " \ "CREATE TEMPORARY TABLE delete_list ( " \ - " local_relpath TEXT PRIMARY KEY NOT NULL " \ + " local_relpath TEXT PRIMARY KEY NOT NULL UNIQUE " \ " ) " \ "" -#define STMT_INSERT_DELETE_LIST 160 -#define STMT_160 \ +#define STMT_INSERT_DELETE_LIST 169 +#define STMT_169_INFO {"STMT_INSERT_DELETE_LIST", NULL} +#define STMT_169 \ "INSERT INTO delete_list(local_relpath) " \ - "SELECT local_relpath FROM nodes n " \ + "SELECT local_relpath FROM nodes AS n " \ "WHERE wc_id = ?1 " \ " AND (local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + " OR (((local_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((local_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END))) " \ " AND op_depth >= ?3 " \ - " AND presence NOT IN ('base-deleted', 'not-present', 'excluded', 'absent') " \ - " AND op_depth = (SELECT MAX(op_depth) FROM nodes s " \ - " WHERE s.wc_id = n.wc_id " \ + " AND op_depth = (SELECT MAX(s.op_depth) FROM nodes AS s " \ + " WHERE s.wc_id = ?1 " \ " AND s.local_relpath = n.local_relpath) " \ + " AND presence NOT IN ('base-deleted', 'not-present', 'excluded', 'server-excluded') " \ + " AND file_external IS NULL " \ "" -#define STMT_SELECT_DELETE_LIST 161 -#define STMT_161 \ +#define STMT_SELECT_DELETE_LIST 170 +#define STMT_170_INFO {"STMT_SELECT_DELETE_LIST", NULL} +#define STMT_170 \ "SELECT local_relpath FROM delete_list " \ "ORDER BY local_relpath " \ "" -#define STMT_FINALIZE_DELETE 162 -#define STMT_162 \ +#define STMT_FINALIZE_DELETE 171 +#define STMT_171_INFO {"STMT_FINALIZE_DELETE", NULL} +#define STMT_171 \ "DROP TABLE IF EXISTS delete_list " \ "" -#define STMT_SELECT_MIN_MAX_REVISIONS 163 -#define STMT_163 \ +#define STMT_CREATE_UPDATE_MOVE_LIST 172 +#define STMT_172_INFO {"STMT_CREATE_UPDATE_MOVE_LIST", NULL} +#define STMT_172 \ + "DROP TABLE IF EXISTS update_move_list; " \ + "CREATE TEMPORARY TABLE update_move_list ( " \ + " local_relpath TEXT PRIMARY KEY NOT NULL UNIQUE, " \ + " action INTEGER NOT NULL, " \ + " kind INTEGER NOT NULL, " \ + " content_state INTEGER NOT NULL, " \ + " prop_state INTEGER NOT NULL " \ + " ) " \ + "" + +#define STMT_INSERT_UPDATE_MOVE_LIST 173 +#define STMT_173_INFO {"STMT_INSERT_UPDATE_MOVE_LIST", NULL} +#define STMT_173 \ + "INSERT INTO update_move_list(local_relpath, action, kind, content_state, " \ + " prop_state) " \ + "VALUES (?1, ?2, ?3, ?4, ?5) " \ + "" + +#define STMT_SELECT_UPDATE_MOVE_LIST 174 +#define STMT_174_INFO {"STMT_SELECT_UPDATE_MOVE_LIST", NULL} +#define STMT_174 \ + "SELECT local_relpath, action, kind, content_state, prop_state " \ + "FROM update_move_list " \ + "ORDER BY local_relpath " \ + "" + +#define STMT_FINALIZE_UPDATE_MOVE 175 +#define STMT_175_INFO {"STMT_FINALIZE_UPDATE_MOVE", NULL} +#define STMT_175 \ + "DROP TABLE IF EXISTS update_move_list " \ + "" + +#define STMT_SELECT_MIN_MAX_REVISIONS 176 +#define STMT_176_INFO {"STMT_SELECT_MIN_MAX_REVISIONS", NULL} +#define STMT_176 \ "SELECT MIN(revision), MAX(revision), " \ " MIN(changed_revision), MAX(changed_revision) FROM nodes " \ " WHERE wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + " 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))) " \ " AND presence IN ('normal', 'incomplete') " \ " AND file_external IS NULL " \ " AND op_depth = 0 " \ "" -#define STMT_HAS_SPARSE_NODES 164 -#define STMT_164 \ +#define STMT_HAS_SPARSE_NODES 177 +#define STMT_177_INFO {"STMT_HAS_SPARSE_NODES", NULL} +#define STMT_177 \ "SELECT 1 FROM nodes " \ "WHERE wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + " 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))) " \ " AND op_depth = 0 " \ - " AND (presence IN ('absent', 'excluded') " \ + " AND (presence IN ('server-excluded', 'excluded') " \ " OR depth NOT IN ('infinity', 'unknown')) " \ " AND file_external IS NULL " \ "LIMIT 1 " \ "" -#define STMT_SUBTREE_HAS_TREE_MODIFICATIONS 165 -#define STMT_165 \ +#define STMT_SUBTREE_HAS_TREE_MODIFICATIONS 178 +#define STMT_178_INFO {"STMT_SUBTREE_HAS_TREE_MODIFICATIONS", NULL} +#define STMT_178 \ "SELECT 1 FROM nodes " \ "WHERE wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + " 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))) " \ " AND op_depth > 0 " \ "LIMIT 1 " \ "" -#define STMT_SUBTREE_HAS_PROP_MODIFICATIONS 166 -#define STMT_166 \ +#define STMT_SUBTREE_HAS_PROP_MODIFICATIONS 179 +#define STMT_179_INFO {"STMT_SUBTREE_HAS_PROP_MODIFICATIONS", NULL} +#define STMT_179 \ "SELECT 1 FROM actual_node " \ "WHERE wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + " 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))) " \ " AND properties IS NOT NULL " \ "LIMIT 1 " \ "" -#define STMT_HAS_SWITCHED 167 -#define STMT_167 \ - "SELECT o.repos_path || '/' || SUBSTR(s.local_relpath, LENGTH(?2)+2) AS expected " \ - "FROM nodes AS o " \ - "LEFT JOIN nodes AS s " \ - "ON o.wc_id = s.wc_id " \ - " AND ((s.local_relpath) > (?2) || '/' AND (s.local_relpath) < (?2) || '0') " \ - " AND s.op_depth = 0 " \ - " AND s.repos_id = o.repos_id " \ - " AND s.file_external IS NULL " \ - "WHERE o.wc_id = ?1 AND o.local_relpath=?2 AND o.op_depth=0 " \ - " AND s.repos_path != expected " \ +#define STMT_HAS_SWITCHED 180 +#define STMT_180_INFO {"STMT_HAS_SWITCHED", NULL} +#define STMT_180 \ + "SELECT 1 " \ + "FROM nodes " \ + "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)) " \ + " AND op_depth = 0 " \ + " AND file_external IS NULL " \ + " AND presence IN ('normal', 'incomplete') " \ + " 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) " \ "LIMIT 1 " \ "" -#define STMT_HAS_SWITCHED_REPOS_ROOT 168 -#define STMT_168 \ - "SELECT SUBSTR(s.local_relpath, LENGTH(?2)+2) AS expected " \ - "FROM nodes AS o " \ - "LEFT JOIN nodes AS s " \ - "ON o.wc_id = s.wc_id " \ - " AND ((s.local_relpath) > (?2) || '/' AND (s.local_relpath) < (?2) || '0') " \ - " AND s.op_depth = 0 " \ - " AND s.repos_id = o.repos_id " \ - " AND s.file_external IS NULL " \ - "WHERE o.wc_id = ?1 AND o.local_relpath=?2 AND o.op_depth=0 " \ - " AND s.repos_path != expected " \ - "LIMIT 1 " \ +#define STMT_SELECT_BASE_FILES_RECURSIVE 181 +#define STMT_181_INFO {"STMT_SELECT_BASE_FILES_RECURSIVE", NULL} +#define STMT_181 \ + "SELECT local_relpath, translated_size, last_mod_time FROM nodes AS n " \ + "WHERE wc_id = ?1 " \ + " 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))) " \ + " AND op_depth = 0 " \ + " AND kind='file' " \ + " AND presence='normal' " \ + " AND file_external IS NULL " \ "" -#define STMT_HAS_SWITCHED_WCROOT 169 -#define STMT_169 \ - "SELECT o.repos_path || '/' || s.local_relpath AS expected " \ - "FROM nodes AS o " \ - "LEFT JOIN nodes AS s " \ - "ON o.wc_id = s.wc_id " \ - " AND s.local_relpath != '' " \ - " AND s.op_depth = 0 " \ - " AND s.repos_id = o.repos_id " \ - " AND s.file_external IS NULL " \ - "WHERE o.wc_id = ?1 AND o.local_relpath=?2 AND o.op_depth=0 " \ - " AND s.repos_path != expected " \ - "LIMIT 1 " \ +#define STMT_SELECT_MOVED_FROM_RELPATH 182 +#define STMT_182_INFO {"STMT_SELECT_MOVED_FROM_RELPATH", NULL} +#define STMT_182 \ + "SELECT local_relpath, op_depth FROM nodes " \ + "WHERE wc_id = ?1 AND moved_to = ?2 AND op_depth > 0 " \ "" -#define STMT_HAS_SWITCHED_WCROOT_REPOS_ROOT 170 -#define STMT_170 \ - "SELECT s.local_relpath AS expected " \ - "FROM nodes AS o " \ - "LEFT JOIN nodes AS s " \ - "ON o.wc_id = s.wc_id " \ - " AND s.local_relpath != '' " \ - " AND s.op_depth = 0 " \ - " AND s.repos_id = o.repos_id " \ - " AND s.file_external IS NULL " \ - "WHERE o.wc_id = ?1 AND o.local_relpath=?2 AND o.op_depth=0 " \ - " AND s.repos_path != expected " \ - "LIMIT 1 " \ +#define STMT_UPDATE_MOVED_TO_RELPATH 183 +#define STMT_183_INFO {"STMT_UPDATE_MOVED_TO_RELPATH", NULL} +#define STMT_183 \ + "UPDATE nodes SET moved_to = ?4 " \ + "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \ "" -#define STMT_SELECT_BASE_FILES_RECURSIVE 171 -#define STMT_171 \ - "SELECT local_relpath, translated_size, last_mod_time FROM nodes AS n " \ +#define STMT_CLEAR_MOVED_TO_RELPATH 184 +#define STMT_184_INFO {"STMT_CLEAR_MOVED_TO_RELPATH", NULL} +#define STMT_184 \ + "UPDATE nodes SET moved_to = NULL " \ + "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?3 " \ + "" + +#define STMT_CLEAR_MOVED_HERE_RECURSIVE 185 +#define STMT_185_INFO {"STMT_CLEAR_MOVED_HERE_RECURSIVE", NULL} +#define STMT_185 \ + "UPDATE nodes SET moved_here = NULL " \ + "WHERE wc_id = ?1 " \ + " 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))) " \ + " AND op_depth = ?3 " \ + "" + +#define STMT_SELECT_MOVED_HERE_CHILDREN 186 +#define STMT_186_INFO {"STMT_SELECT_MOVED_HERE_CHILDREN", NULL} +#define STMT_186 \ + "SELECT moved_to, local_relpath FROM nodes " \ + "WHERE wc_id = ?1 AND op_depth > 0 " \ + " AND (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ + "" + +#define STMT_SELECT_MOVED_FOR_DELETE 187 +#define STMT_187_INFO {"STMT_SELECT_MOVED_FOR_DELETE", NULL} +#define STMT_187 \ + "SELECT local_relpath, moved_to, op_depth, " \ + " (SELECT CASE WHEN r.moved_here THEN r.op_depth END FROM nodes r " \ + " WHERE r.wc_id = ?1 " \ + " AND r.local_relpath = n.local_relpath " \ + " AND r.op_depth < n.op_depth " \ + " ORDER BY r.op_depth DESC LIMIT 1) AS moved_here_op_depth " \ + " FROM nodes n " \ "WHERE wc_id = ?1 " \ - " AND (?2 = '' " \ - " OR local_relpath = ?2 " \ - " OR ((local_relpath) > (?2) || '/' AND (local_relpath) < (?2) || '0') ) " \ + " 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))) " \ + " AND moved_to IS NOT NULL " \ + " AND op_depth >= ?3 " \ + "" + +#define STMT_SELECT_MOVED_FROM_FOR_DELETE 188 +#define STMT_188_INFO {"STMT_SELECT_MOVED_FROM_FOR_DELETE", NULL} +#define STMT_188 \ + "SELECT local_relpath, op_depth, " \ + " (SELECT CASE WHEN r.moved_here THEN r.op_depth END FROM nodes r " \ + " WHERE r.wc_id = ?1 " \ + " AND r.local_relpath = n.local_relpath " \ + " AND r.op_depth < n.op_depth " \ + " ORDER BY r.op_depth DESC LIMIT 1) AS moved_here_op_depth " \ + " FROM nodes n " \ + "WHERE wc_id = ?1 AND moved_to = ?2 AND op_depth > 0 " \ + "" + +#define STMT_UPDATE_MOVED_TO_DESCENDANTS 189 +#define STMT_189_INFO {"STMT_UPDATE_MOVED_TO_DESCENDANTS", NULL} +#define STMT_189 \ + "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) " \ + " WHERE wc_id = ?1 " \ + " AND (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ + "" + +#define STMT_CLEAR_MOVED_TO_DESCENDANTS 190 +#define STMT_190_INFO {"STMT_CLEAR_MOVED_TO_DESCENDANTS", NULL} +#define STMT_190 \ + "UPDATE nodes SET moved_to = NULL " \ + " WHERE wc_id = ?1 " \ + " AND (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ + "" + +#define STMT_SELECT_MOVED_PAIR2 191 +#define STMT_191_INFO {"STMT_SELECT_MOVED_PAIR2", NULL} +#define STMT_191 \ + "SELECT local_relpath, moved_to, op_depth FROM nodes " \ + "WHERE wc_id = ?1 " \ + " 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))) " \ + " AND moved_to IS NOT NULL " \ + " AND NOT (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ + " AND op_depth >= (SELECT MAX(op_depth) FROM nodes o " \ + " WHERE o.wc_id = ?1 " \ + " AND o.local_relpath = ?2) " \ + "" + +#define STMT_SELECT_MOVED_PAIR3 192 +#define STMT_192_INFO {"STMT_SELECT_MOVED_PAIR3", NULL} +#define STMT_192 \ + "SELECT local_relpath, moved_to, op_depth, kind FROM nodes " \ + "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > ?3 " \ + " AND moved_to IS NOT NULL " \ + "UNION ALL " \ + "SELECT local_relpath, moved_to, op_depth, kind FROM nodes " \ + "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)) " \ + " AND op_depth > ?3 " \ + " AND moved_to IS NOT NULL " \ + "ORDER BY local_relpath, op_depth " \ + "" + +#define STMT_SELECT_MOVED_OUTSIDE 193 +#define STMT_193_INFO {"STMT_SELECT_MOVED_OUTSIDE", NULL} +#define STMT_193 \ + "SELECT local_relpath, moved_to, op_depth FROM nodes " \ + "WHERE wc_id = ?1 " \ + " 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))) " \ + " AND op_depth >= ?3 " \ + " AND moved_to IS NOT NULL " \ + " AND NOT (((moved_to) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((moved_to) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ + "" + +#define STMT_SELECT_OP_DEPTH_MOVED_PAIR 194 +#define STMT_194_INFO {"STMT_SELECT_OP_DEPTH_MOVED_PAIR", NULL} +#define STMT_194 \ + "SELECT n.local_relpath, n.moved_to, " \ + " (SELECT o.repos_path FROM nodes AS o " \ + " WHERE o.wc_id = n.wc_id " \ + " AND o.local_relpath = n.local_relpath " \ + " AND o.op_depth < ?3 ORDER BY o.op_depth DESC LIMIT 1) " \ + "FROM nodes AS n " \ + "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)) " \ + " AND n.op_depth = ?3 " \ + " AND n.moved_to IS NOT NULL " \ + "" + +#define STMT_SELECT_MOVED_DESCENDANTS 195 +#define STMT_195_INFO {"STMT_SELECT_MOVED_DESCENDANTS", NULL} +#define STMT_195 \ + "SELECT n.local_relpath, h.moved_to " \ + "FROM nodes n, nodes h " \ + "WHERE n.wc_id = ?1 " \ + " AND h.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)) " \ + " AND h.local_relpath = n.local_relpath " \ + " AND n.op_depth = ?3 " \ + " AND h.op_depth = (SELECT MIN(o.op_depth) " \ + " FROM nodes o " \ + " WHERE o.wc_id = ?1 " \ + " AND o.local_relpath = n.local_relpath " \ + " AND o.op_depth > ?3) " \ + " AND h.moved_to IS NOT NULL " \ + "" + +#define STMT_COMMIT_UPDATE_ORIGIN 196 +#define STMT_196_INFO {"STMT_COMMIT_UPDATE_ORIGIN", NULL} +#define STMT_196 \ + "UPDATE nodes SET repos_id = ?4, " \ + " repos_path = ?5 || SUBSTR(local_relpath, LENGTH(?2)+1), " \ + " revision = ?6 " \ + "WHERE wc_id = ?1 " \ + " 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))) " \ + " AND op_depth = ?3 " \ + "" + +#define STMT_HAS_LAYER_BETWEEN 197 +#define STMT_197_INFO {"STMT_HAS_LAYER_BETWEEN", NULL} +#define STMT_197 \ + "SELECT 1 FROM NODES " \ + "WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth > ?3 AND op_depth < ?4 " \ + "" + +#define STMT_SELECT_REPOS_PATH_REVISION 198 +#define STMT_198_INFO {"STMT_SELECT_REPOS_PATH_REVISION", NULL} +#define STMT_198 \ + "SELECT local_relpath, repos_path, revision FROM nodes " \ + "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)) " \ + " AND op_depth = 0 " \ + "ORDER BY local_relpath " \ + "" + +#define STMT_SELECT_HAS_NON_FILE_CHILDREN 199 +#define STMT_199_INFO {"STMT_SELECT_HAS_NON_FILE_CHILDREN", NULL} +#define STMT_199 \ + "SELECT 1 FROM nodes " \ + "WHERE wc_id = ?1 AND parent_relpath = ?2 AND op_depth = 0 AND kind != 'file' " \ + "" + +#define STMT_SELECT_HAS_GRANDCHILDREN 200 +#define STMT_200_INFO {"STMT_SELECT_HAS_GRANDCHILDREN", NULL} +#define STMT_200 \ + "SELECT 1 FROM nodes " \ + "WHERE wc_id = ?1 " \ + " AND (((parent_relpath) > (CASE (?2) WHEN '' THEN '' ELSE (?2) || '/' END)) AND ((parent_relpath) < CASE (?2) WHEN '' THEN X'FFFF' ELSE (?2) || '0' END)) " \ " AND op_depth = 0 " \ - " AND kind='file' " \ - " AND presence='normal' " \ " AND file_external IS NULL " \ "" -#define STMT_SELECT_ALL_NODES 172 -#define STMT_172 \ +#define STMT_SELECT_ALL_NODES 201 +#define STMT_201_INFO {"STMT_SELECT_ALL_NODES", NULL} +#define STMT_201 \ "SELECT op_depth, local_relpath, parent_relpath, file_external FROM nodes " \ - "WHERE wc_id == ?1 " \ + "WHERE wc_id = ?1 " \ "" -#define STMT_CREATE_SCHEMA 173 -#define STMT_173 \ +#define STMT_SELECT_IPROPS 202 +#define STMT_202_INFO {"STMT_SELECT_IPROPS", NULL} +#define STMT_202 \ + "SELECT inherited_props FROM nodes " \ + "WHERE wc_id = ?1 " \ + " AND local_relpath = ?2 " \ + " AND op_depth = 0 " \ + "" + +#define STMT_UPDATE_IPROP 203 +#define STMT_203_INFO {"STMT_UPDATE_IPROP", NULL} +#define STMT_203 \ + "UPDATE nodes " \ + "SET inherited_props = ?3 " \ + "WHERE (wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0) " \ + "" + +#define STMT_SELECT_IPROPS_NODE 204 +#define STMT_204_INFO {"STMT_SELECT_IPROPS_NODE", NULL} +#define STMT_204 \ + "SELECT local_relpath, repos_path FROM nodes " \ + "WHERE wc_id = ?1 " \ + " AND local_relpath = ?2 " \ + " AND op_depth = 0 " \ + " AND (inherited_props not null) " \ + "" + +#define STMT_SELECT_IPROPS_RECURSIVE 205 +#define STMT_205_INFO {"STMT_SELECT_IPROPS_RECURSIVE", NULL} +#define STMT_205 \ + "SELECT local_relpath, repos_path FROM nodes " \ + "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)) " \ + " AND op_depth = 0 " \ + " AND (inherited_props not null) " \ + "" + +#define STMT_SELECT_IPROPS_CHILDREN 206 +#define STMT_206_INFO {"STMT_SELECT_IPROPS_CHILDREN", NULL} +#define STMT_206 \ + "SELECT local_relpath, repos_path FROM nodes " \ + "WHERE wc_id = ?1 " \ + " AND parent_relpath = ?2 " \ + " AND op_depth = 0 " \ + " AND (inherited_props not null) " \ + "" + +#define STMT_HAVE_STAT1_TABLE 207 +#define STMT_207_INFO {"STMT_HAVE_STAT1_TABLE", NULL} +#define STMT_207 \ + "SELECT 1 FROM sqlite_master WHERE name='sqlite_stat1' AND type='table' " \ + "LIMIT 1 " \ + "" + +#define STMT_CREATE_SCHEMA 208 +#define STMT_208_INFO {"STMT_CREATE_SCHEMA", NULL} +#define STMT_208 \ "CREATE TABLE REPOSITORY ( " \ " id INTEGER PRIMARY KEY AUTOINCREMENT, " \ " root TEXT UNIQUE NOT NULL, " \ @@ -1615,6 +2201,7 @@ " refcount INTEGER NOT NULL, " \ " md5_checksum TEXT NOT NULL " \ " ); " \ + "CREATE INDEX I_PRISTINE_MD5 ON PRISTINE (md5_checksum); " \ "CREATE TABLE ACTUAL_NODE ( " \ " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \ " local_relpath TEXT NOT NULL, " \ @@ -1633,8 +2220,8 @@ " right_checksum TEXT REFERENCES PRISTINE (checksum), " \ " PRIMARY KEY (wc_id, local_relpath) " \ " ); " \ - "CREATE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath); " \ - "CREATE INDEX I_ACTUAL_CHANGELIST ON ACTUAL_NODE (changelist); " \ + "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \ + " local_relpath); " \ "CREATE TABLE LOCK ( " \ " repos_id INTEGER NOT NULL REFERENCES REPOSITORY (id), " \ " repos_relpath TEXT NOT NULL, " \ @@ -1659,8 +2246,9 @@ "; " \ "" -#define STMT_CREATE_NODES 174 -#define STMT_174 \ +#define STMT_CREATE_NODES 209 +#define STMT_209_INFO {"STMT_CREATE_NODES", NULL} +#define STMT_209 \ "CREATE TABLE NODES ( " \ " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \ " local_relpath TEXT NOT NULL, " \ @@ -1683,10 +2271,13 @@ " translated_size INTEGER, " \ " last_mod_time INTEGER, " \ " dav_cache BLOB, " \ - " file_external TEXT, " \ + " file_external INTEGER, " \ + " inherited_props BLOB, " \ " PRIMARY KEY (wc_id, local_relpath, op_depth) " \ " ); " \ - "CREATE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, op_depth); " \ + "CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, " \ + " local_relpath, op_depth); " \ + "CREATE UNIQUE INDEX I_NODES_MOVED ON NODES (wc_id, moved_to, op_depth); " \ "CREATE VIEW NODES_CURRENT AS " \ " SELECT * FROM nodes AS n " \ " WHERE op_depth = (SELECT MAX(op_depth) FROM nodes AS n2 " \ @@ -1697,8 +2288,9 @@ " WHERE op_depth = 0; " \ "" -#define STMT_CREATE_NODES_TRIGGERS 175 -#define STMT_175 \ +#define STMT_CREATE_NODES_TRIGGERS 210 +#define STMT_210_INFO {"STMT_CREATE_NODES_TRIGGERS", NULL} +#define STMT_210 \ "CREATE TRIGGER nodes_insert_trigger " \ "AFTER INSERT ON nodes " \ "WHEN NEW.checksum IS NOT NULL " \ @@ -1724,8 +2316,9 @@ "END; " \ "" -#define STMT_CREATE_EXTERNALS 176 -#define STMT_176 \ +#define STMT_CREATE_EXTERNALS 211 +#define STMT_211_INFO {"STMT_CREATE_EXTERNALS", NULL} +#define STMT_211 \ "CREATE TABLE EXTERNALS ( " \ " wc_id INTEGER NOT NULL REFERENCES WCROOT (id), " \ " local_relpath TEXT NOT NULL, " \ @@ -1739,20 +2332,44 @@ " def_revision TEXT, " \ " PRIMARY KEY (wc_id, local_relpath) " \ "); " \ - "CREATE INDEX I_EXTERNALS_PARENT ON EXTERNALS (wc_id, parent_relpath); " \ "CREATE UNIQUE INDEX I_EXTERNALS_DEFINED ON EXTERNALS (wc_id, " \ " def_local_relpath, " \ " local_relpath); " \ "" -#define STMT_UPGRADE_TO_20 177 -#define STMT_177 \ - "UPDATE BASE_NODE SET checksum=(SELECT checksum FROM pristine " \ - " WHERE md5_checksum=BASE_NODE.checksum) " \ - "WHERE EXISTS(SELECT 1 FROM pristine WHERE md5_checksum=BASE_NODE.checksum); " \ - "UPDATE WORKING_NODE SET checksum=(SELECT checksum FROM pristine " \ - " WHERE md5_checksum=WORKING_NODE.checksum) " \ - "WHERE EXISTS(SELECT 1 FROM pristine WHERE md5_checksum=WORKING_NODE.checksum); " \ +#define STMT_INSTALL_SCHEMA_STATISTICS 212 +#define STMT_212_INFO {"STMT_INSTALL_SCHEMA_STATISTICS", NULL} +#define STMT_212 \ + "ANALYZE sqlite_master; " \ + "DELETE FROM sqlite_stat1 " \ + "WHERE tbl in ('NODES', 'ACTUAL_NODE', 'LOCK', 'WC_LOCK'); " \ + "INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES " \ + " ('NODES', 'sqlite_autoindex_NODES_1', '8000 8000 2 1'); " \ + "INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES " \ + " ('NODES', 'I_NODES_PARENT', '8000 8000 10 2 1'); " \ + "INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES " \ + " ('NODES', 'I_NODES_MOVED', '8000 8000 1 1'); " \ + "INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES " \ + " ('ACTUAL_NODE', 'sqlite_autoindex_ACTUAL_NODE_1', '8000 8000 1'); " \ + "INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES " \ + " ('ACTUAL_NODE', 'I_ACTUAL_PARENT', '8000 8000 10 1'); " \ + "INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES " \ + " ('LOCK', 'sqlite_autoindex_LOCK_1', '100 100 1'); " \ + "INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES " \ + " ('WC_LOCK', 'sqlite_autoindex_WC_LOCK_1', '100 100 1'); " \ + "ANALYZE sqlite_master; " \ + "" + +#define STMT_UPGRADE_TO_20 213 +#define STMT_213_INFO {"STMT_UPGRADE_TO_20", NULL} +#define STMT_213 \ + "UPDATE BASE_NODE SET checksum = (SELECT checksum FROM pristine " \ + " WHERE md5_checksum = BASE_NODE.checksum) " \ + "WHERE EXISTS (SELECT 1 FROM pristine WHERE md5_checksum = BASE_NODE.checksum); " \ + "UPDATE WORKING_NODE SET checksum = (SELECT checksum FROM pristine " \ + " WHERE md5_checksum = WORKING_NODE.checksum) " \ + "WHERE EXISTS (SELECT 1 FROM pristine " \ + " WHERE md5_checksum = WORKING_NODE.checksum); " \ "INSERT INTO NODES ( " \ " wc_id, local_relpath, op_depth, parent_relpath, " \ " repos_id, repos_path, revision, " \ @@ -1786,33 +2403,59 @@ "PRAGMA user_version = 20; " \ "" -#define STMT_UPGRADE_TO_21 178 -#define STMT_178 \ +#define STMT_UPGRADE_TO_21 214 +#define STMT_214_INFO {"STMT_UPGRADE_TO_21", NULL} +#define STMT_214 \ "PRAGMA user_version = 21; " \ "" -#define STMT_UPGRADE_TO_22 179 -#define STMT_179 \ +#define STMT_UPGRADE_21_SELECT_OLD_TREE_CONFLICT 215 +#define STMT_215_INFO {"STMT_UPGRADE_21_SELECT_OLD_TREE_CONFLICT", NULL} +#define STMT_215 \ + "SELECT wc_id, local_relpath, tree_conflict_data " \ + "FROM actual_node " \ + "WHERE tree_conflict_data IS NOT NULL " \ + "" + +#define STMT_UPGRADE_21_ERASE_OLD_CONFLICTS 216 +#define STMT_216_INFO {"STMT_UPGRADE_21_ERASE_OLD_CONFLICTS", NULL} +#define STMT_216 \ + "UPDATE actual_node SET tree_conflict_data = NULL " \ + "" + +#define STMT_UPGRADE_TO_22 217 +#define STMT_217_INFO {"STMT_UPGRADE_TO_22", NULL} +#define STMT_217 \ "UPDATE actual_node SET tree_conflict_data = conflict_data; " \ "UPDATE actual_node SET conflict_data = NULL; " \ "PRAGMA user_version = 22; " \ "" -#define STMT_UPGRADE_TO_23 180 -#define STMT_180 \ +#define STMT_UPGRADE_TO_23 218 +#define STMT_218_INFO {"STMT_UPGRADE_TO_23", NULL} +#define STMT_218 \ "PRAGMA user_version = 23; " \ "" -#define STMT_UPGRADE_TO_24 181 -#define STMT_181 \ +#define STMT_UPGRADE_23_HAS_WORKING_NODES 219 +#define STMT_219_INFO {"STMT_UPGRADE_23_HAS_WORKING_NODES", NULL} +#define STMT_219 \ + "SELECT 1 FROM nodes WHERE op_depth > 0 " \ + "LIMIT 1 " \ + "" + +#define STMT_UPGRADE_TO_24 220 +#define STMT_220_INFO {"STMT_UPGRADE_TO_24", NULL} +#define STMT_220 \ "UPDATE pristine SET refcount = " \ " (SELECT COUNT(*) FROM nodes " \ " WHERE checksum = pristine.checksum ); " \ "PRAGMA user_version = 24; " \ "" -#define STMT_UPGRADE_TO_25 182 -#define STMT_182 \ +#define STMT_UPGRADE_TO_25 221 +#define STMT_221_INFO {"STMT_UPGRADE_TO_25", NULL} +#define STMT_221 \ "DROP VIEW IF EXISTS NODES_CURRENT; " \ "CREATE VIEW NODES_CURRENT AS " \ " SELECT * FROM nodes " \ @@ -1824,8 +2467,9 @@ "PRAGMA user_version = 25; " \ "" -#define STMT_UPGRADE_TO_26 183 -#define STMT_183 \ +#define STMT_UPGRADE_TO_26 222 +#define STMT_222_INFO {"STMT_UPGRADE_TO_26", NULL} +#define STMT_222 \ "DROP VIEW IF EXISTS NODES_BASE; " \ "CREATE VIEW NODES_BASE AS " \ " SELECT * FROM nodes " \ @@ -1833,21 +2477,34 @@ "PRAGMA user_version = 26; " \ "" -#define STMT_UPGRADE_TO_27 184 -#define STMT_184 \ +#define STMT_UPGRADE_TO_27 223 +#define STMT_223_INFO {"STMT_UPGRADE_TO_27", NULL} +#define STMT_223 \ "PRAGMA user_version = 27; " \ "" -#define STMT_UPGRADE_TO_28 185 -#define STMT_185 \ - "UPDATE NODES SET checksum=(SELECT checksum FROM pristine " \ - " WHERE md5_checksum=nodes.checksum) " \ - "WHERE EXISTS(SELECT 1 FROM pristine WHERE md5_checksum=nodes.checksum); " \ +#define STMT_UPGRADE_27_HAS_ACTUAL_NODES_CONFLICTS 224 +#define STMT_224_INFO {"STMT_UPGRADE_27_HAS_ACTUAL_NODES_CONFLICTS", NULL} +#define STMT_224 \ + "SELECT 1 FROM actual_node " \ + "WHERE NOT ((prop_reject IS NULL) AND (conflict_old IS NULL) " \ + " AND (conflict_new IS NULL) AND (conflict_working IS NULL) " \ + " AND (tree_conflict_data IS NULL)) " \ + "LIMIT 1 " \ + "" + +#define STMT_UPGRADE_TO_28 225 +#define STMT_225_INFO {"STMT_UPGRADE_TO_28", NULL} +#define STMT_225 \ + "UPDATE NODES SET checksum = (SELECT checksum FROM pristine " \ + " WHERE md5_checksum = nodes.checksum) " \ + "WHERE EXISTS (SELECT 1 FROM pristine WHERE md5_checksum = nodes.checksum); " \ "PRAGMA user_version = 28; " \ "" -#define STMT_UPGRADE_TO_29 186 -#define STMT_186 \ +#define STMT_UPGRADE_TO_29 226 +#define STMT_226_INFO {"STMT_UPGRADE_TO_29", NULL} +#define STMT_226 \ "DROP TRIGGER IF EXISTS nodes_update_checksum_trigger; " \ "DROP TRIGGER IF EXISTS nodes_insert_trigger; " \ "DROP TRIGGER IF EXISTS nodes_delete_trigger; " \ @@ -1875,6 +2532,87 @@ " WHERE checksum = OLD.checksum; " \ "END; " \ "PRAGMA user_version = 29; " \ + "" + +#define STMT_UPGRADE_TO_30 227 +#define STMT_227_INFO {"STMT_UPGRADE_TO_30", NULL} +#define STMT_227 \ + "CREATE UNIQUE INDEX IF NOT EXISTS I_NODES_MOVED " \ + "ON NODES (wc_id, moved_to, op_depth); " \ + "CREATE INDEX IF NOT EXISTS I_PRISTINE_MD5 ON PRISTINE (md5_checksum); " \ + "UPDATE nodes SET presence = \"server-excluded\" WHERE presence = \"absent\"; " \ + "UPDATE nodes SET file_external=1 WHERE file_external IS NOT NULL; " \ + "" + +#define STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE 228 +#define STMT_228_INFO {"STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE", NULL} +#define STMT_228 \ + "SELECT wc_id, local_relpath, " \ + " conflict_old, conflict_working, conflict_new, prop_reject, tree_conflict_data " \ + "FROM actual_node " \ + "WHERE conflict_old IS NOT NULL " \ + " OR conflict_working IS NOT NULL " \ + " OR conflict_new IS NOT NULL " \ + " OR prop_reject IS NOT NULL " \ + " OR tree_conflict_data IS NOT NULL " \ + "ORDER by wc_id, local_relpath " \ + "" + +#define STMT_UPGRADE_30_SET_CONFLICT 229 +#define STMT_229_INFO {"STMT_UPGRADE_30_SET_CONFLICT", NULL} +#define STMT_229 \ + "UPDATE actual_node SET conflict_data = ?3, conflict_old = NULL, " \ + " conflict_working = NULL, conflict_new = NULL, prop_reject = NULL, " \ + " tree_conflict_data = NULL " \ + "WHERE wc_id = ?1 and local_relpath = ?2 " \ + "" + +#define STMT_UPGRADE_TO_31_ALTER_TABLE 230 +#define STMT_230_INFO {"STMT_UPGRADE_TO_31_ALTER_TABLE", NULL} +#define STMT_230 \ + "ALTER TABLE NODES ADD COLUMN inherited_props BLOB; " \ + "" + +#define STMT_UPGRADE_TO_31_FINALIZE 231 +#define STMT_231_INFO {"STMT_UPGRADE_TO_31_FINALIZE", NULL} +#define STMT_231 \ + "DROP INDEX IF EXISTS I_ACTUAL_CHANGELIST; " \ + "DROP INDEX IF EXISTS I_EXTERNALS_PARENT; " \ + "DROP INDEX I_NODES_PARENT; " \ + "CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, " \ + " local_relpath, op_depth); " \ + "DROP INDEX I_ACTUAL_PARENT; " \ + "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \ + " local_relpath); " \ + "PRAGMA user_version = 31; " \ + "" + +#define STMT_UPGRADE_31_SELECT_WCROOT_NODES 232 +#define STMT_232_INFO {"STMT_UPGRADE_31_SELECT_WCROOT_NODES", NULL} +#define STMT_232 \ + "SELECT l.wc_id, l.local_relpath FROM nodes as l " \ + "LEFT OUTER JOIN nodes as r " \ + "ON l.wc_id = r.wc_id " \ + " AND r.local_relpath = l.parent_relpath " \ + " AND r.op_depth = 0 " \ + "WHERE l.op_depth = 0 " \ + " AND l.repos_path != '' " \ + " AND ((l.repos_id IS NOT r.repos_id) " \ + " 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))) " \ + "" + +#define STMT_UPGRADE_TO_32 233 +#define STMT_233_INFO {"STMT_UPGRADE_TO_32", NULL} +#define STMT_233 \ + "DROP INDEX IF EXISTS I_ACTUAL_CHANGELIST; " \ + "DROP INDEX IF EXISTS I_EXTERNALS_PARENT; " \ + "CREATE INDEX I_EXTERNALS_PARENT ON EXTERNALS (wc_id, parent_relpath); " \ + "DROP INDEX I_NODES_PARENT; " \ + "CREATE UNIQUE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, " \ + " local_relpath, op_depth); " \ + "DROP INDEX I_ACTUAL_PARENT; " \ + "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \ + " local_relpath); " \ "-- format: YYY " \ "" @@ -1909,8 +2647,8 @@ " text_mod TEXT, " \ " PRIMARY KEY (wc_id, local_relpath) " \ " ); " \ - "CREATE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath); " \ - "CREATE INDEX I_ACTUAL_CHANGELIST ON ACTUAL_NODE (changelist); " \ + "CREATE UNIQUE INDEX I_ACTUAL_PARENT ON ACTUAL_NODE (wc_id, parent_relpath, " \ + " local_relpath); " \ "INSERT INTO ACTUAL_NODE SELECT " \ " wc_id, local_relpath, parent_relpath, properties, conflict_old, " \ " conflict_new, conflict_working, prop_reject, changelist, text_mod " \ @@ -1918,8 +2656,9 @@ "DROP TABLE ACTUAL_NODE_BACKUP; " \ "" -#define STMT_VERIFICATION_TRIGGERS 187 -#define STMT_187 \ +#define STMT_VERIFICATION_TRIGGERS 234 +#define STMT_234_INFO {"STMT_VERIFICATION_TRIGGERS", NULL} +#define STMT_234 \ "CREATE TEMPORARY TRIGGER no_repository_updates BEFORE UPDATE ON repository " \ "BEGIN " \ " SELECT RAISE(FAIL, 'Updates to REPOSITORY are not allowed.'); " \ @@ -2148,5 +2887,292 @@ STMT_185, \ STMT_186, \ STMT_187, \ + STMT_188, \ + STMT_189, \ + STMT_190, \ + STMT_191, \ + STMT_192, \ + STMT_193, \ + STMT_194, \ + STMT_195, \ + STMT_196, \ + STMT_197, \ + STMT_198, \ + STMT_199, \ + STMT_200, \ + STMT_201, \ + STMT_202, \ + STMT_203, \ + STMT_204, \ + STMT_205, \ + STMT_206, \ + STMT_207, \ + STMT_208, \ + STMT_209, \ + STMT_210, \ + STMT_211, \ + STMT_212, \ + STMT_213, \ + STMT_214, \ + STMT_215, \ + STMT_216, \ + STMT_217, \ + STMT_218, \ + STMT_219, \ + STMT_220, \ + STMT_221, \ + STMT_222, \ + STMT_223, \ + STMT_224, \ + STMT_225, \ + STMT_226, \ + STMT_227, \ + STMT_228, \ + STMT_229, \ + STMT_230, \ + STMT_231, \ + STMT_232, \ + STMT_233, \ + STMT_234, \ NULL \ } + +#define WC_QUERIES_SQL_DECLARE_STATEMENT_INFO(varname) \ + static const char * const varname[][2] = { \ + STMT_0_INFO, \ + STMT_1_INFO, \ + STMT_2_INFO, \ + STMT_3_INFO, \ + STMT_4_INFO, \ + STMT_5_INFO, \ + STMT_6_INFO, \ + STMT_7_INFO, \ + STMT_8_INFO, \ + STMT_9_INFO, \ + STMT_10_INFO, \ + STMT_11_INFO, \ + STMT_12_INFO, \ + STMT_13_INFO, \ + STMT_14_INFO, \ + STMT_15_INFO, \ + STMT_16_INFO, \ + STMT_17_INFO, \ + STMT_18_INFO, \ + STMT_19_INFO, \ + STMT_20_INFO, \ + STMT_21_INFO, \ + STMT_22_INFO, \ + STMT_23_INFO, \ + STMT_24_INFO, \ + STMT_25_INFO, \ + STMT_26_INFO, \ + STMT_27_INFO, \ + STMT_28_INFO, \ + STMT_29_INFO, \ + STMT_30_INFO, \ + STMT_31_INFO, \ + STMT_32_INFO, \ + STMT_33_INFO, \ + STMT_34_INFO, \ + STMT_35_INFO, \ + STMT_36_INFO, \ + STMT_37_INFO, \ + STMT_38_INFO, \ + STMT_39_INFO, \ + STMT_40_INFO, \ + STMT_41_INFO, \ + STMT_42_INFO, \ + STMT_43_INFO, \ + STMT_44_INFO, \ + STMT_45_INFO, \ + STMT_46_INFO, \ + STMT_47_INFO, \ + STMT_48_INFO, \ + STMT_49_INFO, \ + STMT_50_INFO, \ + STMT_51_INFO, \ + STMT_52_INFO, \ + STMT_53_INFO, \ + STMT_54_INFO, \ + STMT_55_INFO, \ + STMT_56_INFO, \ + STMT_57_INFO, \ + STMT_58_INFO, \ + STMT_59_INFO, \ + STMT_60_INFO, \ + STMT_61_INFO, \ + STMT_62_INFO, \ + STMT_63_INFO, \ + STMT_64_INFO, \ + STMT_65_INFO, \ + STMT_66_INFO, \ + STMT_67_INFO, \ + STMT_68_INFO, \ + STMT_69_INFO, \ + STMT_70_INFO, \ + STMT_71_INFO, \ + STMT_72_INFO, \ + STMT_73_INFO, \ + STMT_74_INFO, \ + STMT_75_INFO, \ + STMT_76_INFO, \ + STMT_77_INFO, \ + STMT_78_INFO, \ + STMT_79_INFO, \ + STMT_80_INFO, \ + STMT_81_INFO, \ + STMT_82_INFO, \ + STMT_83_INFO, \ + STMT_84_INFO, \ + STMT_85_INFO, \ + STMT_86_INFO, \ + STMT_87_INFO, \ + STMT_88_INFO, \ + STMT_89_INFO, \ + STMT_90_INFO, \ + STMT_91_INFO, \ + STMT_92_INFO, \ + STMT_93_INFO, \ + STMT_94_INFO, \ + STMT_95_INFO, \ + STMT_96_INFO, \ + STMT_97_INFO, \ + STMT_98_INFO, \ + STMT_99_INFO, \ + STMT_100_INFO, \ + STMT_101_INFO, \ + STMT_102_INFO, \ + STMT_103_INFO, \ + STMT_104_INFO, \ + STMT_105_INFO, \ + STMT_106_INFO, \ + STMT_107_INFO, \ + STMT_108_INFO, \ + STMT_109_INFO, \ + STMT_110_INFO, \ + STMT_111_INFO, \ + STMT_112_INFO, \ + STMT_113_INFO, \ + STMT_114_INFO, \ + STMT_115_INFO, \ + STMT_116_INFO, \ + STMT_117_INFO, \ + STMT_118_INFO, \ + STMT_119_INFO, \ + STMT_120_INFO, \ + STMT_121_INFO, \ + STMT_122_INFO, \ + STMT_123_INFO, \ + STMT_124_INFO, \ + STMT_125_INFO, \ + STMT_126_INFO, \ + STMT_127_INFO, \ + STMT_128_INFO, \ + STMT_129_INFO, \ + STMT_130_INFO, \ + STMT_131_INFO, \ + STMT_132_INFO, \ + STMT_133_INFO, \ + STMT_134_INFO, \ + STMT_135_INFO, \ + STMT_136_INFO, \ + STMT_137_INFO, \ + STMT_138_INFO, \ + STMT_139_INFO, \ + STMT_140_INFO, \ + STMT_141_INFO, \ + STMT_142_INFO, \ + STMT_143_INFO, \ + STMT_144_INFO, \ + STMT_145_INFO, \ + STMT_146_INFO, \ + STMT_147_INFO, \ + STMT_148_INFO, \ + STMT_149_INFO, \ + STMT_150_INFO, \ + STMT_151_INFO, \ + STMT_152_INFO, \ + STMT_153_INFO, \ + STMT_154_INFO, \ + STMT_155_INFO, \ + STMT_156_INFO, \ + STMT_157_INFO, \ + STMT_158_INFO, \ + STMT_159_INFO, \ + STMT_160_INFO, \ + STMT_161_INFO, \ + STMT_162_INFO, \ + STMT_163_INFO, \ + STMT_164_INFO, \ + STMT_165_INFO, \ + STMT_166_INFO, \ + STMT_167_INFO, \ + STMT_168_INFO, \ + STMT_169_INFO, \ + STMT_170_INFO, \ + STMT_171_INFO, \ + STMT_172_INFO, \ + STMT_173_INFO, \ + STMT_174_INFO, \ + STMT_175_INFO, \ + STMT_176_INFO, \ + STMT_177_INFO, \ + STMT_178_INFO, \ + STMT_179_INFO, \ + STMT_180_INFO, \ + STMT_181_INFO, \ + STMT_182_INFO, \ + STMT_183_INFO, \ + STMT_184_INFO, \ + STMT_185_INFO, \ + STMT_186_INFO, \ + STMT_187_INFO, \ + STMT_188_INFO, \ + STMT_189_INFO, \ + STMT_190_INFO, \ + STMT_191_INFO, \ + STMT_192_INFO, \ + STMT_193_INFO, \ + STMT_194_INFO, \ + STMT_195_INFO, \ + STMT_196_INFO, \ + STMT_197_INFO, \ + STMT_198_INFO, \ + STMT_199_INFO, \ + STMT_200_INFO, \ + STMT_201_INFO, \ + STMT_202_INFO, \ + STMT_203_INFO, \ + STMT_204_INFO, \ + STMT_205_INFO, \ + STMT_206_INFO, \ + STMT_207_INFO, \ + STMT_208_INFO, \ + STMT_209_INFO, \ + STMT_210_INFO, \ + STMT_211_INFO, \ + STMT_212_INFO, \ + STMT_213_INFO, \ + STMT_214_INFO, \ + STMT_215_INFO, \ + STMT_216_INFO, \ + STMT_217_INFO, \ + STMT_218_INFO, \ + STMT_219_INFO, \ + STMT_220_INFO, \ + STMT_221_INFO, \ + STMT_222_INFO, \ + STMT_223_INFO, \ + STMT_224_INFO, \ + STMT_225_INFO, \ + STMT_226_INFO, \ + STMT_227_INFO, \ + STMT_228_INFO, \ + STMT_229_INFO, \ + STMT_230_INFO, \ + STMT_231_INFO, \ + STMT_232_INFO, \ + STMT_233_INFO, \ + STMT_234_INFO, \ + {NULL, NULL} \ + } |