Modified: subversion/branches/svn_mutex/subversion/libsvn_wc/wc-queries.sql URL: http://svn.apache.org/viewvc/subversion/branches/svn_mutex/subversion/libsvn_wc/wc-queries.sql?rev=1182053&r1=1182052&r2=1182053&view=diff ============================================================================== --- subversion/branches/svn_mutex/subversion/libsvn_wc/wc-queries.sql (original) +++ subversion/branches/svn_mutex/subversion/libsvn_wc/wc-queries.sql Tue Oct 11 19:52:34 2011 @@ -29,7 +29,7 @@ -- STMT_SELECT_NODE_INFO 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 FROM nodes WHERE wc_id = ?1 AND local_relpath = ?2 ORDER BY op_depth DESC @@ -37,8 +37,11 @@ ORDER BY op_depth DESC -- STMT_SELECT_NODE_INFO_WITH_LOCK 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, + /* All the columns until now must match those returned by + STMT_SELECT_NODE_INFO. The implementation of svn_wc__db_read_info() + assumes that these columns are followed by the lock information) */ + 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 @@ -48,7 +51,8 @@ ORDER BY op_depth DESC -- STMT_SELECT_BASE_NODE 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 IS NOT NULL, + moved_to FROM nodes WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 @@ -56,6 +60,10 @@ WHERE wc_id = ?1 AND local_relpath = ?2 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, + moved_to, + /* All the columns until now must match those returned by + STMT_SELECT_BASE_NODE. The implementation of svn_wc__db_base_get_info() + assumes that these columns are followed by the lock information) */ lock_token, lock_owner, lock_comment, lock_date FROM nodes LEFT OUTER JOIN lock ON nodes.repos_id = lock.repos_id @@ -119,20 +127,17 @@ WHERE wc_id = ?1 AND local_relpath = ?2 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 IS NOT NULL FROM nodes LEFT OUTER JOIN lock ON nodes.repos_id = lock.repos_id AND nodes.repos_path = lock.repos_relpath WHERE wc_id = ?1 AND parent_relpath = ?2 -- STMT_SELECT_NODE_CHILDREN_WALKER_INFO -/* ### See comment at STMT_SELECT_NODE_CHILDREN_INFO. - ### Should C code handle GROUP BY local_relpath ORDER BY op_depths DESC? */ SELECT local_relpath, op_depth, presence, kind -FROM nodes +FROM nodes_current WHERE wc_id = ?1 AND parent_relpath = ?2 -GROUP BY local_relpath -ORDER BY op_depth DESC -- STMT_SELECT_ACTUAL_CHILDREN_INFO SELECT prop_reject, changelist, conflict_old, conflict_new, @@ -158,13 +163,14 @@ 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) 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) -- STMT_SELECT_OP_DEPTH_CHILDREN 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) -- STMT_SELECT_GE_OP_DEPTH_CHILDREN SELECT 1 FROM nodes @@ -178,7 +184,7 @@ WHERE wc_id = ?1 AND parent_relpath = ?2 DELETE FROM nodes WHERE wc_id = ?1 AND (local_relpath = ?2 - OR ((local_relpath > ?2 || '/') AND (local_relpath < ?2 || '0'))) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) AND (op_depth < ?3 OR (op_depth = ?3 AND presence = 'base-deleted')) @@ -186,7 +192,7 @@ WHERE wc_id = ?1 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'))) + OR IS_STRICT_DESCENDANT_OF(parent_relpath, ?2)) AND presence == 'not-present' -- STMT_COMMIT_DESCENDANT_TO_BASE @@ -263,7 +269,7 @@ LEFT JOIN lock ON nodes.repos_id = lock. WHERE wc_id = ?1 AND op_depth = 0 AND (?2 = '' OR local_relpath = ?2 - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) -- STMT_INSERT_WCROOT INSERT INTO wcroot (local_abspath) @@ -278,7 +284,7 @@ SELECT dav_cache FROM nodes WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 -- STMT_SELECT_DELETION_INFO -SELECT nodes_base.presence, nodes_work.presence, nodes_work.moved_to, +SELECT nodes_base.presence, nodes_work.presence, nodes_base.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 @@ -298,7 +304,7 @@ 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')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) -- STMT_RECURSIVE_UPDATE_NODE_REPO UPDATE nodes SET repos_id = ?4, dav_cache = NULL @@ -306,7 +312,7 @@ WHERE wc_id = ?1 AND repos_id = ?3 AND (?2 = '' OR local_relpath = ?2 - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) -- STMT_UPDATE_LOCK_REPOS_ID UPDATE lock SET repos_id = ?2 @@ -473,7 +479,10 @@ WHERE wc_id = ?1 AND (parent_relpath = ? 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 OR local_relpath LIKE ?3 ESCAPE '#') +WHERE wc_id = ?1 + AND (?2 = '' + OR local_relpath = ?2 + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) -- STMT_INSERT_TARGET_WITH_CHANGELIST INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind) @@ -503,8 +512,11 @@ INSERT INTO targets_list(wc_id, local_re 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 OR N.local_relpath LIKE ?4 ESCAPE '#') + WHERE N.wc_id = ?1 + AND (?2 = '' + OR N.local_relpath = ?2 + OR IS_STRICT_DESCENDANT_OF(N.local_relpath, ?2)) + AND A.changelist = ?3 -- STMT_SELECT_TARGETS SELECT local_relpath, parent_relpath from targets_list @@ -572,7 +584,7 @@ DELETE FROM nodes WHERE wc_id = ?1 AND (?2 = '' OR local_relpath = ?2 - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) AND op_depth >= ?3 -- STMT_DELETE_ACTUAL_NODE @@ -584,7 +596,7 @@ DELETE FROM actual_node WHERE wc_id = ?1 AND (?2 = '' OR local_relpath = ?2 - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) -- STMT_DELETE_ACTUAL_NODE_WITHOUT_CONFLICT DELETE FROM actual_node @@ -597,19 +609,20 @@ WHERE wc_id = ?1 AND local_relpath = ?2 AND (changelist IS NULL OR NOT EXISTS (SELECT 1 FROM nodes_current c - WHERE c.wc_id = ?1 AND c.local_relpath = local_relpath - AND kind = 'file')) + WHERE c.wc_id = ?1 AND c.local_relpath = ?2 + AND c.kind = 'file')) -- STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE DELETE FROM actual_node WHERE wc_id = ?1 AND (?2 = '' OR local_relpath = ?2 - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) AND (changelist IS NULL OR NOT EXISTS (SELECT 1 FROM nodes_current c - WHERE c.wc_id = ?1 AND c.local_relpath = local_relpath - AND kind = 'file')) + WHERE c.wc_id = ?1 + AND c.local_relpath = actual_node.local_relpath + AND c.kind = 'file')) -- STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST UPDATE actual_node @@ -640,7 +653,7 @@ SET properties = NULL, WHERE wc_id = ?1 AND (?2 = '' OR local_relpath = ?2 - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) -- STMT_UPDATE_NODE_BASE_DEPTH UPDATE nodes SET depth = ?3 @@ -772,21 +785,26 @@ 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')) + OR IS_STRICT_DESCENDANT_OF(local_dir_relpath, ?2)) AND NOT EXISTS (SELECT 1 FROM nodes WHERE nodes.wc_id = ?1 AND nodes.local_relpath = wc_lock.local_dir_relpath) -- STMT_APPLY_CHANGES_TO_BASE_NODE /* translated_size and last_mod_time are not mentioned here because they will - be tweaked after the working-file is installed. - ### what to do about file_external? */ + be tweaked after the working-file is installed. When we replace an existing + BASE node (read: bump), preserve its file_external status. */ 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 ) + changed_author, checksum, properties, dav_cache, symlink_target, + 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, + (SELECT file_external FROM nodes + WHERE wc_id = ?1 + AND local_relpath = ?2 + AND op_depth = 0)) -- STMT_INSTALL_WORKING_NODE_FOR_DELETE INSERT OR REPLACE INTO nodes ( @@ -806,7 +824,7 @@ SELECT wc_id, local_relpath, ?4 /*op_dep FROM nodes WHERE wc_id = ?1 AND (local_relpath = ?2 - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) AND op_depth = ?3 AND presence NOT IN ('base-deleted', 'not-present', 'excluded', 'absent') @@ -835,40 +853,40 @@ WHERE wc_id = ?1 AND local_relpath = ?2 UPDATE nodes SET op_depth = ?3 + 1 WHERE wc_id = ?1 AND (?2 = '' - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) AND op_depth = ?3 -- STMT_DOES_NODE_EXIST SELECT 1 FROM nodes WHERE wc_id = ?1 AND local_relpath = ?2 LIMIT 1 --- STMT_HAS_ABSENT_NODES +-- STMT_HAS_SERVER_EXCLUDED_NODES SELECT local_relpath FROM nodes WHERE wc_id = ?1 AND (?2 = '' OR local_relpath = ?2 - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) AND op_depth = 0 AND presence = 'absent' LIMIT 1 -/* ### Select all absent nodes. */ --- STMT_SELECT_ALL_ABSENT_NODES +/* ### Select all server-excluded nodes. */ +-- STMT_SELECT_ALL_SERVER_EXCLUDED_NODES SELECT local_relpath FROM nodes WHERE wc_id = ?1 AND (?2 = '' OR local_relpath = ?2 - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) AND op_depth = 0 AND presence = 'absent' -- STMT_INSERT_WORKING_NODE_COPY_FROM_BASE 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 ) SELECT wc_id, ?3 /*local_relpath*/, ?4 /*op_depth*/, ?5 /*parent_relpath*/, - repos_id, repos_path, revision, ?6 /*presence*/, depth, + repos_id, repos_path, revision, ?6 /*presence*/, depth, ?7/*moved_here*/, kind, changed_revision, changed_date, changed_author, checksum, properties, translated_size, last_mod_time, symlink_target FROM nodes @@ -877,11 +895,11 @@ WHERE wc_id = ?1 AND local_relpath = ?2 -- STMT_INSERT_WORKING_NODE_COPY_FROM_WORKING 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, + revision, presence, depth, moved_here, kind, changed_revision, changed_date, changed_author, checksum, properties, translated_size, last_mod_time, symlink_target ) SELECT wc_id, ?3 /*local_relpath*/, ?4 /*op_depth*/, ?5 /*parent_relpath*/, - repos_id, repos_path, revision, ?6 /*presence*/, depth, + repos_id, repos_path, revision, ?6 /*presence*/, depth, ?7 /*moved_here*/, kind, changed_revision, changed_date, changed_author, checksum, properties, translated_size, last_mod_time, symlink_target FROM nodes @@ -892,15 +910,15 @@ LIMIT 1 -- STMT_INSERT_WORKING_NODE_COPY_FROM_DEPTH 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, + revision, presence, depth, moved_here, kind, changed_revision, changed_date, changed_author, checksum, properties, translated_size, last_mod_time, symlink_target ) SELECT wc_id, ?3 /*local_relpath*/, ?4 /*op_depth*/, ?5 /*parent_relpath*/, - repos_id, repos_path, revision, ?6 /*presence*/, - depth, kind, changed_revision, changed_date, changed_author, checksum, + repos_id, repos_path, revision, ?6 /*presence*/, depth, ?7 /*moved_here*/, + 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 = ?7 +WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = ?8 -- STMT_INSERT_ACTUAL_NODE_FROM_ACTUAL_NODE INSERT OR REPLACE INTO actual_node ( @@ -934,21 +952,17 @@ VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, -- STMT_SELECT_EXTERNAL_INFO 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 --- STMT_SELECT_EXTERNAL_CHILDREN -SELECT local_relpath -FROM externals WHERE wc_id = ?1 AND parent_relpath = ?2 - -- STMT_SELECT_EXTERNALS_DEFINED SELECT local_relpath, def_local_relpath FROM externals WHERE wc_id = ?1 AND (?2 = '' OR def_local_relpath = ?2 - OR (def_local_relpath > ?2 || '/' AND def_local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(def_local_relpath, ?2)) -- STMT_UPDATE_EXTERNAL_FILEINFO UPDATE externals SET recorded_size = ?3, recorded_mod_time = ?4 @@ -967,7 +981,7 @@ FROM nodes n WHERE wc_id = ?1 AND (?2 = '' OR local_relpath = ?2 - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) 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) @@ -1095,14 +1109,18 @@ CREATE TEMPORARY TABLE revert_list ( conflict_working TEXT, prop_reject TEXT, notify INTEGER, /* 1 if an actual row had props or tree conflict */ + op_depth INTEGER, + repos_id INTEGER, + kind TEXT, PRIMARY KEY (local_relpath, actual) ); DROP TRIGGER IF EXISTS trigger_revert_list_nodes; CREATE TEMPORARY TRIGGER trigger_revert_list_nodes BEFORE DELETE ON nodes BEGIN - INSERT OR REPLACE INTO revert_list(local_relpath, actual) - SELECT OLD.local_relpath, 0; + INSERT OR REPLACE INTO revert_list(local_relpath, actual, op_depth, + repos_id, kind) + SELECT OLD.local_relpath, 0, OLD.op_depth, OLD.repos_id, OLD.kind; END; DROP TRIGGER IF EXISTS trigger_revert_list_actual_delete; CREATE TEMPORARY TRIGGER trigger_revert_list_actual_delete @@ -1139,11 +1157,20 @@ DROP TRIGGER IF EXISTS trigger_revert_li DROP TRIGGER IF EXISTS trigger_revert_list_actual_update -- STMT_SELECT_REVERT_LIST -SELECT conflict_old, conflict_new, conflict_working, prop_reject, notify, actual +SELECT conflict_old, conflict_new, conflict_working, prop_reject, notify, + actual, op_depth, repos_id, kind FROM revert_list WHERE local_relpath = ?1 ORDER BY actual DESC +-- STMT_SELECT_REVERT_LIST_COPIED_CHILDREN +SELECT local_relpath, kind +FROM revert_list +WHERE local_relpath LIKE ?1 ESCAPE '#' + AND op_depth >= ?2 + AND repos_id IS NOT NULL +ORDER BY local_relpath + -- STMT_DELETE_REVERT_LIST DELETE FROM revert_list WHERE local_relpath = ?1 @@ -1175,7 +1202,7 @@ INSERT INTO delete_list(local_relpath) SELECT local_relpath FROM nodes n WHERE wc_id = ?1 AND (local_relpath = ?2 - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) AND op_depth >= ?3 AND presence NOT IN ('base-deleted', 'not-present', 'excluded', 'absent') AND op_depth = (SELECT MAX(op_depth) FROM nodes s @@ -1200,7 +1227,7 @@ SELECT MIN(revision), MAX(revision), WHERE wc_id = ?1 AND (?2 = '' OR local_relpath = ?2 - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) AND presence IN ('normal', 'incomplete') AND file_external IS NULL AND op_depth = 0 @@ -1210,7 +1237,7 @@ SELECT 1 FROM nodes WHERE wc_id = ?1 AND (?2 = '' OR local_relpath = ?2 - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) AND op_depth = 0 AND (presence IN ('absent', 'excluded') OR depth NOT IN ('infinity', 'unknown')) @@ -1222,7 +1249,7 @@ SELECT 1 FROM nodes WHERE wc_id = ?1 AND (?2 = '' OR local_relpath = ?2 - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) AND op_depth > 0 LIMIT 1 @@ -1231,7 +1258,7 @@ SELECT 1 FROM actual_node WHERE wc_id = ?1 AND (?2 = '' OR local_relpath = ?2 - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) AND properties IS NOT NULL LIMIT 1 @@ -1254,7 +1281,7 @@ SELECT o.repos_path || '/' || SUBSTR(s.l 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 IS_STRICT_DESCENDANT_OF(s.local_relpath, ?2) AND s.op_depth = 0 AND s.repos_id = o.repos_id AND s.file_external IS NULL @@ -1268,7 +1295,7 @@ SELECT SUBSTR(s.local_relpath, LENGTH(?2 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 IS_STRICT_DESCENDANT_OF(s.local_relpath, ?2) AND s.op_depth = 0 AND s.repos_id = o.repos_id AND s.file_external IS NULL @@ -1309,18 +1336,46 @@ SELECT local_relpath, translated_size, l WHERE wc_id = ?1 AND (?2 = '' OR local_relpath = ?2 - OR (local_relpath > ?2 || '/' AND local_relpath < ?2 || '0')) + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) AND op_depth = 0 AND kind='file' AND presence='normal' AND file_external IS NULL +-- STMT_SELECT_MOVED_FROM_RELPATH +SELECT local_relpath FROM nodes +WHERE wc_id = ?1 AND moved_to = ?2 AND op_depth = 0 + +-- STMT_UPDATE_MOVED_TO_RELPATH +UPDATE nodes SET moved_to = ?3 +WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 + +-- STMT_CLEAR_MOVED_TO_RELPATH +UPDATE nodes SET moved_to = NULL +WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0 + +-- STMT_CLEAR_MOVED_TO_RELPATH_RECURSIVE +UPDATE nodes SET moved_to = NULL +WHERE wc_id = ?1 + AND (?2 = '' + OR local_relpath = ?2 + OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2)) + AND op_depth = 0 + +/* This statement returns pairs of move-roots below the path ?2 in WC_ID ?1. + * Each row returns a moved-here path (always a child of ?2) in the first + * column, and its matching moved-away (deleted) path in the second column. */ +-- STMT_SELECT_MOVED_HERE_CHILDREN +SELECT moved_to, local_relpath FROM nodes +WHERE wc_id = ?1 AND op_depth = 0 + AND IS_STRICT_DESCENDANT_OF(moved_to, ?2) + /* ------------------------------------------------------------------------- */ /* Queries for verification. */ -- STMT_SELECT_ALL_NODES -SELECT op_depth, local_relpath, parent_relpath FROM nodes +SELECT op_depth, local_relpath, parent_relpath, file_external FROM nodes WHERE wc_id == ?1 /* ------------------------------------------------------------------------- */
Modified: subversion/branches/svn_mutex/subversion/libsvn_wc/wc.h URL: http://svn.apache.org/viewvc/subversion/branches/svn_mutex/subversion/libsvn_wc/wc.h?rev=1182053&r1=1182052&r2=1182053&view=diff ============================================================================== --- subversion/branches/svn_mutex/subversion/libsvn_wc/wc.h (original) +++ subversion/branches/svn_mutex/subversion/libsvn_wc/wc.h Tue Oct 11 19:52:34 2011 @@ -402,7 +402,7 @@ svn_wc__internal_file_modified_p(svn_boo conflict resolver as older_version and their_version. ## TODO: We should store the information in LEFT_VERSION and RIGHT_VERSION - in the workingcopy for future retrieval via svn info. + in the working copy for future retrieval via svn info. WRI_ABSPATH describes in which working copy information should be retrieved. (Interesting for merging file externals). @@ -680,7 +680,7 @@ svn_wc__wipe_postupgrade(const char *dir */ svn_error_t * svn_wc__check_wc_root(svn_boolean_t *wc_root, - svn_wc__db_kind_t *kind, + svn_kind_t *kind, svn_boolean_t *switched, svn_wc__db_t *db, const char *local_abspath,