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 2011/05/12 13:20:38 UTC
svn commit: r1102242 - in /subversion/trunk/subversion/libsvn_wc:
wc-queries.sql wc_db.c
Author: rhuijben
Date: Thu May 12 11:20:37 2011
New Revision: 1102242
URL: http://svn.apache.org/viewvc?rev=1102242&view=rev
Log:
Reduce the time to run svnversion on my test working copy by about 10% by
applying a few simple query optimizations.
* subversion/libsvn_wc/wc-queries.sql
(STMT_SELECT_SPARSE_NODES): Rename to ...
(STMT_HAS_SPARSE_NODES): ... this and LIMIT to 1 result of value 1.
(STMT_SUBTREE_HAS_TREE_MODIFICATIONS): Any node at op_depth > 0 implies
a modification to the base tree (because it shadows BASE) and
file externals live at op_depth 0 only, so we don't have to check
for them at higher op_depths.
(STMT_SELECT_SWITCHED_NODES): The switched check only needs to check the
BASE layer.
* subversion/libsvn_wc/wc_db.c
(is_sparse_checkout_internal): Update caller.
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=1102242&r1=1102241&r2=1102242&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc-queries.sql (original)
+++ subversion/trunk/subversion/libsvn_wc/wc-queries.sql Thu May 12 11:20:37 2011
@@ -1116,20 +1116,19 @@ SELECT MIN(revision), MAX(revision),
AND file_external IS NULL
AND op_depth = 0
--- STMT_SELECT_SPARSE_NODES
-SELECT local_relpath, presence, depth FROM nodes
+-- STMT_HAS_SPARSE_NODES
+SELECT 1 FROM nodes
WHERE wc_id = ?1 AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#')
AND op_depth = 0
AND (presence IN ('absent', 'excluded')
OR depth NOT IN ('infinity', 'unknown'))
AND file_external IS NULL
+LIMIT 1
-- STMT_SUBTREE_HAS_TREE_MODIFICATIONS
SELECT 1 FROM nodes
WHERE wc_id = ?1 AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#')
AND op_depth > 0
- AND presence IN ('normal', 'incomplete', 'base-deleted')
- AND file_external IS NULL
LIMIT 1
-- STMT_SUBTREE_HAS_PROP_MODIFICATIONS
@@ -1145,6 +1144,7 @@ LIMIT 1
-- STMT_SELECT_SWITCHED_NODES
SELECT local_relpath, repos_path FROM nodes_base
WHERE wc_id = ?1 AND local_relpath != ""
+ AND op_depth = 0
AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE '#')
AND ((repos_path NOT LIKE ?4 ESCAPE '#' AND repos_path != local_relpath)
OR (repos_path != ?5 || local_relpath))
Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=1102242&r1=1102241&r2=1102242&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.c Thu May 12 11:20:37 2011
@@ -11683,7 +11683,7 @@ is_sparse_checkout_internal(svn_boolean_
svn_boolean_t have_row;
SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
- STMT_SELECT_SPARSE_NODES));
+ STMT_HAS_SPARSE_NODES));
SVN_ERR(svn_sqlite__bindf(stmt, "iss",
wcroot->wc_id,
local_relpath,