Информация IBCDatabase.DatabaseInfo[TransactionInfo]

Обсуждение возникших проблем, предложений и ошибок IBDAC компонентов
Закрыто
raMZES
Сообщения: 30
Зарегистрирован: Ср 14 сен 2011 10:49

Информация IBCDatabase.DatabaseInfo[TransactionInfo]

Сообщение raMZES » Сб 01 сен 2012 18:11

Здравствуйте. Возникла необходимость получения информации о транзакциях.
Использую:
- IBCConnection.DatabaseInfo.InfoOldestTransaction;
- IBCConnection.DatabaseInfo.InfoOldestActive;
- IBCConnection.DatabaseInfo.InfoOldestSnapshot;
- IBCConnection.DatabaseInfo.InfoNextTransaction;

Однако значение InfoNextTransaction не соответствует действительности. Возможно, имеет место ошибка. Значение совпадает с InfoOldestActiveInfoOldestSnapshot).

IBDac 4.2.7.

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: Информация IBCDatabase.DatabaseInfo[TransactionInfo]

Сообщение AndreyZ » Пн 03 сен 2012 11:00

Здравствуйте,

Я повторил данную проблему. IBDAC использует isc_database_info API функцию для получения статистики базы данных, которая возвращает некорректные данные об идентификаторах транзакций. Мы не можем повлиять на данное поведение функции isc_database_info. За более подробной информацией о данной проблеме, обратитесь пожалуйста к разработчикам Firebird.

raMZES
Сообщения: 30
Зарегистрирован: Ср 14 сен 2011 10:49

Re: Информация IBCDatabase.DatabaseInfo[TransactionInfo]

Сообщение raMZES » Пн 03 сен 2012 19:31

Понял. Спасибо. Буду рапортовать о проблеме разработчикам сервера.

raMZES
Сообщения: 30
Зарегистрирован: Ср 14 сен 2011 10:49

Re: Информация IBCDatabase.DatabaseInfo[TransactionInfo]

Сообщение raMZES » Вт 04 сен 2012 18:20

Замкнутый круг какой-то. Создал тему на форуме с проблемой. Разработчик говорит, что у них все правильно. Приглашают Вас обсудить...

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: Информация IBCDatabase.DatabaseInfo[TransactionInfo]

Сообщение AndreyZ » Ср 05 сен 2012 11:15

Мы более глубоко исследовали данную проблему. IBDAC при соединении с базой получает ее данные, при этом стартуется и завершается транзакция. Если хотя бы одна транзакции была начата в текущей сессии, вызов isc_database_info в этой сессии возвращает в Oldest Transaction идентификатор этой транзакции, а Oldest Active, Snapshot и Next Transaction - идентификатор этой транзакции плюс один. Это поведение Firebird, мы не можем повлиять него. За более подробным объяснением данного поведения Firebird, обратитесь пожалуйста к разработчикам Firebird.

raMZES
Сообщения: 30
Зарегистрирован: Ср 14 сен 2011 10:49

Re: Информация IBCDatabase.DatabaseInfo[TransactionInfo]

Сообщение raMZES » Ср 05 сен 2012 16:29

Спасибо за разъяснение и потраченное Вами время. Ваше сообщение можно опубликовать на форуме http://www.ibaseforum.ru в созданной мной теме?

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

Re: Информация IBCDatabase.DatabaseInfo[TransactionInfo]

Сообщение AndreyZ » Чт 06 сен 2012 08:16

Да, опубликовывайте. Могу добавить что я также проверил несколько сторонних компонент и все ведут себя одинаково. До использования транзакций в сессии идентификаторы получаются корректные, после - некорректные (вполне возможно что это корректное поведение Firebird).
И еще, утилита gstat читает идентификаторы транзакций напрямую из файла базы данных без подключения к ней (в отличии от других компонент и утилит для работы с Firebird). Вы можете найти подробное описание утилиты gstat здесь: http://www.firebirdsql.org/manual/gstat.html

Закрыто