[comp.databases] Informix C-ISAM bug with isclose

sullivan@vsi.UUCP (Michael T Sullivan) (08/04/88)

Here's something for you C-ISAM folks.  We have a program that needs to
break up a logical C-ISAM file into different physical files based on date.
There is a need to access these various files chronologically.  What we were
doing was going down the directory these files were in getting file names,
doing an isopen(), followed by reading the file, doing an isclose() and
going on to the next file until we had reached the last file in the
directory.  Problem was when a person wanted to go through this searching
again, an error would come back when trying to open the directory saying
that the file table was full.  Turns out that isclose() does a VIRTUAL
close on the data files so that if you wanted to re-open them C-ISAM would
just look in a table to see which open file descriptors belonged to the
file you want.  isopen() would just go circularly around the file table
merrily opening files.  Sounds pretty silly especially in light of the fact that
this is undocumented.  There is a fix, however.  It is an undocumented
fix (for an undocumented problem) so I hesitate to post it, but you can
call Informix's tech support people (insert maintenance contract disclaimers
here) and get a fix that makes isclose() do a REAL close (i.e. close(2)).

I don't expect hundreds of people to call Informix after reading this but
if you do come up with this error, hopefully you'll have a vague memory
of the "solution".

-- 
Michael Sullivan		{uunet|attmail}!vsi!sullivan
				sullivan@vsi.com
V-Systems, Inc. Santa Ana, CA	I'm too young to have been married 1 year!