You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Branko Čibej <br...@wandisco.com> on 2014/04/06 22:33:51 UTC
Strange ACTUAL_NODE record
I have the immense privilege to be able to debug a wc.db that was
upgraded to the 1.8 format using our code from a 1.7 format created by
SVNKit. It's mostly plain sailing, but on this happy occasion I'm seeing
a rather strange record in the database, both before and after the upgrade:
$ sqlite3 wc.db
SQLite version 3.8.4.1 2014-03-11 15:27:36
Enter ".help" for usage hints.
sqlite> .nullvalue "(nul)"
sqlite> SELECT * FFROM NODES WHERE local_relpath = "dir/file";
1|dir/file|0|DisplayServer|1|trunk/dir/file|5796|normal|(nul)|(nul)|file|(svn:keywords 23 Author Date Id Revision svn:eol-style CRLF)|(nul)|$sha1$d4f0f7a37ff21bb3d1ce58ed5906b93351d7c87c|(nul)|4832|1338401677262718|theauthor|1032|1338550831496845|(nul)|(nul)|(nul)
sqlite> SELECT * FROM ACTUAL_NODE;
1|dir/file|dir|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)
The thing I don't understand is: how can we have an ACTUAL_NODE record
with all the flags nulled out, and an op_depth=0 record in NODES at the
same time?
Note that the record first appeared in the wc.db created by SVNKit, but
our WC upgrade left it untouched. Unfortunately I have only the wc.db
files, not the whole working copy.
-- Brane
--
Branko Čibej | Director of Subversion
WANdisco // Non-Stop Data
e. brane@wandisco.com
Re: Strange ACTUAL_NODE record
Posted by Branko Čibej <br...@wandisco.com>.
On 06.04.2014 16:23, Bert Huijben wrote:
> We won’t ADD empty actual records, but we only remove them in a few
> places and upgrade is not one of these places.
>
> There are only very minor changes between the 1.7 and 1.8 formats and
> we don't perform a full state check on upgrade (we don’t even have a
> way to represent a full node state with all layers in ram)… And an
> actual node record with just NULL values is just inefficient, not
> really incorrect.
Thanks! That's all I really needed to know.
-- Brane
> *From:* Branko Čibej <ma...@wandisco.com>
> *Sent:* Sunday, April 6, 2014 10:33 PM
> *To:* dev@subversion.apache.org <ma...@subversion.apache.org>
>
> I have the immense privilege to be able to debug a wc.db that was
> upgraded to the 1.8 format using our code from a 1.7 format created by
> SVNKit. It's mostly plain sailing, but on this happy occasion I'm
> seeing a rather strange record in the database, both before and after
> the upgrade:
> $ sqlite3 wc.db
> SQLite version 3.8.4.1 2014-03-11 15:27:36
> Enter ".help" for usage hints.
> sqlite> .nullvalue "(nul)"
> sqlite> SELECT * FFROM NODES WHERE local_relpath = "dir/file";
> 1|dir/file|0|DisplayServer|1|trunk/dir/file|5796|normal|(nul)|(nul)|file|(svn:keywords 23 Author Date Id Revision svn:eol-style CRLF)|(nul)|$sha1$d4f0f7a37ff21bb3d1ce58ed5906b93351d7c87c|(nul)|4832|1338401677262718|theauthor|1032|1338550831496845|(nul)|(nul)|(nul)
> sqlite> SELECT * FROM ACTUAL_NODE;
> 1|dir/file|dir|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)
> The thing I don't understand is: how can we have an ACTUAL_NODE record
> with all the flags nulled out, and an op_depth=0 record in NODES at
> the same time?
>
> Note that the record first appeared in the wc.db created by SVNKit,
> but our WC upgrade left it untouched. Unfortunately I have only the
> wc.db files, not the whole working copy.
>
> -- Brane
>
>
> --
> Branko Čibej | Director of Subversion
> WANdisco // Non-Stop Data
> e. brane@wandisco.com
--
Branko Čibej | Director of Subversion
WANdisco // Non-Stop Data
e. brane@wandisco.com
Re: Strange ACTUAL_NODE record
Posted by Bert Huijben <be...@qqmail.nl>.
We won’t ADD empty actual records, but we only remove them in a few places and upgrade is not one of these places.
There are only very minor changes between the 1.7 and 1.8 formats and we don't perform a full state check on upgrade (we don’t even have a way to represent a full node state with all layers in ram)… And an actual node record with just NULL values is just inefficient, not really incorrect.
Bert
Sent from Windows Mail
From: Branko Čibej
Sent: Sunday, April 6, 2014 10:33 PM
To: dev@subversion.apache.org
I have the immense privilege to be able to debug a wc.db that was upgraded to the 1.8 format using our code from a 1.7 format created by SVNKit. It's mostly plain sailing, but on this happy occasion I'm seeing a rather strange record in the database, both before and after the upgrade:
$ sqlite3 wc.db
SQLite version 3.8.4.1 2014-03-11 15:27:36
Enter ".help" for usage hints.
sqlite> .nullvalue "(nul)"
sqlite> SELECT * FFROM NODES WHERE local_relpath = "dir/file";
1|dir/file|0|DisplayServer|1|trunk/dir/file|5796|normal|(nul)|(nul)|file|(svn:keywords 23 Author Date Id Revision svn:eol-style CRLF)|(nul)|$sha1$d4f0f7a37ff21bb3d1ce58ed5906b93351d7c87c|(nul)|4832|1338401677262718|theauthor|1032|1338550831496845|(nul)|(nul)|(nul)
sqlite> SELECT * FROM ACTUAL_NODE;
1|dir/file|dir|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)|(nul)
The thing I don't understand is: how can we have an ACTUAL_NODE record with all the flags nulled out, and an op_depth=0 record in NODES at the same time?
Note that the record first appeared in the wc.db created by SVNKit, but our WC upgrade left it untouched. Unfortunately I have only the wc.db files, not the whole working copy.
-- Brane
--
Branko Čibej | Director of Subversion
WANdisco // Non-Stop Data
e. brane@wandisco.com