Paul Burba
2011-03-14 03:31:38 UTC
...
For the second task, I think the first order of business is to change
the wc-db tree crawler to do one query instead of zillions, or at least,
where several queries are required, to do them all in one transaction.
stsp has been working this recently. Killing the node walker, andFor the second task, I think the first order of business is to change
the wc-db tree crawler to do one query instead of zillions, or at least,
where several queries are required, to do them all in one transaction.
moving to table scans.
- There are API layering issues (wc_db.c calls into node.c).
This is related to the API discussions in the other thread
so I'll follow up there.
- The revision status code issues about 5 separate queries,
which aren't combined via a transaction and don't use temporary tables.
This is no worse than the previous code using the node walker,
obviously :) But I'll look at fixing this so that the results
returned correspond to the state of the DB as of the time the
svn_wc__db_revision_status() call was made.
For others who want to jump in and help, here is a list of places
where the node walker is still being used. I'm not sure if we can
eliminate it everywhere before release, but each of these should
be looked at to see whether we can use an alternative approach to
subversion/libsvn_client/changelist.c
subversion/libsvn_client/commit_util.c
subversion/libsvn_client/info.c
subversion/libsvn_client/merge.c
subversion/libsvn_client/mergeinfo.c
Paul
subversion/libsvn_client/prop_commands.c
(This should be propget and propset. Proplist is already using
queries involving temporary tables. Rewriting propget on top
of the proplist code would be easy. Propset needs more work.)
subversion/libsvn_client/ra.c
subversion/libsvn_wc/update_editor.c
(This should be propget and propset. Proplist is already using
queries involving temporary tables. Rewriting propget on top
of the proplist code would be easy. Propset needs more work.)
subversion/libsvn_client/ra.c
subversion/libsvn_wc/update_editor.c