
February 22nd, 2013, 12:02 AM
|
 |
Lost in code
|
|
|
|
|
I know absolutely nothing about Firebird; however, 2147483647 is the largest number that can be represented by a signed 32-bit integer. 2147483647 bytes is approximately 2GB.
NTFS does not have a maximum filesize of 2GB, even on a 32-bit system. So the problem with corruption is probably caused by Firebird directly. This would tend to imply that internally it is using a signed 32-bit integer to represent a position within the file. That is something you cannot change except by upgrading to a 64-bit version of Firebird, which cannot run on a 32-bit OS.
If Firebird supports splitting a database into multiple files that might solve the problem, provided that internally all of its pointers are relative to the individual files and not the database as a whole. In that case, 2147483647 bytes is theoretically the maximum size for any one database file, but in practice you would probably want to decrease that a bit to have some extra wiggle room.
|