Introduction

The purpose of this document is to try and explain what goes on inside a
Firebird Database. Much of the information in this manual has been extracted from
the Firebird source code - mainly on the ODS related code and headers - and from
some (partially out of date) documents on the Research part of the IBPhoenix web
site (http://www.ibphoenix.com/). Other questions and queries that I had were very
patiently answered on the Firebird Support forums where the developers hang
out.

Much hex dumping of database files was undertaken in the creation of this
document, but no Firebird databases were harmed during this process.

All databases mentioned or described within this document are those with an
ODS of 11.1 - in other words, Firebird 2.1, and a page size of 4,096 bytes. There
may be differences between this ODS version and previous ones and wherever
possible, this has been documented.

Unless otherwise noted, the test database used for this document is empty of
all user tables, indices, generators etc. It was created on a 32 bit Linux system
running on Intel hardware. It is therefore little endian.