Author: rhuijben
Date: Sat May 26 22:03:47 2012
New Revision: 1342978

URL: http://svn.apache.org/viewvc?rev=1342978&view=rev
Log:
Make svn changelist --remove's performance relative to the size of the target
tree instead of relative to the number of ACTUAL records.

* subversion/libsvn_wc/wc-queries.sql
  (STMT_DELETE_ACTUAL_EMPTIES): Just delete unneeded ACTUAL nodes within
    reach of the operation instead of globally to avoid a table scan.

* subversion/libsvn_wc/wc_db.c
  (set_changelist_txn): Pass local_relpath to sql query.

* subversion/tests/libsvn_wc/wc-queries-test.c
  (slow_statements): Remove the last 'need review' item.

Modified:
    subversion/trunk/subversion/libsvn_wc/wc-queries.sql
    subversion/trunk/subversion/libsvn_wc/wc_db.c
    subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.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=1342978&r1=1342977&r2=1342978&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc-queries.sql (original)
+++ subversion/trunk/subversion/libsvn_wc/wc-queries.sql Sat May 26 22:03:47 
2012
@@ -560,6 +560,7 @@ WHERE wc_id = ?1 AND local_relpath = ?2
 -- STMT_DELETE_ACTUAL_EMPTIES
 DELETE FROM actual_node
 WHERE wc_id = ?1
+  AND IS_STRICT_DESCENDANT_OF(local_relpath, ?2)
   AND properties IS NULL
   AND conflict_old IS NULL
   AND conflict_new IS 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=1342978&r1=1342977&r2=1342978&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.c Sat May 26 22:03:47 2012
@@ -5111,7 +5111,7 @@ set_changelist_txn(void *baton,
     {
       SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
                                         STMT_DELETE_ACTUAL_EMPTIES));
-      SVN_ERR(svn_sqlite__bind_int64(stmt, 1, wcroot->wc_id));
+      SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, local_relpath));
       SVN_ERR(svn_sqlite__step_done(stmt));
     }
 

Modified: subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c?rev=1342978&r1=1342977&r2=1342978&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_wc/wc-queries-test.c Sat May 26 
22:03:47 2012
@@ -88,10 +88,7 @@ static const int slow_statements[] =
   STMT_LOOK_FOR_WORK,
   STMT_HAS_WORKING_NODES,
 
-  /* Need review: */
-  STMT_DELETE_ACTUAL_EMPTIES,
-
-  /* Upgrade statements? */
+  /* Upgrade statements */
   STMT_SELECT_OLD_TREE_CONFLICT,
   STMT_ERASE_OLD_CONFLICTS,
   STMT_SELECT_ALL_FILES,


Reply via email to