SQL query receives garbage if record locked (informix)

General info:
D4, BDE 5.01/5.1.1, ODBC intersolv 3.11/informix 3.31, Informix 7.31.UC2 on
Solaris 2.5.1 (SCO and NT ....)

Description of situation:
I have two Delphi clients which are connected to a database.
-> 1st client: starts a transaction and updates some data in a table but
don't commit nor rollback. Page/row is now locked.
-> 2nd client: executes a query: "select * from table"
Expected behavior: 2nd client should receive "Key violation ... SAM error:
Record is locked" or similar exception.
Actual behavior: 2nd client receives garbage and no exception is raised

The same happens for both the tiDirtyRead and tiReadCommited TransIsolation
levels. I should also mention that I tried the same scenario with a console
application (dbaccess) and it worked as expected (exception raised).
If Delphi/dbaccess mix tried then if Delphi client makes a lock everything
is fine, but if I make a lock from dbaccess then Delphi client receives
garbage again.
If I change query to "select * from table order by 1" than it's OK, an
exception is raised, but only if updated row isn't indexed.

Question:
Why the 2nd client behaves as it does and how to provoke the lock exception?

Any help would be greatly appreciated.
Sorry for the long post.

Dinko Srkoc
helix d.o.o.