powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
11 сообщений из 11, страница 1 из 1
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
    #37326644
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

Пишу сюда, т.к. nntp на этой машине не доступен, а автор IBE здесь регулярно бывает :-)
Надеюсь на его пояснения по следующим фактам.

Трейс показывает, что в ИБЭ:
1. С момента аттача к БД до восстановления окон "предыдущего рабочего окружения" последовательно открывается и закрывается 17 транзакций; это всё понятно и хорошо;
2. После выполнения вот такой пары команд в Script Executive:
Код: plaintext
1.
create table ttt(id int);
commit;
- происходит:
2.1 открытие и немедленное закрытие (без единого оператора) транзакции TRA_22, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE (см аттач);
2.2. открытие загадочной TRA_23, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE, в которой ничего не происходит и которая остается активной до дисконнекта или следующего commit'a;
2.3 открытие TRA_24, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE, в которой делается один селект из RDB$RELATIONS, после чего она коммитится;
2.4 открытие TRA_25, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE, в которой опять делается один селект из RDB$RELATIONS и транзакция коммитится.

Обращаю внимание: транзакция TRA_23 остаётся всё это время активной в режиме READ_ WRITE .
Выяснилось далее, что:
а) если выполнить дисконнект от базы (а также реконнект), то эта транзакция будет отменена rollback'ом, хотя в ней ничего не менялось и не селектилось:
Код: plaintext
1.
2.
3.
4.
5.
2011-06-27T23:45:04.6090 (428:020DE01C) ROLLBACK_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe:1244
		(TRA_23, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)
      0 ms, 1 read(s), 1 write(s), 1 fetch(es), 1 mark(s)
б) если в том же окне ScriptExecutive сделать второй DDL:
Код: plaintext
1.
drop table;
commit;
- то в этой TRA_23 будет выполнено нечто:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Statement  101 :
-------------------------------------------------------------------------------
select cast( 1  as integer), cast(d.rdb$character_set_name as varchar( 64 )), cast(c.rdb$default_collate_name as varchar( 64 ))
from rdb$database d
left join rdb$character_sets c ON (d.rdb$character_set_name = c.rdb$character_set_name)
union
select cast( 2  as integer),  cast(rdb$field_name as varcha...
 11  records fetched
       1  ms,  64  fetch(es),  2  mark(s)

Table                             Natural     Index    Update    Insert    Delete   Backout     Purge   Expunge
***************************************************************************************************************
RDB$DATABASE                             1                                                             1           
RDB$FIELDS                                         1                                                             
RDB$RELATION_FIELDS                                7                                                             
RDB$RELATIONS                                      1                                                             
RDB$CHARACTER_SETS                                 2                                                             
- и затем она закроется COMMIT'ом.

Но затем опять повторяется странность: открывается ОДНА транзакция на DDL, в ней грохается таблица, транзакция коммитится, а дальше, после COMMIT'a, снова открываются ДВЕ транзакции - TRA_28, которая тут же закрывается, ничего не выполнив, а за ней - новая "загадка" - TRA_29, которая ничего не делает.

И всё бы ничего, да ведь все эти транзакции (TRA_23, TRA_29) висят в режиме READ_COMMITTED | REC_VERSION | NOWAIT | READ_ WRITE . И значит, перед отъездом домой закрывать надо не только результаты запросов в SQL Editor'e, но и выполненные с commit'ом скрипты в SE!

ВОПРОС_1. Открытие транзакций-"висяков" после commit'a в Script Executive - это бага или давно известная фича ?

ВОПРОС-2. Зачем на старте делать такое кол-во (17) мелких RW-транзакций, которые обращаются к rdb$-таблицам и ничего не меняют в базе ? почему нельзя это делать в RO-транзакциях ?
...
Рейтинг: 0 / 0
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
    #37326683
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Возможно, баг.
2. Проблема в чем?
...
Рейтинг: 0 / 0
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
    #37326732
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert2. Проблема в чем?До тех пор, пока они короткие, проблемы нет. Но лучше бы они работали в RO-режиме, раз уж ничего не меняют... ;-)
Кроме того, непонятно:
1) для чего два раза делать каунт из RDB$RELATIONS с одним и тем же предикатом:
Код: 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.
 2011 - 06 -27T23: 56 : 49 . 4530  ( 428 :020DE01C) START_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe: 1244 
		(TRA_18, CONCURRENCY | WAIT | READ_WRITE)

 2011 - 06 -27T23: 56 : 49 . 4530  ( 428 :020DE01C) EXECUTE_STATEMENT_FINISH
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe: 1244 
		(TRA_18, CONCURRENCY | WAIT | READ_WRITE)

Statement  53 :
-------------------------------------------------------------------------------
SELECT COUNT(*) FROM RDB$RELATIONS WHERE RDB$RELATION_NAME = 'IBE$VERSION_HISTORY'

 1  records fetched
       0  ms,  2  fetch(es)

 2011 - 06 -27T23: 56 : 49 . 5000  ( 428 :020DE01C) COMMIT_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe: 1244 
		(TRA_18, CONCURRENCY | WAIT | READ_WRITE)
      39  ms,  1  read(s),  1  write(s),  1  fetch(es),  1  mark(s)

 2011 - 06 -27T23: 56 : 49 . 5000  ( 428 :020DE01C) START_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe: 1244 
		(TRA_19, CONCURRENCY | WAIT | READ_WRITE)

 2011 - 06 -27T23: 56 : 49 . 5000  ( 428 :020DE01C) EXECUTE_STATEMENT_FINISH
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe: 1244 
		(TRA_19, CONCURRENCY | WAIT | READ_WRITE)

Statement  54 :
-------------------------------------------------------------------------------
SELECT COUNT(*) FROM RDB$RELATIONS WHERE RDB$RELATION_NAME = 'IBE$VERSION_HISTORY'

 1  records fetched
       0  ms,  2  fetch(es)

 2011 - 06 -27T23: 56 : 49 . 5000  ( 428 :020DE01C) COMMIT_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe: 1244 
		(TRA_19, CONCURRENCY | WAIT | READ_WRITE)
       0  ms,  1  read(s),  1  write(s),  1  fetch(es),  1  mark(s)
2) для чего открывать и тут же закрывать транзакцию после той, в которой выполнится DDL, вот фрагмент:
Код: 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.
2011-06-27T23:56:49.5000 (428:020DE01C) START_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe:1244
		(TRA_21, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)

2011-06-27T23:56:49.5150 (428:020DE01C) EXECUTE_STATEMENT_FINISH
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe:1244
		(TRA_21, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)

-------------------------------------------------------------------------------
 create table ttt(id int) 
0 records fetched
      0 ms

2011-06-27T23:56:49.5150 (428:020DE01C) COMMIT_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe:1244
		(TRA_21, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)
      6 ms, 6 read(s), 23 write(s), 234 fetch(es), 21 mark(s)

2011-06-27T23:56:49.5150 (428:020DE01C) START_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe:1244
		(TRA_22, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)

2011-06-27T23:56:49.5150 (428:020DE01C) COMMIT_TRANSACTION
	C:\1INSTALL\FIREBIRD\DATA\TEST3.FDB (ATT_3, SYSDBA:NONE, WIN1251, XNET:BALAHA)
	C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe:1244
		(TRA_22, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)
      0 ms, 1 read(s), 1 write(s), 1 fetch(es), 1 mark(s)
...
Рейтинг: 0 / 0
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
    #37326780
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидКроме того, непонятно:


Особенности реализации.
...
Рейтинг: 0 / 0
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
    #37327017
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

Теперь Таблоид и тебя сосчитал!
...
Рейтинг: 0 / 0
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
    #37327321
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryIBExpert,

Теперь Таблоид и тебя сосчитал! я всего лишь проверил информацию, поступившую из одного надёжного источника...
Ну и сам, ес-сно, натыкался на это, причем много раз. Поэтому захотелось детальнее посмотреть, что там да как.

2 IBExpert :
если бага (с транзакциями-"висяками", см пункт 1 в стартовом посте) будет исправлена, то где об этом посмотреть ? Тута или еще где-то ?
...
Рейтинг: 0 / 0
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
    #37327775
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид 2 IBExpert :
если бага (с транзакциями-"висяками", см пункт 1 в стартовом посте) будет исправлена, то где об этом посмотреть ? Тута или еще где-то ?

Уже исправил.
...
Рейтинг: 0 / 0
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
    #37327921
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpertУже исправил.А откуда скачивать ? вот тута лежит пока версия от 2 6 июня 2011.
dir:
Код: plaintext
26.06.2011    13:13     16351232 IBExpert.exe
...
Рейтинг: 0 / 0
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
    #37327926
olegenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну раз уже качнул - трассирни, и будет понятно...
...
Рейтинг: 0 / 0
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
    #37328005
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegentyну раз уже качнул - трассирни, и будет понятно...дык! разумеется, протрассировал снова - я ж на дату не сразу внимание обратил. Но лог остался тем же самым, снова TRA_23 запускается после commit'a и не закрывается. После уже понял причину: ibe_sfx.exe датирован позавчерашним днём, а об ошибке я сообщил вчера :-)
...
Рейтинг: 0 / 0
IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
    #37328077
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправил != выложил
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / IBExpert 2011.06.12: оставляет в ScriptExecutive открытую тран-цию после DDL + commit'a
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]