Subject Re: [firebird-support] Understanding (and upgrading?) ODS
Author Ann W. Harrison
Rich Pinder wrote:
> On the XP laptop, it runs (albiet slowly). On the 2003 server it starts
> to crawl at around 20,000 inserted records, then gets so slow I need to
> kill the job (and delete the rows, do a sweep, etc).
> ...
> Investigating further I find that I have installed the exact same
> version of FB on both machines. Running v1.5.2
> ...
> BUT the ODS Version reports 10.0 on the (slower) server, whereas it
> is 10.1 my laptop !
> So my question has to do with this difference. My read of the
> documentation led me to believe the ODS version was more tied to the
> running software ?

The ODS is the On Disk Structure and has everything to do with
the database file and (relatively) little to do with the running
software. The ODS defines what is written to disk - data formats,
system tables, index organization, the length of generators,
the format of database pages, etc. The ODS version is in two
parts - the number before the decimal point is the major version,
the part after is the minor version. Adding a new type of database
page is an example of a major ODS change. Adding an index to a
system table is a minor ODS change.

Originally, and again in Vulcan, major versions of the software
handled only only one major version of the ODS. However,
that requires that a server be able to use different engines for
different databases and that in turn requires an architecture
that disappeared for a decade or so.

InterBase after V4 and Firebird use the same engine to handle all
ODS versions starting with 8. InterBase 5 handled 8 and 9; InterBase
6 and Firebird 1 handle 8, 9, and 10. Firebird 2 handles 8, 9, 10,
and 11.

When you install a new version of InterBase, it automatically
upgrades the ODS of each database it connects to - sometimes
successfully, sometimes less so. The less successful upgrades left
the database stuck - didn't work with the new version of InterBase
and couldn't be read by the older version. Firebird does not do
automatic, in-place upgrades.

The right way to upgrade is to backup the database with the old
software and restore it with the new. In the actual case at
hand, you might try to avoid the backup/restore by identifying
the new system table indexes and creating them yourself in the
10.0 ODS database.