Re: Upgrade Online 5.x to Online 7.x
Posted in 1997
Jeff Sweetser wrote:
>
> Informix Experts,
>
> My company is currently running the following Informix products: Online =
> v5.03 and 4GL RDS v4.14 under DG/UX 5.4.11. We will be upgrading =
> shortly to Online v7.23 and 4GL RDS v6.05. I would appreciate any =
> knowledge that anyone out there has concerning potential problems or =
> pitfalls with this upgrade. I am trying to plan ahead. =20
>
> I am a relative newcomer to this site. If this has been covered =
> previously, please point me in the right direction to find the =
> information. =20
>
> Thanks in advance for you assistance.
>
> Jeff Sweetser
> Ward/Kraft, Inc.
> jsweetser@terraworld.net
> My opinions are my own and not my company's!
Jeff,
I did a conversion project for a client of us which had Online 5.01 and
4GL version 4.13. They are now running DSA 7.13 and 4GL 6.05.
The engine didn't gave us much problems exeptt that it is a faster in
certain qeuries, but I don't think this will be a problem for you.
The 4GL program runners (they use I4GL and R4GL) gave us a few minor
problems which are not very complex to fix.
- Our client used several 4GL modules where the same global-variable
was defined. In most cases this didn't caused a problem but in a few
cases an error appeared (I don't remember which one). This problem
was solved by making a globals file which is called in both modules.
- In our version of the engine there is a major problem when you try to
insert a non initialized record in the database. The engine will not
initialize or refuse it but will crash with a segmentation error
(PANIC). The told us the problem should be solved in 7.14 but it
isn't. (We tried). I think it is wise to test this with a small
program because when this bug is solved you don't have to worry. If
the bug isn't solved you must search the whole source if this can
happen, because it isn't nice when your production database crashes.
Please mail me if you have tried this out so I know for other clients
of us if we have to keep this in mind or we can forget is.
- The definition of cursors is changed in the 6.xx versions of 4GL.
The cursor names are now declared global (this was always done modular
in previous versions). Because the compiler cannot check this at
compilation level, informix decided to work internally with a
scrambled name. The problem you can get now, and we've got it, is
that you must scramble the cursor name first before you can refer to
it in a prepared statement. This is done with the function
cursor_name.
Our client situation was: (simplified)
Declare c_a cursor for
select *
from a
for update
foreach c_a into a.*
let str = "update a set aa = 'BB' where current of c_a"
prepare p_str from str
execute p_str
end foreach
Because the engine don't know the name c_a anymore the let statement
must be changed to: let str = "update a set aa= 'BB' where",
cursor_name(c_a)
You can find the second problem back in the release notes.
Informix has described the problem very clear.
I hope your migration goes well.