porting ISAM application to Linux
Posted in 2000
Topics: Error Codes & Troubleshooting, Platform-Specific Issues
Hi, I'm looking into porting an app to Linux/Informix. The app currently runs on OpenServer 4 and UnixWare 7 with Informix 2 (?) and Informix SE 7.2 respectively. On Linux I have purchased a copy of C-ISAM for Linux, and now I try to isopen() a .dat/.idx file from OpenServer and from UnixWare. I'm getting ISAM -171: ISAM error: isam file format change detected and messages about "locking strategy". I've tried bcheck and secheck to no avail. I read in the ISAM documentation for Linux (ISAM 7.24 UC5) that <quote from ISAM docs> 3. This version of C-ISAM is NOT compatible with 7.24.UC5 Standart Engine and should not be used with SE-created C-ISAM files. <end quote> now this is precisely my case : the .dat/.idx files were made on SE on OpenServer and UnixWare. on those systems I can access them without problems via C-ISAM programs. Can anyone shed some light on this ? Can you access SE data files via C-ISAM on Linux ??
David Stes wrote: > > Hi, I'm looking into porting an app to Linux/Informix. > > The app currently runs on OpenServer 4 and UnixWare 7 with Informix 2 > (?) and Informix SE 7.2 respectively. > > On Linux I have purchased a copy of C-ISAM for Linux, and now I try to > isopen() a .dat/.idx file from OpenServer and from UnixWare. > > I'm getting ISAM -171: ISAM error: isam file format change detected > > and messages about "locking strategy". I've tried bcheck and secheck to > no avail. > > I read in the ISAM documentation for Linux (ISAM 7.24 UC5) that > > <quote from ISAM docs> > > 3. This version of C-ISAM is NOT compatible with 7.24.UC5 Standart > Engine > and should not be used with SE-created C-ISAM files. > > <end quote> > > now this is precisely my case : the .dat/.idx files were made on SE on > OpenServer and UnixWare. > > on those systems I can access them without problems via C-ISAM programs. > > Can anyone shed some light on this ? > > Can you access SE data files via C-ISAM on Linux ?? Try export RESETLOCK=1 then bcheck dat and idx files
Matthew Smith wrote: > > > 3. This version of C-ISAM is NOT compatible with 7.24.UC5 Standart > > Engine > > and should not be used with SE-created C-ISAM files. > > > > <end quote> > > > > Can you access SE data files via C-ISAM on Linux ?? > > Try > export RESETLOCK=1 > then > bcheck dat and idx files I first did a "finderr 171" and it indeed suggested setting RESETLOCK, which I did, but it doesn't seem to help. The isopen() arguments that the programs use, are: ISINOUT | ISMANULOCK. Maybe I should purchase the www.bytedesigns.com product but I'm a bit surprised that it doesn't work.
David Stes wrote: > Matthew Smith wrote: > > > > > 3. This version of C-ISAM is NOT compatible with 7.24.UC5 Standart > > > Engine > > > and should not be used with SE-created C-ISAM files. > > > > > > <end quote> > > > > > > Can you access SE data files via C-ISAM on Linux ?? > > > > Try > > export RESETLOCK=1 > > then > > bcheck dat and idx files > > I first did a "finderr 171" and it indeed suggested setting RESETLOCK, > which I did, but it doesn't seem to help. > > The isopen() arguments that the programs use, are: ISINOUT | > ISMANULOCK. > > Maybe I should purchase the www.bytedesigns.com product but I'm a bit > surprised that it doesn't work. The $RESETLOCK environment variable setting seems to be unique to bcheck (secheck). It's purpose apparently being to convert the locking mechanism flag in the .idx file from one type to another. This is not really a cure for what I (or you?) is tring to do. I need to be able to _concurrently_ interact with the files in the database using SE *AND* a binary with CISAM linked in WITHOUT having to perform runtime conversions. On a sidebar, I note with glee that I was able to easily create a dynamically linked shared object library from libisam.a by extracting the individual .o files and re-linking them (with -shared) into a .so file. The sort.o module caused some undefined externals so this still resides in a static library by itself. This little exercise has led to a _dramatic_ saving in disk utilization (only one copy of the ISAM functions resides in the .so as opposed to being statically linked in to literally _hundreds_ of binaries) and additionally, overall system memory utilization has decreased! Score another coup for Linux!!! I now do the same with DISAM (Byte Designs). Getting back to the point though, the fact that Informix can release two products (Informix SE and Informix CISAM) with the exact same version number (7.24.UC5) that are incompatable with each other simply astounds me. I could understand this from a Redmond based company... It becomes even more of a joke when you realize that both offerings (CISAM and SE) contain a bcheck binary of the same version number (7.24.UC5) that are fundamentally different w.r.t. the lock handling. Someday, Informix may come to their senses and release compatible Linux based CISAM and SE products and thereby regain some of the runtime license revenue that they'll be losing from our company but I am beginning to doubt it. (Our upcoming Linux based clients are going to be installed with DISAM [Byte Designs] and a mildly hacked version of MySQL). PostIT Note to the Informix employees reading this: Send me an email if / when you *DO* release compatible product because it's going to be a pain having to have our tech support personnel deal with both MySQL and Informix interfaces. I guess an alternative would be to convert our existing client base to DISAM / MySQL... Over to you Informix?
Trevor van Bremen wrote: > > The $RESETLOCK environment variable setting seems to be unique to bcheck > (secheck). It's purpose apparently being to convert the locking > mechanism flag in the .idx file from one type to another. This is not > really a cure for what I (or you?) is tring to do. Right, I want to use informix se and c-isam at the same time, on the same idx,dat files. One program may use isopen() on the dat/idx file while another may be an .ec esql/c program uses embedded SQL. Is the latest SE for Linux doing this (which version?).