Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
 Изменение поля BLOB  [new]
bsa1959
Member

Откуда: Минск
Сообщений: 41
Добрый день!
Понадобилось хранить в БД битовое поле большой длины.
Написал UDF - прочитать значение бита и установить.
Чтение бита проходить на ура.
Запись бита валиттся с ошибкой

Invalid data type, length, or value.
function SET_BIT could not be matched.

Решил проверить UDF поставляемую с FIREBIRD.

update kl_value set bitset = string2blob('sdsdsdsdsds', bitset) where did = 106

получил тоже самое

Invalid data type, length, or value.
function STRING2BLOB could not be matched.

Подскажите - куда смотреть?

Firebird 2.5.7 Windows 10
11 сен 17, 13:55    [20786747]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7420
bsa1959,

нафига в Firebird 2.5 использовать STRING2BLOB он же и так нормально с блобами работает без прыжков в ширину. ИХМО хранить битовые маски в BLOB изврат какой-то. Какой максимальной длины может быть маска?
11 сен 17, 13:59    [20786766]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
hvlad
Member

Откуда:
Сообщений: 9312
bsa1959
Invalid data type, length, or value.
function STRING2BLOB could not be matched.

Подскажите - куда смотреть?
В декларацию ф-ции, вестимо.
У которой один параметр, а не два.
11 сен 17, 14:02    [20786773]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
bsa1959
Member

Откуда: Минск
Сообщений: 41
declare external function string2blob
varchar(300) by descriptor,
blob returns parameter 2
entry_point 'string2blob' module_name 'fbudf';
11 сен 17, 14:04    [20786781]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
hvlad
Member

Откуда:
Сообщений: 9312
bsa1959,

и чё ?
11 сен 17, 14:05    [20786783]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
bsa1959
Member

Откуда: Минск
Сообщений: 41
Симонов Денис,

Сообщение целиком прочитайте, пжлст....
Ошибки выскакивает на моей функции.
String2Blob я привел в качестве примера поведения, абсолютно соотвествующего поведению на моей функции....
11 сен 17, 14:06    [20786788]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
bsa1959
Member

Откуда: Минск
Сообщений: 41
hvlad,

У Вас функция String2Blob работает?
11 сен 17, 14:08    [20786799]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57683
bsa1959> У Вас функция String2Blob работает?

У неё один параметр, а ты 2 передаёшь.

Posted via ActualForum NNTP Server 1.5

11 сен 17, 14:15    [20786829]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
hvlad
Member

Откуда:
Сообщений: 9312
bsa1959
hvlad,

У Вас функция String2Blob работает?
Она у всех работает уже больше 10 лет :)
11 сен 17, 14:19    [20786841]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
hvlad
Member

Откуда:
Сообщений: 9312
bsa1959
Понадобилось хранить в БД битовое поле большой длины.
[VAR]CHAR CHARACTER SET OCTETS
подходит для этого гораздо лучше.
Если, конечно, хватает 32КБ
11 сен 17, 14:21    [20786854]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
bsa1959
Member

Откуда: Минск
Сообщений: 41
Гаджимурадов Рустам,

Теперь все понял... Спасибо.
11 сен 17, 14:22    [20786858]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
bsa1959
Member

Откуда: Минск
Сообщений: 41
hvlad,
Ну и как в этой строке читать и выставить битики?
11 сен 17, 14:27    [20786881]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
Шавлюк Евгений
Member

Откуда: Одесса
Сообщений: 358
bsa1959,

17329111
11 сен 17, 14:33    [20786924]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
hvlad
Member

Откуда:
Сообщений: 9312
bsa1959
Ну и как в этой строке читать и выставить битики?
Ну так UDF же писать умеем ?
11 сен 17, 14:46    [20786983]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57683
Зачем писать UDF, если есть встроенные?

Posted via ActualForum NNTP Server 1.5

11 сен 17, 15:02    [20787061]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7420
Гаджимурадов Рустам,

они годятся максимум для BIGINT, а у автора битовый массив супердлинный
11 сен 17, 15:05    [20787080]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
bsa1959
Member

Откуда: Минск
Сообщений: 41
hvlad,
Т.е. разговор шел о накладных расходах при работе с блобами? А принцип - один и тот же - UDF...
11 сен 17, 15:08    [20787104]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
bsa1959
Member

Откуда: Минск
Сообщений: 41
Да. Действительно не влазят в BIGINT.

А по поводу character set octets - нужно подумать. Производительность должна быть повыше.

Все спасибо за советы.
11 сен 17, 15:20    [20787175]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43932

bsa1959
Да. Действительно не влазят в BIGINT.

А в 3-4 BIGINT могут влезть?

Posted via ActualForum NNTP Server 1.5

11 сен 17, 15:22    [20787188]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
hvlad
Member

Откуда:
Сообщений: 9312
bsa1959
Т.е. разговор шел о накладных расходах при работе с блобами?
Блобы не любят частые апдейты.

bsa1959
А принцип - один и тот же - UDF...
На это тоже стоит посмотреть
Шавлюк Евгений
17329111
UDF я бы писал только для максимальной скорости (не факт, что это место вообще является критичным)
11 сен 17, 15:25    [20787211]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
bsa1959
Member

Откуда: Минск
Сообщений: 41
Dimitry Sibiryakov,
Разговор ПОКА идет о 2000-3000 битах.
Из-за того что ПОКА не хотелось бы потом разгонять эти изменения на 10-20 рабочих мест и серваков.
Рабочее место тоже сорентировано на это.
Эта проблема возникла из-за того что часть обработки я решил переложить на сервак.
11 сен 17, 15:30    [20787230]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
bsa1959
Member

Откуда: Минск
Сообщений: 41
hvlad,

Это разговор уже про тройку firebird. А я в самом начале написал - firebird 2.5.7.
11 сен 17, 15:33    [20787245]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7420
bsa1959,

ну используй хранимые процедуры вместо хранимых функций
11 сен 17, 15:42    [20787304]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
чччД
Guest
bsa1959
Dimitry Sibiryakov,
Разговор ПОКА идет о 2000-3000 битах.
Из-за того что ПОКА не хотелось бы потом разгонять эти изменения на 10-20 рабочих мест и серваков.
Рабочее место тоже сорентировано на это.
Эта проблема возникла из-за того что часть обработки я решил переложить на сервак.

Не люблю битовые поля, особенно когда заранее не знаешь, сколько их.
А когда их №№ "подразумевают" конкретные экземпляры сущностей - просто кушать не могу, как я их не люблю.
11 сен 17, 15:42    [20787305]     Ответить | Цитировать Сообщить модератору
 Re: Изменение поля BLOB  [new]
hvlad
Member

Откуда:
Сообщений: 9312
bsa1959
hvlad,

Это разговор уже про тройку firebird. А я в самом начале написал - firebird 2.5.7.
Серьёзно ? Комбинация BIT_XXX, ASCII_XXX и SUBSTRING - это про 3-ку ?
11 сен 17, 16:05    [20787408]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить