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,