[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Minimizing the `revisions' table.

From: Greg Stein <gstein_at_lyra.org>
Date: 2002-06-14 21:34:04 CEST

On Fri, Jun 14, 2002 at 10:59:41AM -0500, cmpilato@collab.net wrote:
>...
> Here's what I'm proposing:
>
> REVISION:
>
> - a "revision" header
> - a transaction id (key into the `transactions' table)

Good.

> UNFINISHED TRANSACTION:
>
> - a "transaction" header
> - the root note revision id for the tree in that transaction
> - the root node revision id for the tree in the revision on which its based
> - a transaction property list
> - paths that were changed in this transaction
> - a list of copy ids for copies made during the transaction
>
> COMMITTED TRANSACTION:
>
> - a "committed" header
> - the root node revision id for the tree that was committed
> - a revision property list
> - paths that were changed in this revision
> - the revision that was created by committing the transaction

Looks fine.

Are the prop list and set of paths stored in the strings tables? (maybe the
prop list would actually be a rep-key?) Since those can be arbitrary length,
it would seem we don't want them right in the skel. Taking a paragraph from
'structure':

    Some parts of a node revision are essentially constant-length: for
    example, the KIND field and the REV. Other parts can have
    arbitrarily varying length: property lists, file contents, and
    directory entry lists. This variable-length data is often similar
    from one revision to the next, so Subversion stores just the deltas
    between them, instead of successive fulltexts.

    ...
    and makes the code more efficient, because Subversion can retrieve
    just the parts of a node it needs for a given operation.

While we probably won't deltify the proplist and certainly not the paths,
storing them outside the skel could be Goodness(tm).

> Why? Well, at commit time, we currently copy all the txn properties
> into the new revision-to-be, and if we do the paths-changed stuff,
> we'll be copying those as well. It just makes more sense (and wastes
> fewer fields in the svn_fs__transaction_t structure) to keep this kind
> of information in the transactions table, and make Revisions have the
> really small key-map.

Yessir.

> Thots? I'm betting that Bill Tutt and Brane are +1, yes?

+1 here.

Cheers,
-g

-- 
Greg Stein, http://www.lyra.org/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Jun 14 21:32:35 2002

This is an archived mail posted to the Subversion Dev mailing list.