|
[
Permalink
| « Hide
]
Helen Borrie added a comment - 14/Sep/15 11:18 PM
Sorry the versions selector didn't seem to be working. I think it would be possible to do this for v.2.5.5 and port it forward to v.3.0.
Description of proposed implementation (see also https://github.com/FirebirdSQL/firebird/pull/258)
Add new SET command at ISQL: SET KEEP_TRAN_PARAMS: when ON it keeps text of following successful SET TRANSACTION statement and new DML transactions is started using the same SQL (instead of defaul CONCURRENCY WAIT mode) when OFF, isql start new DML transaction as usual. Name KEEP_TRAN_PARAMS could be cut up to the KEEP_TRAN. Example: SQL> SET; ... Keep transaction params: OFF SQL> SET KEEP_TRAN; SQL> SET; ... Keep transaction params: ON SET TRANSACTION SQL>commit; SQL>SET TRANSACTION READ COMMITTED WAIT; SQL>SET; ... Keep transaction params: ON SET TRANSACTION READ COMMITTED WAIT SQL> SELECT RDB$GET_CONTEXT('SYSTEM', 'ISOLATION_LEVEL') FROM RDB$DATABASE; RDB$GET_CONTEXT ============================================================= READ COMMITTED SQL> commit; SQL> SELECT RDB$GET_CONTEXT('SYSTEM', 'ISOLATION_LEVEL') FROM RDB$DATABASE; RDB$GET_CONTEXT ============================================================= READ COMMITTED SQL> SET KEEP_TRAN OFF; SQL> SELECT RDB$GET_CONTEXT('SYSTEM', 'ISOLATION_LEVEL') FROM RDB$DATABASE; RDB$GET_CONTEXT ============================================================= READ COMMITTED SQL> commit; SQL> SELECT RDB$GET_CONTEXT('SYSTEM', 'ISOLATION_LEVEL') FROM RDB$DATABASE; RDB$GET_CONTEXT ============================================================= SNAPSHOT SQL> SET; ... Keep transaction params: OFF SQL> The feature is committed into fb3 and fb4.
In fb3 KEEP_TRAN_PARAMS is OFF by default, preserving backward compatibility with old (weird) behaviour. In fb4 KEEP_TRAN_PARAMS is ON by default to make isql behaviour more logical by default. |