Hi,
in firebird the select .. for update statement it is very different than in other database
particularly this passage :
The Select For Update syntax has been present in InterBase for a long time but it has nothing to do with locking. During execution of a normal Select, records are sent to the client as packets. Although records are fetched by the application one by one, the client program (gds32, fbclient, libgds, etc.) gets from the server a packet of records of a requested size and buffers it. During execution of Select For Update the packets are formed of exactly one record. The next packet will be formed and fetched by the client only after the application requests it. Select For Update With Lock combines the functionality of Select For Update with a dummy update. In other words a new version of the record is created at the moment of fetch. It is the same thing that occurs when an update is posted, except that the triggers do not fire. So this statement can be used in all the above-mentioned cases instead of dummy update and you can forget about work of triggers. When using With Lock option remember that locks are released at the moment of the transaction end, not after the query is closed.
So in JOOQ with a firebird db we don't obtain a lock when i use the forUpdate method
ex :
getDsl().select().from(MATABLE).forUpdate().fetch() => select * from matable for update
i think for firebird it must generate => select * from matable for update with lock no ?