Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Position с Blob в FB3 непонятно себя ведет / 22 сообщений из 22, страница 1 из 1
04.01.2018, 11:10
    #39579243
Atanas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
С НГ всех,
Столкнулся с тем, что Position не находит подстроку FB3. Ниже код, в котором первый suspend возвращает 0, второй 1.
По-идее и первый должен был вернуть единицу.
Подскажите причину такого поведения?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create or alter procedure A_TEST
returns (
    RES integer)
as
declare variable BL blob sub_type 1 segment size 80 collate UNICODE_CI;
declare variable TXT varchar(255) collate UNICODE_CI;
begin
  bl= 'declare variable ID D_ID;declare variable TEST_FIELD D_INTEGER;';
  txt = 'declare variable id d_id;';
  res = position(txt, bl);
  suspend;
  res = position ('declare variable id d_id;','declare variable ID D_ID;declare variable TEST_FIELD D_INTEGER;');
  suspend;
end
...
Рейтинг: 0 / 0
04.01.2018, 13:22
    #39579322
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
Atanas,

навскидку: вставил буковку не с той раскладки, например, с или а
...
Рейтинг: 0 / 0
04.01.2018, 13:28
    #39579324
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
Atanas,

2. функция l регистрочувствительна. Попробуй так:
Код: sql
1.
res = position(UPPER(txt), UPPER(bl));
...
Рейтинг: 0 / 0
04.01.2018, 13:35
    #39579330
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
Док,

ну так он же коллейт указал не чувствительный к регистру
...
Рейтинг: 0 / 0
04.01.2018, 17:07
    #39579417
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
Симонов Денисну так он же коллейт указал не чувствительный к регистру
не знал ...
...
Рейтинг: 0 / 0
04.01.2018, 17:47
    #39579428
Atanas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
Симонов Денис,

Да, collate указал, а тут такая засада...
...
Рейтинг: 0 / 0
04.01.2018, 17:49
    #39579429
Atanas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
ДокAtanas,

навскидку: вставил буковку не с той раскладки, например, с или а

Да нет, сверху вниз копипастил, второй position не дал бы единицу.
...
Рейтинг: 0 / 0
04.01.2018, 18:11
    #39579430
VDSoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
Atanas,

Ты упростил бы пример, сделал бы что-то вроде select pos(cast('' as blob collate), cast('' as blob collate)) from $rdb$database, тогда бы и в тренер было бы легче, если что. А то, так, чувствую, здесь всем лень такое компилировать. ))
...
Рейтинг: 0 / 0
04.01.2018, 18:31
    #39579440
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
VDSoft,

зачем компилировать EXECUTE BLOCK же есть
...
Рейтинг: 0 / 0
04.01.2018, 18:36
    #39579443
VDSoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
Симонов Денис,

Отвечаю, - потому что так и проще и нагляднее и выделяет, имхо, только собственно проблему.
...
Рейтинг: 0 / 0
04.01.2018, 18:43
    #39579446
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
VDSoft,

ошибаешься. CAST AS и локальная переменная с заданным коллейтом вовсе не обязательно эквивалентны.
...
Рейтинг: 0 / 0
04.01.2018, 18:47
    #39579451
VDSoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
Симонов Денис,

Я не хочу гадать, хочу чтобы автор сам в таком вот упрошенном варианте проверил и ответил. Не исключено, что это попутно наведет его на еще какие-нибудь мысли.
...
Рейтинг: 0 / 0
05.01.2018, 09:47
    #39579554
Atanas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
VDSoft, если лень компилять, вот:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
execute block
returns (
    RES integer)
as
declare variable BL blob sub_type 1 segment size 80 collate UNICODE_CI;
declare variable TXT varchar(255) collate UNICODE_CI;
begin
  bl= 'declare variable ID D_ID;declare variable TEST_FIELD D_INTEGER;';
  txt = 'declare variable id d_id;';
  res = position(txt, bl);
  suspend;
  res = position ('declare variable id d_id;','declare variable ID D_ID;declare variable TEST_FIELD D_INTEGER;');
  suspend;
end



То, что написал и так значительно упрощенный вариант. Из оригинала только значения переменных взял.
Upper или Cast можно воспользоваться, и вполне успешно. Но это не решение, это костыль.
...
Рейтинг: 0 / 0
05.01.2018, 10:42
    #39579566
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
Atanas,

какой чарсет и коллейт у БД ? У коннекта ?
...
Рейтинг: 0 / 0
05.01.2018, 11:02
    #39579577
VDSoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
Atanas,

Мне не только, действительно, лень, но даже компьютера сейчас нет. Но мы не услышали ответа на вопрос, - с простым одиночным селектор, с cast(), чтоб материализовать блоб на лету с нужным коллейтом, но без upper(), естественно, оно работает или нет?
...
Рейтинг: 0 / 0
05.01.2018, 14:40
    #39579714
Atanas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
hvladAtanas,

какой чарсет и коллейт у БД ? У коннекта ?

У БД: DEFAULT CHARACTER SET UTF8 COLLATION UNICODE_CI;
Коннект: UTF8
fb: 3.0.2.32703
...
Рейтинг: 0 / 0
05.01.2018, 16:29
    #39579764
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
Похоже на баг, создашь тикет в трекере ?
...
Рейтинг: 0 / 0
06.01.2018, 10:46
    #39580001
Atanas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
hvlad,

Да, попробую
...
Рейтинг: 0 / 0
06.01.2018, 11:09
    #39580006
Atanas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
Добавил сюда
...
Рейтинг: 0 / 0
09.01.2018, 20:27
    #39581295
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
Atanas,

Исправил, завтра можно проверить снапшот
...
Рейтинг: 0 / 0
10.01.2018, 10:18
    #39581512
Atanas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
hvlad,

Спасибо большое!
...
Рейтинг: 0 / 0
05.02.2018, 19:10
    #39597051
Atanas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Position с Blob в FB3 непонятно себя ведет
Atanashvlad,
Спасибо большое!

Обновились до 3.0.3, работает! :D
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Position с Blob в FB3 непонятно себя ведет / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]