FB 2.5: Что-то кардинально изменилось в работе с BLOB'ами?
Добавлено: 18 фев 2009, 15:23
Firebird-2.5.0.22748-0_Win32 SS,
FIB 6.8.5
Не знаю, кто тут виноват - FIB или Firebird, но на FB 2.1.2 все было еще нормально.
Вдруг в одном месте стал ругаться на invalid BLOB ID. Происходит это при попытке проапдейтить в датасете блоб-поле, которое было null.
Причем у меня подобных мест много, но сломалось только в одном и чем оно отличается от других - хоть убей не пойму. Покопавшись, выяснил, что этому блобу при фетче присваивается какой-то левый BlobID, но честно говоря так и не понял, кто это делает - то ли FIB самодеятельностью занимается, то ли FB ему такое дает. Что интересно, происходит это только при втором открытии датасета (причем после коммита и повторного старта транзакции), что вроде как говорит в пользу косячности FIB'а, но не понятно, почему то же самое проходит без проблем под FB 2.1?
Пока победил это заплаткой типа
т.е. принудительным выставлением нулевого BlobID, если blob нулловый, но это все-таки заплатка, хотелось бы искоренить причину
Сорри, если с веткой ошибся, но все-таки явно что-то изменилось в Firebird, фибы-то те же...
FIB 6.8.5
Не знаю, кто тут виноват - FIB или Firebird, но на FB 2.1.2 все было еще нормально.
Вдруг в одном месте стал ругаться на invalid BLOB ID. Происходит это при попытке проапдейтить в датасете блоб-поле, которое было null.
Причем у меня подобных мест много, но сломалось только в одном и чем оно отличается от других - хоть убей не пойму. Покопавшись, выяснил, что этому блобу при фетче присваивается какой-то левый BlobID, но честно говоря так и не понял, кто это делает - то ли FIB самодеятельностью занимается, то ли FB ему такое дает. Что интересно, происходит это только при втором открытии датасета (причем после коммита и повторного старта транзакции), что вроде как говорит в пользу косячности FIB'а, но не понятно, почему то же самое проходит без проблем под FB 2.1?
Пока победил это заплаткой типа
Код: Выделить всё
if BLOBField.IsNull then BLOBField.SetData(@NullQUID, true);
Сорри, если с веткой ошибся, но все-таки явно что-то изменилось в Firebird, фибы-то те же...