- r1340879: 2012-05-21 00:23:26 [stefan2] User: stefan2
-
/tools/dev/benchmarks/large_dirs/create_bigdir.sh [diff, log, file]
Reduce command line tool invocation overhead:
When deleting many files, use a single batch deletion call to SVN.
* tools/dev/benchmarks/large_dirs/create_bigdir.sh
(run_svn_del_many): new function
#main: use new function for batch deletion of files
- r1340878: 2012-05-21 00:18:48 [stefan2] User: stefan2
-
/subversion/libsvn_fs_fs/temp_serializer.c [diff, log, file]
* subversion/libsvn_fs_fs/temp_serializer.c
(svn_fs_fs__extract_dir_entry): fix typo in comment
- r1340877: 2012-05-21 00:18:03 [stefan2] User: stefan2
-
/subversion/libsvn_fs_fs/fs_fs.h [diff, log, file]
Docstring improvement. No functional change.
* subversion/libsvn_fs_fs/fs_fs.h
(svn_fs_fs__rep_contents_dir_entry): document "not found" case
- r1340875: 2012-05-21 00:16:45 [stefan2] User: stefan2
-
/subversion/libsvn_fs_fs/dag.c [diff, log, file]
Fix another O(n^2) commit performance issue:
Replace O(n^2) dirent lookup code with O(n log n) lookup.
* subversion/libsvn_fs_fs/dag.c
(svn_fs_fs__dag_delete): use direct access to dirent
- r1340874: 2012-05-21 00:14:20 [stefan2] User: stefan2
-
/subversion/libsvn_fs_fs/fs_fs.c [diff, log, file]
For large commits that contain deletions, fetch_all_changes
dominates the commit performance because it uses an O(n^2)
to eliminate sub-path changes to deleted nodes.
Since switching to an O(n log n) implementation is non-trivial,
the next best thing is to minimize the operations within the
inner loop.
* subversion/libsvn_fs_fs/fs_fs.c
(fetch_all_changes): tune
- r1340862: 2012-05-20 22:43:35 [rhuijben] Bert Huijben
-
/subversion/libsvn_wc/wc-queries.sql [diff, log, file]
* 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.
- r1340843: 2012-05-20 21:19:35 [rhuijben] Bert Huijben
-
/subversion/libsvn_client/commit.c [diff, log, file]
* subversion/libsvn_client/commit.c
(append_externals_as_explicit_targets): Make it more explicit when this
function doesn nothing. And when it doesn't do anything, don't create an
unneeded iterpool.
- r1340839: 2012-05-20 21:01:31 [rhuijben] Bert Huijben
-
/subversion/libsvn_client/status.c [diff, log, file]
* subversion/libsvn_client/status.c
(svn_client__create_status): Don't overwrite status; it is no longer
set to external (as it was during 1.7 development).
- r1340836: 2012-05-20 20:51:26 [rhuijben] Bert Huijben
-
/subversion/include/private/svn_wc_private.h [diff, log, file]
/subversion/libsvn_client/commit_util.c [diff, log, file]
/subversion/libsvn_wc/node.c [diff, log, file]
Use status walker information to detect file externals in the commit harvester.
* subversion/include/private/svn_wc_private.h
(svn_wc__node_get_commit_status): Remove unused argument.
* subversion/libsvn_client/commit_util.c
(harvest_status_callback): Update caller. Remove variable.
Allow svn cp FILE-EXTERNAL URL -m "".
* subversion/libsvn_wc/node.c
(svn_wc__node_get_commit_status): Remove fetching of update_root, and
add a few more cheap checks to avoid the extra db query.
- r1340817: 2012-05-20 19:54:48 [rhuijben] Bert Huijben
-
/subversion/libsvn_subr/sqlite.c [diff, log, file]
* subversion/libsvn_subr/sqlite.c
(get_internal_statement): Make static.
- r1340815: 2012-05-20 19:34:53 [rhuijben] Bert Huijben
-
/subversion/libsvn_subr/internal_statements.sql [diff, log, file]
/subversion/libsvn_subr/sqlite.c [diff, log, file]
Following up on r1340806, also provide and use internal statements for the
other locking methods, such as the immediate transaction used for installing
pristine files.
* subversion/libsvn_subr/internal_statements.sql
(STMT_INTERNAL_BEGIN_TRANSACTION,
STMT_INTERNAL_BEGIN_IMMEDIATE_TRANSACTION,
STMT_INTERNAL_COMMIT_TRANSACTION,
STMT_INTERNAL_ROLLBACK_TRANSACTION): New statements.
* subversion/libsvn_subr/sqlite.c
(with_transaction,
svn_sqlite__with_transaction,
svn_sqlite__with_immediate_transaction):
Use statements instead of textual queries.
- r1340806: 2012-05-20 19:16:50 [rhuijben] Bert Huijben
-
/subversion/libsvn_subr/internal_statements.sql [diff, log, file]
/subversion/libsvn_subr/sqlite.c [diff, log, file]
Speed up the Sqlite savepoint creation and releasing in our Sqlite api by
using a prepared statement instead of generated sql.
The SQL tokenizer shouldn't show up in filtered performance reports for a
simple checkout...
Sqlite allows nesting savepoints with the same name, so this doesn't require
changes to our private api. Extend the set of prepared statements with a few
library internal statements to allow using the current infrastructure.
* subversion/libsvn_subr/internal_statements.sql
(STMT_DUMMY_SELECT_FOR_BACKUP): Remove unused dummy.
(STMT_INTERNAL_SAVEPOINT_SVN,
STMT_INTERNAL_RELEASE_SAVEPOINT_SVN,
STMT_INTERNAL_ROLLBACK_TO_SAVEPOINT_SVN,
STMT_INTERNAL_LAST): New statements.
* subversion/libsvn_subr/sqlite.c
(get_internal_statement): New function.
(close_apr): finalize the internal statements.
(svn_sqlite__open): Keep space for a few extra statements.
(svn_sqlite__with_lock): Use internal statements instead of sql text.
- r1340766: 2012-05-20 16:33:09 [rhuijben] Bert Huijben
-
/subversion/libsvn_wc/wc_db.c [diff, log, file]
* subversion/libsvn_wc/wc_db.c
(op_revert_recursive_txn): Bind as 64 bit integer to avoid warning.
- r1340725: 2012-05-20 14:03:12 [rhuijben] Bert Huijben
-
/subversion/libsvn_wc/wc-queries.sql [diff, log, file]
/subversion/libsvn_wc/wc_db.c [diff, log, file]
Split two more wc.db sqlite statements to avoid table scans on the ACTUAL table
during delete and revert handling.
* subversion/libsvn_wc/wc-queries.sql
(STMT_DELETE_ALL_NODES_ABOVE_DEPTH): Renumber argument.
(STMT_DELETE_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE):
Remove handling of wcroot.
(STMT_DELETE_ALL_ACTUAL_NODE_LEAVING_CHANGELIST):
New statement for wcroot.
(STMT_CLEAR_ACTUAL_NODE_LEAVING_CHANGELIST_RECURSIVE):
Remove handling of wcroot.
(STMT_CLEAR_ALL_ACTUAL_NODE_LEAVING_CHANGELIST):
New statement for wcroot.
* subversion/libsvn_wc/wc_db.c
(op_revert_recursive_txn): Separate queries for wcroot and
not-wcroot. Avoid unused sqlite arguments.
- r1340706: 2012-05-20 12:59:58 [rhuijben] Bert Huijben
-
/subversion/libsvn_wc/wc-queries.sql [diff, log, file]
Improve query performance for revert handling.
* subversion/libsvn_wc/wc-queries.sql
(STMT_UPDATE_OP_DEPTH_INCREASE_RECURSIVE): Assume never called on the wcroot,
and the node itself doesn't have to be changed. This to allow removing
an OR that makes this statement use a table scan.
(Assumptions are valid for the only user of this query).
- r1340699: 2012-05-20 12:46:17 [rhuijben] Bert Huijben
-
/subversion/libsvn_wc/wc-queries.sql [diff, log, file]
/subversion/libsvn_wc/wc_db.c [diff, log, file]
Rewrite another query to be able to use a sqlite index.
* subversion/libsvn_wc/wc-queries.sql
(STMT_HAS_SERVER_EXCLUDED_NODES): Split this query in...
(STMT_HAS_SERVER_EXCLUDED_DESCENDANTS): ... for normal nodes and ...
(STMT_WC_HAS_SERVER_EXCLUDED): ... for the wcroot.
* subversion/libsvn_wc/wc_db.c
(catch_copy_of_server_excluded): Use the right query.
(delete_node): Use non-wcroot query.
- r1340694: 2012-05-20 12:28:16 [rhuijben] Bert Huijben
-
/subversion/libsvn_wc/wc-queries.sql [diff, log, file]
/subversion/libsvn_wc/wc_db.c [diff, log, file]
Avoid a table scan in the primary 'svn copy' database query by using a subquery
instead of a join.
This allows the sqlite optimizer to see that only one record is selected for
inserting.
* subversion/libsvn_wc/wc-queries.sql
(STMT_INSERT_WORKING_NODE_COPY_FROM_BASE,
STMT_INSERT_WORKING_NODE_COPY_FROM_WORKING): As these queries were identical
except for the op depth selection, they could be integrated and
renamed to...
(STMT_INSERT_WORKING_NODE_COPY_FROM): ... this. Remove src prefix as that is
no longer necessary with a subquery.
(STMT_INSERT_WORKING_NODE_COPY_FROM_DEPTH): Add the moved_to handling to this
query, to make it match STMT_INSERT_WORKING_NODE_COPY_FROM behavior.
* subversion/libsvn_wc/wc_db.c
(get_info_for_copy): Remove now unused have_work argument.
(db_op_copy): Update caller. Remove common query.
(db_op_copy_shadowed_layer): Simplify code, assuming that the copy from depth
code now handles both cases.
- r1340684: 2012-05-20 11:45:24 [rhuijben] Bert Huijben
-
/subversion/libsvn_wc/wc_db.c [diff, log, file]
Fix the authz test failure caused by r1340605 by handling a few statee directly.
* subversion/libsvn_wc/wc_db.c
(delete_node): Handle server excluded status directly instead of relying on a
query to catch this. Add handling for the user excluded status.
- r1340683: 2012-05-20 11:42:56 [rhuijben] Bert Huijben
-
/subversion/libsvn_client/delete.c [diff, log, file]
* subversion/libsvn_client/delete.c
(svn_client_delete4): Deleting a single file shouldn't require obtaining a
lock on the working copy root. Calculate the common ancestor and lock
there.
- r1340678: 2012-05-20 11:19:05 [rhuijben] Bert Huijben
-
/subversion/libsvn_wc/wc-queries.sql [diff, log, file]
* subversion/libsvn_wc/wc-queries.sql
(STMT_DELETE_SHADOWED_RECURSIVE):
Add comment. Don't try to fetch a record for the node itself as the
only user would have removed it in the previous query.
(STMT_SELECT_NOT_PRESENT_DESCENDANTS): Simplify query. No functional
change, but more likely to be handled by the sqlite optimizer.
(STMT_SELECT_BASE_NODE_LOCK_TOKENS_RECURSIVE): Remove working copy root
support, to allow evaluating over the index.
- r1340674: 2012-05-20 11:15:10 [rhuijben] Bert Huijben
-
/subversion/libsvn_wc/wc_db.c [diff, log, file]
* subversion/libsvn_wc/wc_db.c
(delete_node): If status is normal, then op-depth is 0.
- r1340666: 2012-05-20 10:33:22 [rhuijben] Bert Huijben
-
/subversion/libsvn_wc/wc-queries.sql [diff, log, file]
/subversion/libsvn_wc/wc_db.c [diff, log, file]
Optimize usage of the wc.db queries for 'rm' and 'revert' with the new found
knowledge that a "?2 = ''" like OR expression in strict descendants checks
of a query removes all index optimizations.
* subversion/libsvn_wc/wc-queries.sql
(STMT_DELETE_NODES_RECURSIVE): Split in...
(STMT_DELETE_NODES_ABOVE_DEPTH_RECURSIVE): ... a query for normal nodes
(STMT_DELETE_ALL_NODES_ABOVE_DEPTH): And a specific query for the working
copy root.
* subversion/libsvn_wc/wc_db.c
(op_revert_recursive_txn): Just delete actual nodes for the node itself. If
there is none, the node doesn't exist.
Choose the right query for deleting NODES queries.
(remove_node_txn,
delete_node): Update query user.
- r1340605: 2012-05-20 01:13:58 [rhuijben] Bert Huijben
-
/subversion/libsvn_wc/wc_db.c [diff, log, file]
* subversion/libsvn_wc/wc_db.c
(delete_node): Avoid a currently still expensive query for nodes where
the result is not interesting.
- r1340603: 2012-05-20 00:44:33 [rhuijben] Bert Huijben
-
/subversion/libsvn_wc/wc-queries.sql [diff, log, file]
/subversion/libsvn_wc/wc_db.c [diff, log, file]
/subversion/libsvn_wc/wc_db.h [diff, log, file]
Revert all the sqlite query changes I applied in r1340598, r1340592 and
r1340588 until I have the time to find out why I get mixed results.
* subversion/libsvn_wc/wc-queries.sql
(STMT_DELETE_SHADOWED_RECURSIVE,
STMT_SELECT_BASE_NODE_LOCK_TOKENS_RECURSIVE,
STMT_DELETE_NODES_RECURSIVE,
STMT_INSERT_DELETE_FROM_NODE_RECURSIVE,
STMT_HAS_SERVER_EXCLUDED_NODES,
STMT_INSERT_DELETE_LIST): Revert to before this batch.
* subversion/libsvn_wc/wc_db.c
(svn_wc__db_base_get_lock_tokens_recursive):
Revert query related documentation change.
* subversion/libsvn_wc/wc_db.h
(svn_wc__db_base_get_lock_tokens_recursive):
Revert query related documentation change.
- r1340601: 2012-05-20 00:35:00 [stefan2] User: stefan2
-
/subversion/libsvn_subr/hash.c [diff, log, file]
Improve docstring. No functional change.
* subversion/libsvn_subr/hash.c
(hashfunc_compatible): further explain the assumptions made