FB 2.5: Что-то кардинально изменилось в работе с BLOB'ами?

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
VerLeon
Сообщения: 44
Зарегистрирован: 24 ноя 2007, 08:43

FB 2.5: Что-то кардинально изменилось в работе с BLOB'ами?

Сообщение VerLeon » 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?
Пока победил это заплаткой типа

Код: Выделить всё

if BLOBField.IsNull then BLOBField.SetData(@NullQUID, true);
т.е. принудительным выставлением нулевого BlobID, если blob нулловый, но это все-таки заплатка, хотелось бы искоренить причину

Сорри, если с веткой ошибся, но все-таки явно что-то изменилось в Firebird, фибы-то те же...

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: FB 2.5: Что-то кардинально изменилось в работе с BLOB'ами?

Сообщение hvlad » 18 фев 2009, 16:38

Спрашивай на форуме FIB+, там тебе больше скажут

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Re: FB 2.5: Что-то кардинально изменилось в работе с BLOB'ами?

Сообщение dimitr » 18 фев 2009, 20:10

Бузз это на днях исправлял в плюсах :-)

VerLeon
Сообщения: 44
Зарегистрирован: 24 ноя 2007, 08:43

Re: FB 2.5: Что-то кардинально изменилось в работе с BLOB'ами?

Сообщение VerLeon » 19 фев 2009, 07:42

dimitr писал(а):Бузз это на днях исправлял в плюсах :-)
Ага.. Это хорошо, но все-таки изменилось же в самом Firebird? Я правильно понимаю, что раньше при фетче нуллового блоба в его XSQLVAR.sqldata возвращалось 8 нулей, т.е. реально нулевой BlobId, а теперь там может быть что попало и если sqltype = 521 (нуловый BLOB), то туда смотреть нельзя и надо самому проинициализировать его нулями?

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: FB 2.5: Что-то кардинально изменилось в работе с BLOB'ами?

Сообщение hvlad » 19 фев 2009, 10:34

VerLeon писал(а):если sqltype = 521 (нуловый BLOB)
Это не нулловый блоб, а признак того, что нуллы допускаются в данной XSQLVAR. Сам нулл передаётся по-другому

VerLeon
Сообщения: 44
Зарегистрирован: 24 ноя 2007, 08:43

Re: FB 2.5: Что-то кардинально изменилось в работе с BLOB'ами?

Сообщение VerLeon » 19 фев 2009, 10:50

hvlad писал(а):Сам нулл передаётся по-другому
Через sqlind? Ну да не в этом дело, главное, что при этом в sqldata лежит

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: FB 2.5: Что-то кардинально изменилось в работе с BLOB'ами?

Сообщение hvlad » 19 фев 2009, 11:38

VerLeon писал(а):
hvlad писал(а):Сам нулл передаётся по-другому
Через sqlind? Ну да не в этом дело, главное, что при этом в sqldata лежит
Забивать на sqlind не рекомендую.
Что там за бага была в FIB+ и почему она вылезла только с FB 2.5 - понятия не имею.
Посему рекомендую перечитать мой первый ответ в этой теме.

Ответить