Subject Re: [IB-Architect] Database files > 2GB.
Author Ivan Prenosil
> From: Bill Karwin <bill@...>
> To:
> Subject: Re: [IB-Architect] Database files > 2GB.
> > 2) ... The secondary file seems to not believe in relative
> > addressing ...
> > Whichever, it means that I must always have the GDB
> > in the same location, i.e. e:\data\sqldata\DBName which
> > has just made my database a whole lot less portable.
> This is an often-cited "gotcha" with multi-file databases. The path to the
> secondary files is written in the header page of the primary gdb file, and
> there is currently no tool that can alter these paths. You might be able to
> do it with a binary editor (make sure no one is attached to the database!).
> But you might have to ensure that the paths have the same number of
> characters.
> It would be challenging to do so in the general case, because if there are
> many files with long pathnames, the list can easily fill up the header page.
> InterBase allocates more header pages as necessary to store all the
> filenames. The extra header pages are not necessarily contiguous.
> The system table RDB$FILES stores the paths of secondary files and shadow
> files, but this is read-only; changing these values _doesn't_ change where
> InterBase looks for the secondary files.

In fact, secondary files are chained, i.e. each header page
contains only _one_ path pointing to next file.
Since path is limited to 253 characters (see tdb$files),
one header page is enough.