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

Откуда:
Сообщений: 44
Окружение:
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

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

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

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

Откуда:
Сообщений: 44
Энтузиасты продолжают развитие проекта 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

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

дополнительный обработчик приходиться делать на стороне 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

Откуда:
Сообщений: 38477
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

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

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

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

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

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

Откуда: Волгоград
Сообщений: 152
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

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

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

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

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

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

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

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

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

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

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

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

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

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

Откуда:
Сообщений: 44
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

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

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

Posted via ActualForum NNTP Server 1.5

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

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

автор
То, что в 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

Откуда: Казань
Сообщений: 5672
А это имеет принципиальное значение, чтобы на сервер уходил 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]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
Dimitry Sibiryakov
Member

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

Док
А это имеет принципиальное значение, чтобы на сервер уходил boolean вместо integer?

Технически на сервер всегда уходит integer. Точнее - byte.

Posted via ActualForum NNTP Server 1.5

11 июн 18, 12:27    [21484493]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12114
scorpion235
Окружение:
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

Кто-нибудь сталкивался с подобным?


Согласно документации, имя поля или имя домена должно содержать "boolean", например:
CREATE DOMAIN FIB$BOOLEAN AS
SMALLINT
DEFAULT 0
CHECK (VALUE IN (0,1,NULL));
11 июн 18, 15:03    [21484625]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12114
X11, тогда при создании persistent-полей в TpFibDataSet создаётся TFIBBooleanField.
11 июн 18, 15:05    [21484628]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
X11
Member

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


Авторы FIBов уже давным давно забросили свой проект.
11 июн 18, 15:07    [21484630]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
чччД__
Guest
X11
...
Согласно документации, имя поля или имя домена должно содержать "boolean", например:
CREATE DOMAIN FIB$BOOLEAN AS
SMALLINT
DEFAULT 0
CHECK (VALUE IN (0,1,NULL));

Может хватит уже чушь нести? Речь про булевские типы в фб3, а не про их древнюю эмуляцию библиотекой компонентов.
Хоть проверь сперва, прежде чем писать.
11 июн 18, 16:30    [21484713]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9577
scorpion235
тем более FibPlus чётко только под Firebird заточен

FireDAC, "незаточенный" под FireBird, работает с BOOLEAN. Кому верить ...
11 июн 18, 18:13    [21484810]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
scorpion235
Member

Откуда:
Сообщений: 44
Dmitry Arefiev,

никто не говорил, что FireDAC не работает с Firebird
11 июн 18, 18:43    [21484837]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
Vlad F
Member

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

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

По отзывам FireDac - не самое удачное решение, тем более FibPlus чётко только под Firebird заточен

И кто же автор тех отзывов по поводу FireDAC и каковы его аргументы конкретно?
И пробовал ли уважаемый автор сам с Firebird в FireDAC хоть что-нибудь самостоятельно?
12 июн 18, 22:36    [21486970]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12114
чччД__, тогда не надо нести чушь про FIBы, т.к. авторы их уже не поддерживают, т.е. FIBы по сути не развиваются.
13 июн 18, 12:23    [21487928]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
чччД__
Guest
X11
чччД__, тогда не надо нести чушь про FIBы, т.к. авторы их уже не поддерживают, т.е. FIBы по сути не развиваются.


Еще раз: речь идет исключительно о поддержке булевских полей, которые появились в FB3.0*. О поддержке в пакете FIB+, которую выложил Мадорин на гитхабе.

Ты - грузил/устанавливал/тестировал этот пакет, проверял его в плане поддержки "нативных" булевых полей, или просто поговорить вышел? Есть проблемы по теме топика - давай пообщаемся, если нет - какого ты в 21484625 вообще вылез, или просто слово знакомое - "boolean" увидел и не сдержался?
13 июн 18, 12:35    [21487982]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
scorpion235
Member

Откуда:
Сообщений: 44
чччД__
С небольшими плясками, правда: пришлось чуть подправить файлы проекта (FIBPlusEditors2007.dpk и FIBPlusEditors2007.dsk) для D2007, но теперь все работает
Выложи исходники, добрый человек. Думаю, многим пригодятся
17 июн 18, 08:11    [21497079]     Ответить | Цитировать Сообщить модератору
 Re: FibPlus не умеет передавать boolean-параметры  [new]
чччД__
Guest
scorpion235, тынц:
https://github.com/madorin/fibplus/issues/28
17 июн 18, 08:28    [21497090]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Delphi Ответить