Commit 50a09046 authored by Kirill Smelkov's avatar Kirill Smelkov

X regenerate with updated ZODB/zodbtools + sync zodbdump

ZODB: based on 5.3.0-5-gcb928231e + y/rawext patch
zodbtools: with not-yet-in-master format stabilization + rawext

The main reson why generated files change a lot is because of this ZODB
commit:

https://github.com/zopefoundation/ZODB/commit/be5a9d54

where pickle protocol used to save data under python2 changed from 1 to 2.
parent f2932247
......@@ -20,20 +20,33 @@
/*
Zodbdump - Tool to dump content of a ZODB database
TODO sync text with zodbdump/py
Format
------
txn <tid> (<status>) XXX escape status ?
user <user|quote>
description <description|quote>
extension <extension|quote>
obj <oid> (delete | from <tid> | sha1:<sha1> <size> (LF <content>)?) LF XXX do we really need back <tid>
---- // ----
LF
txn ...
This program dumps content of a ZODB database.
It uses ZODB Storage iteration API to get list of transactions and for every
transaction prints transaction's header and information about changed objects.
The information dumped is complete raw information as stored in ZODB storage
and should be suitable for restoring the database from the dump file bit-to-bit
identical to its original. It is dumped in semi text-binary format where
object data is output as raw binary and everything else is text.
There is also shortened mode activated via -hashonly where only hash of object
data is printed without content.
Dump format:
txn <tid> <status|quote>
user <user|quote>
description <description|quote>
extension <extension|quote>
obj <oid> (delete | from <tid> | <size> <hashfunc>:<hash> (-|LF <raw-content>)) LF
obj ...
...
obj ...
LF
txn ...
quote: quote string with " with non-printable and control characters \-escaped
hashfunc: one of sha1, sha256, sha512 ...
*/
package zodbtools
......@@ -83,32 +96,40 @@ func (d *dumper) DumpData(datai *zodb.DataInfo) error {
buf .S("from ") .V(&datai.DataTid)
default:
// XXX sha1 is hardcoded for now. Dump format allows other hashes.
dataSha1 := sha1.Sum(datai.Data)
buf .D(len(datai.Data)) .S(" sha1:") .Xb(dataSha1[:])
writeData = true
}
var data []byte
if writeData {
if d.HashOnly {
buf .S(" -")
} else {
buf .Cb('\n')
data = datai.Data
}
}
// TODO use writev(data, "\n") via net.Buffers (it is already available)
// TODO use writev(buf, data, "\n") via net.Buffers (it is already available)
_, err := d.W.Write(buf.Bytes())
if err != nil {
goto out
}
if writeData && !d.HashOnly {
if data != nil {
_, err = d.W.Write(datai.Data)
if err != nil {
goto out
}
}
// XXX maybe better to merge with next record ?
_, err = d.W.Write(_LF)
if err != nil {
goto out
}
}
out:
// XXX do we need this context ?
......@@ -131,8 +152,8 @@ func (d *dumper) DumpTxn(txni *zodb.TxnInfo, dataIter zodb.IDataIterator) error
d.afterFirst = true
}
_, err := fmt.Fprintf(d.W, "%stxn %s (%c)\nuser %q\ndescription %q\nextension %q\n",
vskip, txni.Tid, txni.Status, txni.User, txni.Description, txni.Extension)
_, err := fmt.Fprintf(d.W, "%stxn %s %q\nuser %q\ndescription %q\nextension %q\n",
vskip, txni.Tid, string(txni.Status), txni.User, txni.Description, txni.Extension)
if err != nil {
goto out
}
......
......@@ -3,19 +3,19 @@ package zodb
var _PyData_ClassName_Testv = [...]_PyDataClassName_TestEntry{
{
"((U\x18ZODB.tests.testSerializeq\x01U\x13ClassWithoutNewargsq\x02tNtq\x03.",
"\x80\x02U\x18ZODB.tests.testSerializeq\x01U\x13ClassWithoutNewargsq\x02\x86N\x86q\x03.",
"ZODB.tests.testSerialize.ClassWithoutNewargs",
},
{
"((U\x18ZODB.tests.testSerializeq\x01U\x10ClassWithNewargsq\x02t(K\x01tq\x03tq\x04.",
"\x80\x02U\x18ZODB.tests.testSerializeq\x01U\x10ClassWithNewargsq\x02\x86K\x01\x85q\x03\x86q\x04.",
"ZODB.tests.testSerialize.ClassWithNewargs",
},
{
"cZODB.tests.testSerialize\nClassWithoutNewargs\nq\x01.",
"\x80\x02cZODB.tests.testSerialize\nClassWithoutNewargs\nq\x01.",
"ZODB.tests.testSerialize.ClassWithoutNewargs",
},
{
"(cZODB.tests.testSerialize\nClassWithNewargs\nq\x01(K\x01tq\x02tq\x03.",
"\x80\x02cZODB.tests.testSerialize\nClassWithNewargs\nq\x01K\x01\x85q\x02\x86q\x03.",
"ZODB.tests.testSerialize.ClassWithNewargs",
},
{"aaa", "?.?"},
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment