> On Nov 30, 2014, at 6:35 PM, Stuart Simon <[email protected]> wrote: > > OK, but version numbers tell me nothing. What I am looking for is an > explanation of how Firebird (the package) can tell which bytes belong to > which fields. Somehow Firebird must be able to tell the difference between > the following two records: > > FirstName LastName > 'Jim' 'Starkey' > 'Jim Starkey' '' > > > It may well be that it was coded in the Interbase days and has not been > looked up until now. Or maybe it's the blob in the "RDB$DESCRIPTOR" field, in > which case I do not know how to decode it into text. >>
No. The format of the record is included in the record header, which is described in ods.h. Use that number to look up the record in RDB$FORMATS. That tells you how long each field is - uncompressed. On disk, each record is compressed using a run lenth compression of the whole record. The first byte is a length. If it's positive, the next <n> bytes are data. If negiative, the next <n> bytes are the following byte value. E.g. 0x3, 'Jim', 0x-20, ' ', 0x7, 'Starkey', 0x23, ' ' etc. would be Jim(17 spaces)Starkey. That would correspond to FirstName 23, LastName 30. Good luck, Ann ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel
