Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Неверное определение типа параметра / 9 сообщений из 9, страница 1 из 1
01.11.2018, 17:41
    #39726756
slay2012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверное определение типа параметра
Есть запрос:
Код: sql
1.
2.
3.
4.
5.
select
    t.*
from test_table t
where
    bin_and(t.groups, :gm) <> 0



DDL таблицы
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE TEST_TABLE (
    ID      INTEGER,
    A       INTEGER,
    GROUPS  BIGINT
);



После prepare получаем тип для параметра gm - integer. Ожидал что должен быть bigint (Как бы логично по типу первого аргумента)

Это баг или фича?

Код: plaintext
Server Version: LI-V3.0.4.33047 Firebird 3.0
...
Рейтинг: 0 / 0
01.11.2018, 18:31
    #39726784
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверное определение типа параметра
slay2012После prepare получаем тип для параметра gm - integer.
Что за integer?
Есть такие:
Код: pascal
1.
2.
3.
SQL_LONG  = 496;
SQL_SHORT = 500;
SQL_INT64 = 580;


Какой из них? Или другой? Какой код типа?
...
Рейтинг: 0 / 0
01.11.2018, 18:35
    #39726786
slay2012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверное определение типа параметра
YuRockslay2012После prepare получаем тип для параметра gm - integer.
Что за integer?
Есть такие:
Код: pascal
1.
2.
3.
SQL_LONG  = 496;
SQL_SHORT = 500;
SQL_INT64 = 580;


Какой из них?

SQL_LONG
...
Рейтинг: 0 / 0
01.11.2018, 18:42
    #39726791
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверное определение типа параметра
slay2012,

Тогда похоже на баг где-то.

А если попробовать самому переопределить параметр как SQL_INT64?
(если это Delphi IBX - для этого достаточно написать Params[0].AsInt64 = 1234567890123)

Запрос правильно сработает или нет? Если нет - значит точно баг сервера, если да - то возможно клиента, а то и компонентов доступа.
...
Рейтинг: 0 / 0
01.11.2018, 18:54
    #39726795
slay2012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверное определение типа параметра
YuRock,

Я пофиксил просто через cast
Код: sql
1.
2.
3.
4.
5.
select
    t.*
from test_table t
where
    bin_and(t.groups, cast(:gm as bigint)) <> 0


Так работает
...
Рейтинг: 0 / 0
01.11.2018, 19:50
    #39726820
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверное определение типа параметра
YuRockА если попробовать самому переопределить параметр как SQL_INT64?
(если это Delphi IBX - для этого достаточно написать Params[0].AsInt64 = 1234567890123)

нет ибо буфер под параметры определяется на этапе prepare
...
Рейтинг: 0 / 0
02.11.2018, 04:19
    #39726913
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверное определение типа параметра
Симонов ДенисYuRockА если попробовать самому переопределить параметр как SQL_INT64?
(если это Delphi IBX - для этого достаточно написать Params[0].AsInt64 = 1234567890123)

нет ибо буфер под параметры определяется на этапе prepareДа, но его можно поменять вручную (с неизвестными последствиями).
...
Рейтинг: 0 / 0
02.11.2018, 09:23
    #39726964
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверное определение типа параметра
YuRock,

параметры будут конвертироваться из заданного тобой типа в тип, определенный на этапе препаре. Последствия вполне предсказуемы.
...
Рейтинг: 0 / 0
02.11.2018, 09:26
    #39726969
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неверное определение типа параметра
slay2012После prepare получаем тип для параметра gm - integer. Ожидал что должен быть bigint (Как бы логично по типу первого аргумента)

Это баг или фича?
тип параметра выводится из нуля в неравенстве. Если общественность решит, что при наличии хоть одного явного аргумента BIN_* лучше использовать его тип и для параметра - пишем в трекер.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Неверное определение типа параметра / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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