Subject Re: [firebird-support] Is it save to append some data at end of the binary firebird database file?
Author Ann Harrison
Fabiano Kureck suggested sticking application version information in the checksum slot of the page header.

Mark Rotteveel quite correctly responded.

That is very dangerous to do, the same bytes might be reused differently in a newer ODS. Either use a normal Firebird table to store version info, or do it outside of the database. Do not hack things in the internal structure.

The page header is not a good place to stick information. It does change to support new features.  However, the database header page has a place that you might be able to use.  The format of the header page is defined in ods.h.   The first part is fixed.  The second part is a string of "clumplets" which are groups of attribute-length-data triplets.  By design, Firebird skips over clumplets it doesn't understand.  You could write a program that adds a new clumplet of a type undefined by Firebird to hold your version information.  It wouldn't survive a gbak backup/restore cycle.

The discussion was about finding portable mechanism to identify the application version of a database.  Are you aware that databases are not portable across machines with different endian characteristics?

Good luck,

Ann