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.

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.