You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2011/05/04 12:17:54 UTC
svn commit: r1099395 - in /subversion/trunk/subversion/libsvn_wc:
wc-queries.sql wc_db.c
Author: philip
Date: Wed May 4 10:17:54 2011
New Revision: 1099395
URL: http://svn.apache.org/viewvc?rev=1099395&view=rev
Log:
Change the new, single-txn delete to leave tree conflicts as well
as changelists, it now passes all the regression tests.
* subversion/libsvn_wc/wc-queries.sql
(STMT_DELETE_ACTUAL_LEAVING_CHANGELIST_AND_CONFLICT,
STMT_CLEAR_ACTUAL_LEAVING_CHANGELIST_AND_CONFLICT): New.
* subversion/libsvn_wc/wc_db.c
(op_delete_txn): Use new queries.
Modified:
subversion/trunk/subversion/libsvn_wc/wc-queries.sql
subversion/trunk/subversion/libsvn_wc/wc_db.c
Modified: subversion/trunk/subversion/libsvn_wc/wc-queries.sql
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc-queries.sql?rev=1099395&r1=1099394&r2=1099395&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc-queries.sql (original)
+++ subversion/trunk/subversion/libsvn_wc/wc-queries.sql Wed May 4 10:17:54 2011
@@ -507,6 +507,17 @@ WHERE wc_id = ?1 AND (local_relpath = ?2
OR local_relpath LIKE ?3 ESCAPE '#')
AND kind = 'file'))
+-- STMT_DELETE_ACTUAL_LEAVING_CHANGELIST_AND_CONFLICT
+DELETE FROM actual_node
+WHERE wc_id = ?1 AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#')
+ AND tree_conflict_data IS NULL
+ AND (changelist IS NULL
+ OR local_relpath NOT IN (SELECT local_relpath FROM nodes_current
+ WHERE wc_id = ?1
+ AND (local_relpath = ?2
+ OR local_relpath LIKE ?3 ESCAPE '#')
+ AND kind = 'file'))
+
-- STMT_DELETE_CHILD_NODES_RECURSIVE
DELETE FROM nodes
WHERE wc_id = ?1 AND local_relpath LIKE ?2 ESCAPE '#' AND op_depth = ?3
@@ -540,6 +551,19 @@ SET properties = NULL,
right_checksum = NULL
WHERE wc_id = ?1 AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#')
+-- STMT_CLEAR_ACTUAL_LEAVING_CHANGELIST_AND_CONFLICT
+UPDATE actual_node
+SET properties = NULL,
+ text_mod = 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 OR local_relpath LIKE ?3 ESCAPE '#')
+
-- STMT_CLEAR_ACTUAL_NODE_LEAVING_CONFLICT
UPDATE actual_node
SET properties = NULL,
Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=1099395&r1=1099394&r2=1099395&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.c Wed May 4 10:17:54 2011
@@ -5152,8 +5152,18 @@ op_delete_txn(void *baton,
b->delete_depth));
SVN_ERR(svn_sqlite__step_done(stmt));
+ /* Delete ACTUAL_NODE rows, but leave those that have tree conflicts
+ and those that have changelist and a NODES row.
+
+ ### I don't know why we leave tree conflicts. */
SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
- STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE));
+ STMT_DELETE_ACTUAL_LEAVING_CHANGELIST_AND_CONFLICT));
+ SVN_ERR(svn_sqlite__bindf(stmt, "iss",
+ wcroot->wc_id, local_relpath, like_arg));
+ SVN_ERR(svn_sqlite__step_done(stmt));
+
+ SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
+ STMT_CLEAR_ACTUAL_LEAVING_CHANGELIST_AND_CONFLICT));
SVN_ERR(svn_sqlite__bindf(stmt, "iss",
wcroot->wc_id, local_relpath, like_arg));
SVN_ERR(svn_sqlite__step_done(stmt));