SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » Ошибки при старте транзакции (Какие бывают?)
Ошибки при старте транзакции [сообщение #404] Mon, 29 August 2022 14:08 Переход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
Помимо очевидного обрыва сети и неверных параметров, какую ошибку может вернуть IAttachment::StartTransaction()? И известны ли в дикой природе приложения, которые эту ошибку как-то разумно обрабатывают?
Re: Ошибки при старте транзакции [сообщение #407 является ответом на сообщение #404] Tue, 30 August 2022 12:32 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 332
Зарегистрирован: June 2022
Senior Member
Старт пишущей транзакции на RO БД или read реплике.
Re: Ошибки при старте транзакции [сообщение #432 является ответом на сообщение #404] Thu, 01 September 2022 19:12 Переход к предыдущему сообщениюПереход к следующему сообщению
Старый Плюшев в настоящее время не в онлайне  Старый Плюшев
Сообщений: 95
Зарегистрирован: August 2022
Географическое положение: Ленинград
Member
SD писал(а) Mon, 29 August 2022 14:08
И известны ли в дикой природе приложения, которые эту ошибку как-то разумно обрабатывают?
Известно по крайней мере одно. Когда я только начинал возиться тогда ещё с IB4, транзакции я стартовал процедуркой с обработкой ошибок. Ну и по привычке все ошибки приложения складывал в лог. В качестве рудимента и атавизма вызов сей процедурки ещё живёт в древнейших модулях. За 26 лет активного функционирования приложения таковых ошибок зарегистрировано ровно 0.
Re: Ошибки при старте транзакции [сообщение #434 является ответом на сообщение #432] Fri, 02 September 2022 01:00 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
Спасибо, Дед.
Re: Ошибки при старте транзакции [сообщение #1010 является ответом на сообщение #434] Fri, 18 November 2022 20:26 Переход к предыдущему сообщениюПереход к следующему сообщению
optimiz94 в настоящее время не в онлайне  optimiz94
Сообщений: 15
Зарегистрирован: July 2022
Junior Member
Вообще, существуют триггеры на старт и коммит транзакции, которые теоретически могут кидать любые исключения.
Однажды я очень долго не понимал, почему база тормозит, пока не обнаружил, что в COMMIT-триггере есть запросы, которые иногда оказывались очень тяжёлыми (зависело от того, что писалось в транзакции).
Re: Ошибки при старте транзакции [сообщение #1019 является ответом на сообщение #1010] Mon, 21 November 2022 13:23 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
я сейчас занят тем, что отделяю тухлое от кислого.
2PC-транзакции от ординарных.
ну вот на кой хер в IBX все транзакции стартуют посредством isc_start_multiple, а не isc_start_transaction, мне лично непонятно.

─ пачиму лигушка квакает?
─ патаму, что может!
─ а пачиму нэ литаит?
─ не хочэт...
(© грузинский анекдот)
Re: Ошибки при старте транзакции [сообщение #1023 является ответом на сообщение #1019] Mon, 21 November 2022 15:58 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
Ну так Дельфи вменяемо научился работать с varargs (или по крайней мере документировал эту опцию) когда?..
Re: Ошибки при старте транзакции [сообщение #1024 является ответом на сообщение #1023] Mon, 21 November 2022 16:38 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
SD
. Ну так Дельфи вменяемо научился работать с varargs (или по крайней мере документировал эту опцию) когда?..
штатно вроде бы в D6 (я через неё перепрыгнул), в D7 оно точно есть и задокументировано.
в D5 надо было малость поизвращаться.
Re: Ошибки при старте транзакции [сообщение #1025 является ответом на сообщение #1024] Mon, 21 November 2022 17:12 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
собственно говоря, в D5 при db_handle_count=1 можно было особенно не заморачиваться.
декларация была:
Tisc_start_transaction = function (status_vector           : PISC_STATUS;
                                   tran_handle               : PISC_TR_HANDLE;
                                   db_handle_count           : Short;
                                   db_handle                 : PISC_DB_HANDLE;
                                   tpb_length                : UShort;
                                   tpb_address               : PChar): ISC_STATUS;
                                cdecl;
но тем не менее, isc_start_transaction не используется, а вместо этого всегда дёргается isc_start_multiple, и куча приседаний с притоптыванием, на случай "а вдруг она таки на самом деле multiple..."
Re: Ошибки при старте транзакции [сообщение #1029 является ответом на сообщение #1024] Tue, 22 November 2022 01:33 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
МП писал(а) Mon, 21 November 2022 14:38
штатно вроде бы в D6 (я через неё перепрыгнул), в D7 оно точно есть и задокументировано.
Ага, задокументировано в стиле "есть такая опция". И всё. Вплоть до 2006-й как минимум. Догадаться, что в неё можно передавать array of const - нужен хрустальный шар больше моего. Превращение в нужную форму array of variant, чтобы число параметров было реально переменным, а не просто литералы в compile-time - тоже те ещё прыжки в ширину. В общем, лично я так и ниасилил.
Re: Ошибки при старте транзакции [сообщение #1032 является ответом на сообщение #1029] Tue, 22 November 2022 12:57 Переход к предыдущему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
до того как Борманды задокументировали varargs для импортируемых функций, решалось это примерно так:
Tisc_expand_dpb = procedure(
                            dpb: PPChar;
                            dpb_length: PShort;
                            item_list: array of Pointer
                            ); cdecl;
без всяких varargs

[Обновления: Tue, 22 November 2022 15:24]

Известить модератора

Предыдущая тема: Автоматизация gstat
Следующая тема: Доменная авторизация
Переход к форуму:
  


Текущее время: Mon Dec 23 04:40:25 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00859 секунд