Firebird 1 Release Notes November 2001 Page 5
Win32 Forced Writes Default = ON
With the introduction of IB 6.0 the default FORCED WRITES setting for newly created databases, under
Win32, was changed to OFF, ostensibly to improve database performance but at the expense of
database integrity/recovery. The default has been reverted to ON.
Expressly Define the Location(s) of External Files
The new configuration-level setting for locating EXTERNAL FILES is specific to platform. It is currently
implemented only for Windows. only available on Windows. Here's how it works:
In the ibconfig file make an entry for each (existing) physical directory location where you want
Firebird to search for external files. Notice that you must enclose the path in double quotes in this
environment:
EXTERNAL_FILE_DIRECTORY "H:\test"
EXTERNAL_FILE_DIRECTORY "H:\external"
There is no limit on the number of directories that will be searched. Firebird will treat a series of
entries as a search list.
Then -
isql> create table foo1 external file 'foo1.txt' (afield(char1), crlf char(2));
Using our example entries, Firebird will look in both h:\test and h:\external to see if the file foo1.txt
exists. If it does, the external file table will be created and will point to the file in the right directory
(although the rdb$external_file field in rdb$relations will store just foo1.txt, with no directory details).
When the table foo1 is accessed, the file will be picked up automatically in the proper external file
directory.
If the file doesn't exist, it gets created by default in the default (current) directory, wherever you are
when isql or the relevant utility is run. In this case, the directory name will be stripped from the
external file definition in rdb$relations because you have already defined EXTERNAL_FILE_DIRECTORY.
The assumption is that, if you are not specifying a path, then you are referring to an existing file in an
external file directory that has been previously defined. It will pay you in this case, therefore, to run
isql from the directory where you want the file to be found by the database engine.
If EXTERNAL_FILE_DIRECTORY isn't defined in the config file, the external file gets the full path
treatment as as per ISC_expand_filename. If you
isql> create table foo1 external file 'h:\files\foo1.txt' (
afield(char1),
crlf char(2));
i.e. specify the directory name for the external file. If the file exists it gets defined as normal or, if
doesn't exist, gets created as normal, in the directory specified.
Limit raised on External Table handles (NT)
The former limit of the number of external tables that can be in use simultaneously on NT is the
default number of fopens allowed minus some files we read, or about 510.
The Firebird change increases that total number of fopens on NT to the highest value allowed on the
operating system, 2048. The actual limit on the number of external tables that can be open