Subject Re: [Firebird-Architect] Possibility to increase the maximum number of tables
Author Ann Harrison
On Fri, Jun 7, 2013 at 2:34 PM, hi.egor <hi.egor@...> wrote:

> From the first look at the system tables and their relations the reason of
> this limit is related to the datatype SHORT of column RDB$RELATION_ID of
> table RDB$RELATIONS and other related columns from tables ("RDB$DATABASE",
> "RDB$FORMATS", "RDB$PAGES"). Also I noticed that relations between
> different internal DB objects (such as columns, tables, indexes) are based
> on the "Table Name" (RDB$RELATION_NAME), but not "Table ID"
> (RDB$RELATION_ID). Looks like the primary used of RELATION_ID is to
> identify the PAGE in the data file.

Err, not exactly. Yes, the stored metadata uses names rather than numbers -
that makes it possible to do a major reorganization with gbak, eliminating
holes left from dropped tables, and so on. However, in a working
database, ID's are used all over. Changing
their size would be a major change to the on disk structure because data
and index pages include the relation id in their headers.

Consider these thoughts it seems to be not such a big and complex task to
> change SHORT datatype to for example LONG for RELATION_ID column (and
> related to it source code) to increase the maximum number of tables.

It is, unfortunately, both a big and a complex task to change the on disk
structure and all the parts of the code that reference
relation and field ids.

Best regards,


[Non-text portions of this message have been removed]