"Kovalenko Dmitry" ...

А чем для сервера должна отличаться "висящая" открытой транзакция
из-за обрыва соединения и в этом случае?

   Тем, что ругается он при детаче. А значит и приложение и коннект живы.

Я вот щас напписал очередной шаблонный код

-------------
{
connection_object->Attach(....)

isc_tr_handle tr_handle=NULL

isc_start_transaction(status_vector, &tr_handle, ....)
} //деструктор connection_object будет пытаться выполнить дисконнект и обломится

   И кто тут с прямыми руками ?

// Но мне не страшно - я после этого выгружу клиентскую библиотеку к едрене 
матери
-------------

   См. выше

Мысль о том, что детач должен ругаться на наличие открытых транзакций, конечно 
правильная.

   Да

Как и та, что при передаче NULL в качестве статус вектора, fbclient.dll 
опрокидывает все приложение.

   Нет такой мысли - одни баги

Типа пишите правильные приложения. Но что то тут очень сильно Джимом пахнет :)))

   В моргскуль :)

Проблема с детачем решается исключительно построением дерева объектов, в 
котором дети блокируют в памяти родителей

   Нет никакой проблемы с детачем

connection <--- transaction <---- statement

и не дают их грохать раньше себя.

Вопрос - в правильных FIBPlus я могу грохнуть датабазу раньше транзакции? В нем 
используются блокировки, это дело предотвращающие?

   Не знаю, не пользую, но подозреваю что родители как минимум проверяют наличие
детей с хендлами и возможно грохают их сами.

   Блокировки ваще не догнал - это ты о чём ?

Это я щас чисто с точки зрения "ох....вания" IB API, спрашиваю.

   Ничё, попустит... :)

--
Хорсун Влад

Ответить