From: Cosmin P. <cos...@ad...> - 2007-07-18 17:45:00
|
Hello everyone, this is my first mail to the "developer" list. I'm not working on the Firebird code-base (in fact I can't even compile it, being able to compile it myself would make my troubles about a 1000 times smaller). =20 I'm working on a tool to help me recover a few corrupted databases that can't be fixed with "mend" (mend makes it worst). I'm trying to build a program that takes a FDB file and "dumps" it's contents to a new FDB file, doing direct disk access. I'm trying this because I'd rather have 99% good data + 1% corrupted data out of the database, and at the moment "mend" gives 0% data (it deletes tables). =20 So far I've been able to do the basics: Open the file, read the system tables - RDB$FIELDS, RDB$RELATION_FIELDS so I've certainly done some things right :-) By now I can re-create all the tables (that's proof I was able to properly read RDB$FIELDS, RDB$RELATIONS and RDB$RELATION_FIELDS) and I'm starting on pumping data. Here's where my luck ends. =20 I need some info on how Firebird stores it's data types on disk. How does NUMERIC(18,4) look on disk? How about DATE? TIMESTAMP? NUMERIC(3,2)? VARCHAR seems to give me trouble too. =20 If anyone could point me towards a "H" or "C" or "CPP" file that does some work on those types so I have a starting point, I'd be eternally grateful. So far I used a "grep" variant to search for key identifiers, starting from "ods.h". With those base types I have no idea where to start my search from. =20 -- Thanks, Cosmin Prund =20 =20 |