[ 
https://issues.apache.org/jira/browse/DERBY-6136?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rick Hillegas updated DERBY-6136:
---------------------------------
    Attachment: derby-6136-01-ab-teardownCorruptDB.diff

Thanks for that feedback and for kicking the tires, Bryan. Attaching 
derby-6136-01-ab-teardownCorruptDB.diff. With this rev of the patch, the full 
tests run cleanly.

A later test (DboPowersTest) was failing. This was because the SQL 
authorization decorator does not remove its database. RawDBReaderTest creates a 
test involving a lot of decorators: authentication, SQL authorization, and 
encryption. DboPowersTest tried to re-use the database but couldn't because 
DboPowersTest didn't know the boot password created by RawDBReaderTest. The fix 
was to have RawDBReaderTest delete the database so that it couldn't be re-used. 
There may be a more elegant way to accomplish this, say, by composing the 
decorators in a different order and by adding a drop-database decorator. I 
couldn't figure out how to do that, however. My solution was to do the 
following:

1) Make RawDBReaderTest.tearDown() delete the database.

2) That wasn't enough, however. After the database was deleted, the 
authentication decorator's tearDown() logic re-created the database in order to 
reset properties. So I had to tell the authentication decorator not to do that.

Touches the same files as the previous rev.


> Create a custom/optional tool for dumping the data in a corrupted database.
> ---------------------------------------------------------------------------
>
>                 Key: DERBY-6136
>                 URL: https://issues.apache.org/jira/browse/DERBY-6136
>             Project: Derby
>          Issue Type: Improvement
>          Components: Tools
>    Affects Versions: 10.11.1.1
>            Reporter: Rick Hillegas
>         Attachments: DataFileVTI.java, DataFileVTI.java, DataFileVTI.java, 
> DataFileVTI.java, DataFileVTI.java, DerbyRecovery-0.0.1-SNAPSHOT.jar, 
> RawDBReader.java, RawDBReader.java, RawDBReader.java, dataFileVTI.sql, 
> derby-6136-01-aa-productize.diff, derby-6136-01-ab-teardownCorruptDB.diff, 
> log2[1].dat, log3[1].dat, log4[1].dat, log5[1].dat, log[1].ctrl, 
> logmirror[1].ctrl
>
>
> It would be useful to have a tool for dumping the data in a corrupted 
> database. This could start out as a custom tool. After we debug the tool and 
> get some experience with it, we can consider promoting it to be a (possibly 
> undocumented) optional tool which we ship with the product. I think the tool 
> should have the following behavior:
> 1) The tool should not subvert the security of the corrupted database. If the 
> corrupted database is password-protected, then you would need to present its 
> DBO's credentials in order to use the tool. Naturally, an encryption key 
> would have to be presented in order to decode an encrypted database.
> 2) The tool should not stop reading a table when it hits a corrupt record. 
> Instead, the tool should soldier on and collect a list of warnings on bad 
> records.
> Such a tool would be useful in situations where some part of a heap table is 
> corrupt but the following heap conglomerates are intact:
> i) SYSSCHEMAS
> ii) SYSTABLES
> iii) SYSCONGLOMERATES
> iv) SYSCOLUMNS
> v) property conglomerate
> Such a tool would be useful for some situations where data can't be dumped 
> even after you delete the log files in order to short-circuit recovery.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to