Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 FibPlus не умеет передавать boolean-параметры  [new]
scorpion235
Member

Откуда:
Сообщений: 42
Окружение:
Delphi 10.2 Update 3 Tokyo Architect
FIBPlus 7.632.3171 (https://github.com/madorin/fibplus)
Firebird 3.0.3.32900

В Firebird 3 появились пакеты и тип данных boolean
Не смог добиться передачи boolean-параметра в Firebird
через компоненты FIBPlus

Передаю из Delphi:
автор
FIBDataSet.ParamByName('PARAM_NAME').AsBoolean := true;

но в Firebird уходит числовое значение 1

Кто-нибудь сталкивался с подобным?
10 июн 18, 09:22    [21483152]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
Любезный
Member

Откуда:
Сообщений: 519
Видимо, авторы ФИБов не научили компоненты различать версии сервера, поэтому ФИБы занимаются эмуляцией даже в 3.х.
10 июн 18, 09:46    [21483170]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
defecator
Member

Откуда:
Сообщений: 39475
Любезный
Видимо, авторы ФИБов не научили компоненты различать версии сервера, поэтому ФИБы занимаются эмуляцией даже в 3.х.

ФИБы авторы давным-давно забросили
10 июн 18, 09:48    [21483171]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
scorpion235
Member

Откуда:
Сообщений: 42
Энтузиасты продолжают развитие проекта FibPlus на github
Завел багу: https://github.com/madorin/fibplus/issues/27
10 июн 18, 09:54    [21483180]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
чччД__
Guest
scorpion235
...
Передаю из Delphi:
автор
FIBDataSet.ParamByName('PARAM_NAME').AsBoolean := true;

но в Firebird уходит числовое значение 1
...

Ну "уходит" и уходит, в чем проблема-то?
10 июн 18, 10:13    [21483207]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
scorpion235
Member

Откуда:
Сообщений: 42
чччД__,

дополнительный обработчик приходиться делать на стороне Firebird
SMALLINT преобразовывать в BOOL

автор
PROCEDURE SET_ACC_LOCK (
ID TYPE OF COLUMN ABONENTS.ID,
IS_ACC_LOCK SMALLINT) --FibPlus не умеет корректно работать с параметрами типа boolean
AS
BEGIN
UPDATE ABONENTS
SET IS_ACC_LOCK = INT_TO_BOOL(:IS_ACC_LOCK)
WHERE ID = :ID;
END

--переводит SMALLINT в BOOL
FUNCTION INT_TO_BOOL (
NUMBER SMALLINT)
RETURNS BOOL
AS
BEGIN
IF (NUMBER = 1) THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END
10 июн 18, 11:45    [21483312]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
defecator
Member

Откуда:
Сообщений: 39475
scorpion235
чччД__,

дополнительный обработчик приходиться делать на стороне Firebird
SMALLINT преобразовывать в BOOL

автор
PROCEDURE SET_ACC_LOCK (
ID TYPE OF COLUMN ABONENTS.ID,
IS_ACC_LOCK SMALLINT) --FibPlus не умеет корректно работать с параметрами типа boolean
AS
BEGIN
UPDATE ABONENTS
SET IS_ACC_LOCK = INT_TO_BOOL(:IS_ACC_LOCK)
WHERE ID = :ID;
END

--переводит SMALLINT в BOOL
FUNCTION INT_TO_BOOL (
NUMBER SMALLINT)
RETURNS BOOL
AS
BEGIN
IF (NUMBER = 1) THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END


если тебе не надо делать над полем операции, характерные только для boolean,
то ничего не надо преобразовывать - работай как 1 или О
10 июн 18, 13:56    [21483441]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
scorpion235
Member

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

для кого пример написал? обновление поля типа BOOL с дополнительными приседаниями
0 и 1 - это хорошо, но если появился новый тип данных, хочется с ним работать без
дополнительных преобразований
10 июн 18, 14:00    [21483452]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
defecator
Member

Откуда:
Сообщений: 39475
scorpion235
defecator,

для кого пример написал? обновление поля типа BOOL с дополнительными приседаниями
0 и 1 - это хорошо, но если появился новый тип данных, хочется с ним работать без
дополнительных преобразований

ну хоти, чо
10 июн 18, 14:02    [21483456]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
Олег Третьяков
Member

Откуда: Волгоград
Сообщений: 151
scorpion235
Энтузиасты продолжают развитие проекта FibPlus на github
Завел багу: https://github.com/madorin/fibplus/issues/27

Этот форк настолько багнутый, что в 10.2 пришлось отказаться от фибов вообще.
Во множестве мест интерфейсы на обниливаются, память портит, проект ложит на лопатки.
10 июн 18, 14:49    [21483506]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
чччД__
Guest
Олег Третьяков
scorpion235
Энтузиасты продолжают развитие проекта FibPlus на github
Завел багу: https://github.com/madorin/fibplus/issues/27

Этот форк настолько багнутый, что в 10.2 пришлось отказаться от фибов вообще..

В итоге - что решили использовать?
10 июн 18, 14:52    [21483510]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
Олег Третьяков
Member

Откуда: Волгоград
Сообщений: 151
чччД__
В итоге - что решили использовать?

То, что в 10.2 из коробки
10 июн 18, 14:57    [21483517]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
defecator
Member

Откуда:
Сообщений: 39475
Олег Третьяков
чччД__
В итоге - что решили использовать?

То, что в 10.2 из коробки

правильное решение, фибы давно мертвы, а кто-то всё продолжает за них держаться
10 июн 18, 14:58    [21483520]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
чччД__
Guest
Олег Третьяков
чччД__
В итоге - что решили использовать?

То, что в 10.2 из коробки

И что же было в тот раз в коробке?
10 июн 18, 15:04    [21483530]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
Олег Третьяков
Member

Откуда: Волгоград
Сообщений: 151
defecator
правильное решение, фибы давно мертвы, а кто-то всё продолжает за них держаться

Пришлось конечно рефакторить. Многопоточка, свои коннекты под каждый поток и работа с блобами тут немного иначе. Но зато работает стабильно и можно заняться более важными делами, чем ковыряние с этой бякой.
10 июн 18, 15:06    [21483531]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
Олег Третьяков
Member

Откуда: Волгоград
Сообщений: 151
чччД__
И что же было в тот раз в коробке?

То же самое, что и в прошлый))
Ща пинлюлей отгребем за флейм)
10 июн 18, 15:07    [21483535]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
NickDee
Member

Откуда:
Сообщений: 1369
scorpion235
Энтузиасты продолжают развитие проекта FibPlus на github
Завел багу: https://github.com/madorin/fibplus/issues/27

Разработчики фибов отдали их в опенсорс? Или опенсорс взял их у разработчиков без спросу?
Энтузиасты в курсе?
10 июн 18, 15:19    [21483562]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
scorpion235
Member

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

This repository is an attempt to keep alive one of the best suite of components that seems to be abandoned by Devrace, without pretending to any copyrights. Initial source code was taken from public forums.

The goal of this project is to collect patches, fix bugs, adjust code to latest versions of Delphi, improve functionality by adding new features.
10 июн 18, 15:38    [21483582]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
Dimitry Sibiryakov
Member

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

Надо было с самого начала выбирать API вместо кривых обёрток.

Posted via ActualForum NNTP Server 1.5

10 июн 18, 16:01    [21483608]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
scorpion235
Member

Откуда:
Сообщений: 42
Олег Третьяков,

автор
То, что в 10.2 из коробки

По отзывам FireDac - не самое удачное решение, тем более FibPlus чётко только под Firebird заточен
10 июн 18, 16:03    [21483612]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
vkorshun
Member

Откуда:
Сообщений: 50
Специально набросал небольшой тестовый проект. Все работает. Возможно что то Вы не правильно делаете - либо клиентская либа не та, диалект и т.д.
10 июн 18, 22:17    [21484001]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
чччД__
Guest
vkorshun
Специально набросал небольшой тестовый проект. Все работает. Возможно что то Вы не правильно делаете - либо клиентская либа не та, диалект и т.д.

+1
То же самое, примерно год назад специально ставил (20665907) фибы с гитхаба на Delphi 10.2, исключительно ради проверить работу фибов с полями типа boolean в FB3.*, все устроило.

Совершенно непонятны страдания ТС, что там на FB "уходит":
scorpion235
...но в Firebird уходит числовое значение 1...

Какая разница, что "уходит", если все работает как ожидается.

И -
scorpion235
Завел багу: https://github.com/madorin/fibplus/issues/27

- это вообще какой-то образец косноязычия: "не смог добиться", "в Firebird уходит".
10 июн 18, 23:57    [21484130]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
чччД__
Guest
vkorshun
Специально набросал небольшой тестовый проект. Все работает. Возможно что то Вы не правильно делаете - либо клиентская либа не та, диалект и т.д.


Только что поставил фибы с гитхаба (судя по всему, там развивается версии 7.6) на D2007, вместо своих 6.9.9.
С небольшими плясками, правда: пришлось чуть подправить файлы проекта (FIBPlusEditors2007.dpk и FIBPlusEditors2007.dsk) для D2007, но теперь все работает, и чертовы редакторы тоже.

Создал табличку с булевким полем:
CREATE TABLE TEST (
    ID      INTEGER NOT NULL,
    ISTRUE  BOOLEAN
);

накидал тест - все ОК, и с TpfibDataset, и с TpfibQuery, и обращение к полям и обращение к параметрам - все без проблем.


INSERT INTO TEST(
    ID,
    ISTRUE
)
VALUES(
    :ID,
    :ISTRUE
)
...
UPDATE TEST
SET
    ISTRUE = :ISTRUE
WHERE
    ID = :OLD_ID

Можно и .AsBoolean (t/f), и .AsInteger (0/1), и .Value - все одинаково хорошо.

И даже boolean - параметр в условии работает:
select t.id, t.istrue from test t
  where (t.istrue is null) or :cond
...
select t.id, t.istrue from test t
  where t.istrue or :cond

 fQ.ParamByName('cond').AsBoolean := True;


И "уходит", и "приходит". Как ожидается.
11 июн 18, 04:20    [21484199]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
Док
Member

Откуда: Казань
Сообщений: 5611
А это имеет принципиальное значение, чтобы на сервер уходил boolean вместо integer? Что мешает по старинке завести какой-нибудь булев домен типа
CREATE DOMAIN DMN_BOOL AS
SMALLINT
NOT NULL
CHECK (VALUE IN (0,1,-1));

и все преобразования делать на клиенте? Или мозоли на пальцах кровоточат? :)
11 июн 18, 08:10    [21484240]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
чччД__
Guest
Док,

все там как надо и без "доменной имитации" работает, это ТС тормозит.
11 июн 18, 08:29    [21484265]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Delphi Ответить