Re: ACE dirty read
Posted in 1994
>From: Tom Hogarty <hogarty.pad@sni.de> >Subject: ACE dirty read >Date: 18 Oct 1994 11:07:03 GMT >X-Informix-List-Id: <news.9309> > > A colleague has recently asked me about setting dirty read > in an ace report. As I don't need to use this tool any more > I had to say that I haven't a clue. However, further inquiry > led me to believe that an undocumented environment variable > was available to set dirty read on. Its name is SACESO or > something like that but I cannot confirm. SACEISOL and SPERISOL are documented in the 4.12 release notes. SPERISOL and SACEISOL Environment Variables =========================================== Version 4.11 of INFORMIX-SQL provided the ability to run PERFORM forms using dirty read isolation with an OnLine backend. In Version 4.12, this feature has been extended to allow ACE reports and PERFORM forms to be run in any isolation level. This feature will only be of interest to you if you are running ISQL with OnLine, and is provided mainly to provide compatibility for those who upgrade from Standard Engine to OnLine. The following description assumes an understanding of "levels of isolation" in OnLine databases; you can find this information in your OnLine Programmer's Manual. The Standard Engine always runs in dirty read mode; the default isolation level for OnLine databases with no logging is dirty read, for MODE ANSI databases the default is repeatable read, and for databases with transaction logging the default is committed read. Each mode has a different tradeoff between isolation and concurrency. When you upgrade from a Standard Engine to OnLine, the isolation level will automatically change, as described above. Usually, the new default isolation level is more suitable than the old; however, in some cases, it will be preferable if the concurrency level remains the same under OnLine as it was under Standard Engine. This can be accomplished in I4GL by adding 4GL code that sets the isolation mode to dirty read, and it can be similarly accomplished in ISQL scripts. To set the isolation level for PERFORM, set the environment variable SPERISOL to one of the following values; similarly, to set the isolation level for ACE, set the environment variable SACEISOL to one of these values: dirty read committed read cursor stability repeatable read In Bourne Shell or Korn Shell, use: SPERISOL="dirty read" export SPERISOL In C Shell, use: setenv SACEISOL "repeatable read" The isolation level can be specified in upper- or lowercase (or mixed case), but only a single space is allowed between the words, and there must be no leading or trailing spaces. If the value in the variable is unrecognised, the variable is silently ignored, as is the error from Standard Engine. The environment variables must be set before running the ISQL program (or SPERFORM or SACEGO); trying to set it using a shell escape from within ISQL will have no effect. You can use different isolation levels for reports and forms by setting the two environment variables to different values. Note that setting the isolation to dirty read in PERFORM does not allow the user to update a row that is locked by another user, but it would allow the user to see a row that another user has locked. Yours, Jonathan Leffler (johnl@informix.com) #include <disclaimer.h> PS: Looking at the source code history, it would appear that both SPERISOL and SACEISOL existed some time ago -- like 4.11 and earlier. You could also try SACEISQL; there was an interval when the name was misspelt in the source. Use strings(1) on the object file and see what you come up with...