|
ISQL при коннекте стартует ТРИ транзакции (делая в 3-ей SELECT CURRENT_USER, CURRENT_ROLE)
|
|||
---|---|---|---|
#18+
hi all На пустой базе (alias = 'e30'), без каких-либо db-level триггеров, делаю: окно-1. C:\MIX\firebird\QA\fbt-repo\tmp>isql /3333:e30 -n Database: /3333:e30, User: SYSDBA SQL> commit; окно-2. Запускаем трейс с конфигом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
окно-3. C:\MIX\firebird\QA\fbt-repo\tmp>isql /3333:e30 Database: /3333:e30, User: SYSDBA Теперь гляжу в трейс и вижу, что ISQL в окне-3 стартовал не две транзакции (как всегда было раньше), а три. В транзакции #8 он запрашивает curr_user & curr_role, но не коммитит её: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52.
Код: plaintext 1. 2. 3. 4. 5.
И получаю ответ: TRA_8 мало того, что есть, так еще и со state = 1: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
А завершится эта TRA_8 только при вводе очередного стейтмента в окне-3. Причём, даже если там 'QUIT' ввести, трейс всё равно покажет, что эта транзакция завершилась COMMIT'ом (в отличие от двух остальных). Зачем нужна третья транзакция при старте ISQL, да еще в каком-то "висячем" состоянии ? Это всё так и было задумано ? PS. WI-V3.0.0.32008 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2015, 15:22 |
|
ISQL при коннекте стартует ТРИ транзакции (делая в 3-ей SELECT CURRENT_USER, CURRENT_ROLE)
|
|||
---|---|---|---|
#18+
ТаблоидЗачем нужна третья транзакция при старте ISQL, да еще в каком-то "висячем" состоянии ? Судя по запросу, это твой ON LOGON триггер. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2015, 16:15 |
|
ISQL при коннекте стартует ТРИ транзакции (делая в 3-ей SELECT CURRENT_USER, CURRENT_ROLE)
|
|||
---|---|---|---|
#18+
ТаблоидНа пустой базе (alias = 'e30'), без каких-либо db-level триггеров Извини, не заметил. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2015, 16:16 |
|
ISQL при коннекте стартует ТРИ транзакции (делая в 3-ей SELECT CURRENT_USER, CURRENT_ROLE)
|
|||
---|---|---|---|
#18+
я что-то смутное сомнение имею. Не могли вот эти штуки так повлиять: http://sourceforge.net/p/firebird/code/62017 http://sourceforge.net/p/firebird/code/62018 - ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2015, 16:46 |
|
ISQL при коннекте стартует ТРИ транзакции (делая в 3-ей SELECT CURRENT_USER, CURRENT_ROLE)
|
|||
---|---|---|---|
#18+
Таблоид, не угадал. Скорее всего из-за того что теперь ISQL выдаёт настоящего пользователя и роль, а не тех что указали при входе. см. http://sourceforge.net/p/firebird/code/62031 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2015, 17:06 |
|
ISQL при коннекте стартует ТРИ транзакции (делая в 3-ей SELECT CURRENT_USER, CURRENT_ROLE)
|
|||
---|---|---|---|
#18+
Что я "не угадал" ? ты привёл бубликат коммита http://sourceforge.net/p/firebird/code/62018, у него другой номер ввиду epic-fail'a на sf, который был в июле. Но таки вопрос остаётся в силе: почему эта тр-ция, что выводит "SELECT CURRENT_USER, CURRENT_ROLE FROM RDB$DATABASE", остаётся активной ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2015, 17:19 |
|
ISQL при коннекте стартует ТРИ транзакции (делая в 3-ей SELECT CURRENT_USER, CURRENT_ROLE)
|
|||
---|---|---|---|
#18+
Таблоид, извини. Ты привёл ссылки на коммиты, я вошёл по ним и увидел код который к этому никак не мог привести. Значит так внедрено неаккуратненько. Тут вот в чём вопрос, а может ли это навредить? Если да, то почему бы вывод пользователя и роли не сделать в транзакции которая и так стартует по-умолчанию для выполнения DML. Или же делать коммит той транзакции сразу же после отображения user и role ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2015, 17:40 |
|
ISQL при коннекте стартует ТРИ транзакции (делая в 3-ей SELECT CURRENT_USER, CURRENT_ROLE)
|
|||
---|---|---|---|
#18+
Симонов Денисможет ли это навредить? Не более, чем две остальные тр-ции, которые автоматом стартует ISQL. Эта "третья" тр-ция захлопнется сразу же при первом коммите. Далее ISQL будет стартовать только по две тр-ции. Мну просто показалось странным, что трейс на старте стал какой-то более "пухлый". Пригляделся - и поймал её за хвост :-) Симонов Дениспочему бы вывод пользователя и роли не сделать в транзакции которая и так стартует по-умолчанию для выполнения DML +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2015, 17:53 |
|
ISQL при коннекте стартует ТРИ транзакции (делая в 3-ей SELECT CURRENT_USER, CURRENT_ROLE)
|
|||
---|---|---|---|
#18+
Лично я бы вообще изменил логику isql, оставив только одну транзакцию и приведя работу autoddl к ораклятому варианту. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2015, 18:37 |
|
|
start [/forum/topic.php?fid=40&fpage=72&tid=1562645]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 285ms |
total: | 414ms |
0 / 0 |