|
From: Paul B. <pa...@wa...> - 2001-09-18 14:09:34
|
I just wanted to float a problem by you and see if what I am proposing makes sense and can be added into Firebird as an improvement. Nothing earth shattering, as I am still getting back to grips with C. There currently is a limit on the number of external files that can be open at any one time. This limit is set at 1024 on all non windows systems (as defined in stdio.h). Solaris on the other hand is a special case :-), but thats not what this is about.Wheras on Windows the limit is actually 512. I have a customer who needs a much bigger limit. When Firebird accesses an external file the file is fopened and a file handle is allocated and not released until the database is no longer in use. In MSDN: "C run-time I/O now supports many more open files on Win32 platforms than in previous versions. Up to 2,048 files may be open simultaneously at the lowio level (that is, opened and accessed by means of the _open, _read, _write, and so forth family of I/O functions). Up to 512 files may be open simultaneously at the stdio level (that is, opened and accessed by means of the fopen, fgetc, fputc, and so forth family of functions). The limit of 512 open files at the stdio level may be increased to a maximum of 2,048 by means of the _setmaxstdio function." As such by putting the following in ext.c in the ext_file function #ifdef WIN32 _setmaxstdio(2048); #endif The limit on the number of external files can be increased significantly. Not a major fix, but a nice to have. Comments? Regards Paul Beach Main Tel (UK):+44 (0) 1844 354465 Mobile: (UK): +44 (0) 7764 188603 http://www.ibphoenix.com For all your upto date Firebird and InterBase information |