сервер 2.5 RC2

есть код, все делается на одной транзакции:

1) prepare запроса с параметрами, один из параметров БЛОБ
2) запрос в цикле выполняется многократно. Несколько тысяч раз.
3) перед выполнением присваиваются параметры. если есть БЛОБ, то он
создается
и присваивается как QUAD.
4) в базе есть триггер на проверку данных, который дает исключение
приблизительно в 5% случаев
5) отловив исключение, программа меняет некоторые параметры и
повторяет выполнение запроса
БЛОБ QUAD не меняется.

так вот, в такой схеме, при повторном выполнении запроса (после
обработки исключения)
произвольным образом (т.е. каждый раз на разных записях) появляется
ошибка "BLOB ID not found".

вылечилось следующим образом: при отлове исключения всегда создается
новый блоб, соответственно
получается новый QUAD, который присваивается параметру.

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



Ответить