An EXCLUSIVE-LOCK is sometimes downgraded to SHARE-LOCK after a transaction (a documented feature). This might lead to locking issues, especially when making the transaction inside a persistent procedure (user can not update a record because it is unintentionally being share-locked by another user). It is usually very hard work to find out, which transaction leaves the share-lock on. There is no use for SHARE-LOCK in our application.
Provide a way to prevent SHARE-LOCKs and always downgrade EXCLUSIVE-LOCKs to NO-LOCKs after transaction.
E.g., add a new startup parameter: -nosharelock
I realize that the parameter could potentially break some (poorly programmed) old code but this would still be better that the current situation.
This could be part of a 'strict' compile option, where a list of rules could be set:
- no share lock
- no abbreviated field names
Agree with everything said here.
See also https://goo.gl/veEHFh for an idea for the '-strict' parameter.
The strict compile mode would be a great idea. Here's conversation about it: