You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2012/05/21 00:43:35 UTC
svn commit: r1340862 - /subversion/trunk/subversion/libsvn_wc/wc-queries.sql
Author: rhuijben
Date: Sun May 20 22:43:35 2012
New Revision: 1340862
URL: http://svn.apache.org/viewvc?rev=1340862&view=rev
Log:
* subversion/libsvn_wc/wc-queries.sql
(STMT_INSERT_DELETE_LIST): Make this query use an index instead of a limited
table scan. I can't find a testcase where this new code is much faster,
but there probably are cases anyway.
Modified:
subversion/trunk/subversion/libsvn_wc/wc-queries.sql
Modified: subversion/trunk/subversion/libsvn_wc/wc-queries.sql
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc-queries.sql?rev=1340862&r1=1340861&r2=1340862&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc-queries.sql (original)
+++ subversion/trunk/subversion/libsvn_wc/wc-queries.sql Sun May 20 22:43:35 2012
@@ -1284,14 +1284,18 @@ CREATE TEMPORARY TABLE delete_list (
local_relpath TEXT PRIMARY KEY NOT NULL UNIQUE
)
-/* This matches the selection in STMT_INSERT_DELETE_FROM_NODE_RECURSIVE */
+/* This matches the selection in STMT_INSERT_DELETE_FROM_NODE_RECURSIVE.
+ A subquery is used instead of nodes_current to avoid a table scan */
-- STMT_INSERT_DELETE_LIST
INSERT INTO delete_list(local_relpath)
-SELECT local_relpath FROM nodes_current
+SELECT local_relpath FROM nodes AS n
WHERE wc_id = ?1
AND (local_relpath = ?2
OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2))
AND op_depth >= ?3
+ 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', 'absent')
-- STMT_SELECT_DELETE_LIST