powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Корректное завершение gbak/isql при b/r
173 сообщений из 173, показаны все 7 страниц
Корректное завершение gbak/isql при b/r
    #39868419
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Преамбула: я тут задался целью написать для себя кроссплатформенный велосипед с использованием всех утилит FB "в одном стакане", чтобы не мыкаться с командной строкой. В прикладе используется компонент TProcess (лазарусовская обвязка вокруг ShellExecute/System), который создается в доп.потоке, вызывает gbak/isql и т.д., ждет окончания их работы и благопристойно умирает вместе с потоком.

В ситуации, когда нужно срочно прервать b/r, мне необходимо сначала корректно завершить работу gbak/isql. Если просто уничтожить поток вместе с выполняющимся b/r, то утилиты, очевидно, лочат какое-то время выводимые файлы, потому что при повторной попытке запустить процесс я в течение 30-60 сек не могу удалить "неудачный" бекап и получаю отлуп:

Код: sql
1.
2.
gbak: ERROR:cannot open backup file d:\temp\test.fbk
gbak:Exiting before completion due to errors



Я читал про мониторинг, но DELETE FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION меня не устраивает, потому что бекап может делаться на работающей с юзерами базе. Можно, конечно, вычислить "виновника" по MON$REMOTE_PROCESS, но в этом случае грохнутся соседние экземпляры моего приложения, которые в этом время будут делать что-то еще. В идеале получить бы MON$ATTACHMENT_ID текущего коннекта, но как это сделать при использовании gbak?

Есть какие-нибудь соображения?
=================
Док.

Win7 Ultim x64/Deb 10 (MATE; gtk3) amd64:
FB 3.0.4.33054, Lazarus 2.1(r.61884); FPC 3.3.1 (r.43016), IBX by -Rik-
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868420
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

для gbak можно было сразу воспользоваться ServiceAPI и получить полный контроль за всем происходящим.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868426
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисможно было сразу воспользоваться ServiceAPI
можно подробнее для гуманитария, что ты имел ввиду? :)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868427
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

MON$REMOTE_PID
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868429
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докможно подробнее для гуманитария, что ты имел ввиду? :)

в IBX лазаря нет IBBackupService?
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868430
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисв IBX лазаря нет IBBackupService?
в данном случае я не использую его

hvladMON$REMOTE_PID
а как извлечь его из текущего соединения gbak? Есть какие-нибудь ключи? Или придется изучать низкоуровневой доступ к БД? :)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868432
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,
когда ты запускал дочерний процесс, ты мог получить его PID.

Кстати
ДокМожно, конечно, вычислить "виновника" по MON$REMOTE_PROCESS, но в этом случае грохнутся соседние экземпляры моего приложения, которые в этом время будут делать что-то ещетвои приложения называются gbak.exe ? :)

PS PID - это process ID (на всякий)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868436
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladкогда ты запускал дочерний процесс, ты мог получить его PID.
ага, вот ты о чем! Я наивно полагал, что PID надо получать из таблиц мониторинга :)

Щас спрошу на лазаревском форуме, можно ли получить PID из TProcess.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868438
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladтвои приложения называются gbak.exe ? :)
:)
нет, конечно, но я сделал вывод по аналогии, глядя в таблицы MON$ATTACHMENTS двух запущенных экземпляров IBE
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868439
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисвоспользоваться ServiceAPI и получить полный контроль за всем происходящим.

Авотфиг. Там не то что "полного", там минимального контроля и то нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868440
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокСимонов Денисв IBX лазаря нет IBBackupService?
в данном случае я не использую его

А почему ты его не используешь? Потому, что ты хочешь получать бэкап-файл на локальной (не серверной) машине, или еще почему-то?
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868445
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёА почему ты его не используешь? Потому, что ты хочешь получать бэкап-файл на локальной (не серверной) машине, или еще почему-то?
В том числе.

Я уже писал раньше, что на текущий момент, пилящиеся под Лазарь IBX от mwasoftware, либо не удовлетворяют потребностям последних версий FB (например, legacy-компоненты, оставшиеся в составе этой библы от первоисточника, не имеют пропертей обработки ключей -fix_fss_d/fix_fss_m), либо еще сырые и дают ошибки коннекта, если сервер(а) (например, в винде) установлен(ы) и запущен(ы) не стандартным инсталлятором, а из архивов и вручную.

Плюсуй сюда упертость автора, что продукт лучше развивать в соответствии с хотелками (в разумных пределах, конечно) пользователей, а не автора. Плюс независимость от нестандартных компонент доступа. В итоге получишь мои резоны :)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868446
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докя сделал вывод по аналогии, глядя в таблицы MON$ATTACHMENTS двух запущенных экземпляров
IBEIBE не запускает gbak. Он использует Service API
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868453
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

Влад, спасибо за наводку. Пошел пилить дальше
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868460
Фотография Tonal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

А вот в linux расширения .exe не будет. :)
У TProcess есть свойство ProcessID , в котором этот самый pid и должен отдаватся.
Кроме того, gbak , должен корректно отрабатывать прерывание по Ctrl+C - сигнал завершения.
Т. е. ты ему по pid -у можешь послать сигнал завершения и он всё корректно закроет.
Возможно TProcess так и делает по Terminate() , но можно и явно ручками послать через FpKill()
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868528
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

госпидя. скопипастил из fibplus, и сделал свой клон, если автор ибх под лазарь такой дебил, что даже ключи почти десятилетней давности не может добавить в servapi.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868534
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvавтор ибх под лазарь такой дебил

И эти люди ещё удивляются почему я использую API напрямую...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868541
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvесли автор ибх под лазарь такой дебил, что даже ключи почти десятилетней давности не может добавить в servapi.
я не был столь категоричен :) он там много чего полезного (я надеюсь, все не щупал) наворотил

Но вот это
вкупе с необходимостью чего-то доказывать, напрочь отбивает охоту ими пользоваться

Свой клон делать - это надо программистом работать, вот выйду на пенсию :)

TonalВозможно TProcess так и делает по Terminate() , но можно и явно ручками послать через FpKill()
На стороне клиента TProcess.Terminate(), действительно, убивает gbak (кстати, на виндах метод вызывает TerminateProcess, а на линуксе FpKill). На винде огрызок файла бекапа все равно остается залоченным 30-60 сек, в линуксе можно сразу запускать и прерывать процесс бекапа бесконечно много раз.




Поэкспериментирую с удалением по MON$REMOTE_PID, потом отпишусь
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868542
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovИ эти люди ещё удивляются почему я использую API напрямую...
я не удивляюсь, я тебе завидую :)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868606
Фотография Tonal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

Здесь описано как правильно посылать Ctrl+C в винде.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868789
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокНо вот это вкупе с необходимостью чего-то доказывать, напрочь отбивает охоту ими пользоваться
только что проверил. Поменял порт у фб на 3217. Запустил ФБ.
В Лазарусе коннект из IBXServicesConnection1 к
localhost/3217:service_mgr

отлично коннектится.

Когда меняю на localhost/3218:service_mgr

[Window Title]
Ошибка

[Content]
Unable to complete network request to host "localhost".
Failed to establish a connection

[ОК]

так что всё там работает. Ты просто или ФБ не запустил, или в конфиге ФБ не тот порт указал, или не рестартанул ФБ после изменения порта.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868869
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvДокНо вот это вкупе с необходимостью чего-то доказывать, напрочь отбивает охоту ими пользоваться
так что всё там работает. Ты просто или ФБ не запустил, или в конфиге ФБ не тот порт указал, или не рестартанул ФБ после изменения порта.
Вряд ли, у меня, как минимум, две версии сервера всегда крутятся. IBE доволен :). Вечерком проверю, конечно.

А у тебя сервак запущен как приложение или как сервис?
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868997
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокА у тебя сервак запущен как приложение или как сервис?
как приложение, но в случае tcp это не имеет никакого значения.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869213
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

скорее всего, у тебя че-та в реестре или в переменных среды есть, чего нет у меня.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Attempting to connect to:
localhost/3217:D:\Archive\Databases\general_base\FB_2_1\GENERAL_BASE_4X_2016_03_30.FDB... Connected successfully.
Server version: WI-V6.3.7.18553 Firebird 2.1
 
Disconnecting from database... Passed!
 
Attempting to connect to services manager:
localhost/3217:service_mgr... Connected successfully.

cmd
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
C:\Users\leyba>cd /d D:\Portable_program\Firebird_server\Firebird_2_1_7\bin\

D:\Portable_program\Firebird_server\Firebird_2_1_7\bin>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect 'localhost/3217:D:\Archive\Databases\general_base\FB_2_1\GENERAL_BASE_4X_2016_03_30.FDB' user sysdba password 'cooladmin';
Database:  'localhost/3217:D:\Archive\Databases\general_base\FB_2_1\GENERAL_BASE_4X_2016_03_30.FDB', User: sysdba
SQL> show version;
ISQL Version: WI-V2.1.7.18553 Firebird 2.1
Server version:
Firebird/x86/Windows NT (access method), version "WI-V2.1.7.18553 Firebird 2.1"
Firebird/x86/Windows NT (remote server), version "WI-V2.1.7.18553 Firebird 2.1/tcp (leyba-pc)/P11"
Firebird/x86/Windows NT (remote interface), version "WI-V2.1.7.18553 Firebird 2.1/tcp (leyba-pc)/P11"
on disk structure version 11.1


да и х@р с ним :)
Будет время, отпишу ему
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869219
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГРАЖДАНЕ!

вот нахрена вы оборачиваете значимую часть сообщения в СПОЙЛЕР?!!
просто потому что "красиво"?

ИЗАБЭЛЛА, йопть!

зы: по nntp не читаемо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869224
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийпо nntp не читаемо.

Ругайся Джуджу в ОНС, что он генерит HTML громоптицей не поддерживаемый.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869229
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

выходит - у тебя нет слушателя на 127.0.0.1, но есть на localhost.
Или он был не запущен.

Покажи
ping localhost
ping 127.0.0.1
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869233
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийГРАЖДАНЕ!
special for MP


IBE:
Attempting to connect to:
Код: sql
1.
2.
3.
4.
5.
6.
7.
localhost/3217:D:\Archive\Databases\general_base\FB_2_1\GENERAL_BASE_4X_2016_03_30.FDB... Connected successfully.
Server version: WI-V6.3.7.18553 Firebird 2.1
 
Disconnecting from database... Passed!
 
Attempting to connect to services manager:
localhost/3217:service_mgr... Connected successfully.



cmd:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
C:\Users\leyba>cd /d D:\Portable_program\Firebird_server\Firebird_2_1_7\bin\

D:\Portable_program\Firebird_server\Firebird_2_1_7\bin>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect 'localhost/3217:D:\Archive\Databases\general_base\FB_2_1\GENERAL_BASE_4X_2016_03_30.FDB' user sysdba password 'cooladmin';
Database:  'localhost/3217:D:\Archive\Databases\general_base\FB_2_1\GENERAL_BASE_4X_2016_03_30.FDB', User: sysdba
SQL> show version;
ISQL Version: WI-V2.1.7.18553 Firebird 2.1
Server version:
Firebird/x86/Windows NT (access method), version "WI-V2.1.7.18553 Firebird 2.1"
Firebird/x86/Windows NT (remote server), version "WI-V2.1.7.18553 Firebird 2.1/tcp (leyba-pc)/P11"
Firebird/x86/Windows NT (remote interface), version "WI-V2.1.7.18553 Firebird 2.1/tcp (leyba-pc)/P11"
on disk structure version 11.1



ps. звиняй, все время забываю, что ты nntp читаешь ;)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869234
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladвыходит - у тебя нет слушателя на 127.0.0.1, но есть на localhost.
Или он был не запущен.

Покажи
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
C:\Users\leyba>ping localhost

Обмен пакетами с leyba-pc [127.0.0.1] с 32 байтами данных:
Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128
Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128
Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128
Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128

Статистика Ping для 127.0.0.1:
    Пакетов: отправлено = 4, получено = 4, потеряно = 0
    (0% потерь)
Приблизительное время приема-передачи в мс:
    Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек

C:\Users\leyba>ping 127.0.0.1

Обмен пакетами с 127.0.0.1 по с 32 байтами данных:
Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128
Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128
Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128
Ответ от 127.0.0.1: число байт=32 время<1мс TTL=128

Статистика Ping для 127.0.0.1:
    Пакетов: отправлено = 4, получено = 4, потеряно = 0
    (0% потерь)
Приблизительное время приема-передачи в мс:
    Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869236
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
30.09.2019 15:25, Dimitry Sibiryakov пишет:
> Ругайся Джуджу в ОНС

жужель не писал nntp.
как и большую часть сего "портала".
ибо не копенгахен.
кроме того, его уже больше года с собаками ищут.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869256
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladвыходит - у тебя нет слушателя на 127.0.0.1, но есть на localhost.
не похоже: IBE
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Attempting to connect to:
127.0.0.1/3217:D:\Archive\Databases\general_base\FB_2_1\GENERAL_BASE_4X_2016_03_30.FDB... Connected successfully.
Server version: WI-V6.3.7.18553 Firebird 2.1
 
Disconnecting from database... Passed!
 
Attempting to connect to services manager:
127.0.0.1/3217:service_mgr... Connected successfully.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869257
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит и "вот это" 21981845 тоже должно работать
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869278
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЗначит и "вот это" 21981845 тоже должно работать
вечерком попробую переставить компоненты из последнего транка. Побежал на работу :)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869338
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

я буквально вчера лазаря и ибх ставил, потыкать, так что у меня полный свежак.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869348
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокhvladЗначит и "вот это" 21981845 тоже должно работать
вечерком попробую переставить компоненты из последнего транка. Побежал на работу :)
Эд, а ты IBX какой юзаешь? От Rik или родной? Может он тебе поможет?
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869371
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarОт Rik или родной?
Речь шла про форк от mwasoftware (которые в репах OPM лежит). От Юрия Копнина (aka Rik) они уже устарели, но надежны. Надо будет поковыряться в исподниках, может и вправду, добавить самому пару свойств.

зы. вообще, это хорошая школа писать такие велосипеды: воленс-ноленс перелопатишь кучу доки. Времени только уходит немеряно. Вот кабы мне этим лет 25 назад заняться...
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869376
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
30.09.2019 17:49, Док пишет:
> Вот кабы мне этим лет 25 назад заняться...

щас бы плевался...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869395
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

у mwasoftware есть API интерфейс который унифицирует ОО-API тройки и API-2.5 больше ничего интересного я там не нашёл.
Может их унификация и не идеальна, зато много чего можно подсмотреть.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869408
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий30.09.2019 17:49, Док пишет:
> Вот кабы мне этим лет 25 назад заняться...

щас бы плевался...

''Лучшее время для посадки деревьев - 20 лет назад" - (с).
Второе лучшее время - сейчас.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869636
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvя буквально вчера лазаря и ибх ставил, потыкать, так что у меня полный свежак.
вот только что поставил сегодняшний транк r61954 и самый последний транк IBX r288. Все то же самое.

Может, в настройках чего не так? Во всех серверах я меняю в firebird.conf только три параметра:
IpcName=firebird_<n+номер версии>
RemoteServiceName = gds_db_<n+номер версии>
RemoteServicePort = <n+номер версии>

Ставлю в HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\
"<server_n_root_path>\bin\fbserver.exe" -a -p <n+номер версии>

Со старыми компонентами не конфликует. ЧЯДНТ?

Симонов Денису mwasoftware есть API интерфейс который унифицирует ОО-API тройки и API-2.5 больше ничего интересного я там не нашёл.
по-хорошему, надо бы разобраться и начать писать на голом апи, как DS. Но у меня образованиев не хватает :)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869641
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док-p <n+номер версии>

А вот это лишнее.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869643
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА вот это лишнее.
в смысле, лишнее? т.е. номер порта задавать не обязательно? Например, у меня два сервака крутятся одновременно
fb 2.1.7 "D:\Portable_program\Firebird_server\Firebird_2_1_7\bin\fbserver.exe" -a -p 3217
fb 3.0.4 "D:\Portable_program\Firebird_server\Firebird_3_0_4\firebird.exe" -a -p 3304

достаточно <exe-path> -a -p ?
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869645
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докдостаточно <exe-path> -a -p ?
достаточно <exe-path> -a ?
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869646
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокRemoteServiceName = gds_db_<n+номер версии>И этого не надо. В системе нет такого сервиса
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869650
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladДокRemoteServiceName = gds_db_<n+номер версии>И этого не надо. В системе нет такого сервиса
Я тоже в имя сервиса FB включаю версию и # порта.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869651
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

так как правильно? Шоб навсегда и железобетонно?

Я пробовал читать тут , но мой моск вышел из строя, по меньшей мере, до утра :(
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869654
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокЯ пробовал читать тут , но мой моск вышел из строя, по меньшей мере, до утра :(Вроде, всё разумно и понятно.
С практической точки зрения:
1. -p в строке запуска - последнее слово;
2. Не выделываемся с RemoteServiceName и меняем RemoteServicePort по мере надобности.

P.S.
Лично я использую "говорящую схему" - 10000 + 10*Версия + Экземпляр: 13040, 12590, 12170, 11560.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869694
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

иными словами, если резюмировать выше сказанное, корректные варианты конфигов (по сравнению с дефолтным) и подключений:

IpcName = <уникальное имя инстанса> - задается в любом случае

Код: plsql
1.
2.
3.
4.
5.
6.
7.
#RemoteServiceName = bla-bla-bla
RemoteServicePort = <уникальный номер порта>
...
строка запуска <server_executable_path_name> -a
...
строка коннекта:localhost/<уникальный номер порта>:E:\database\fb21\GENERAL_BASE_1903_25.FDB
...


или

Код: sql
1.
2.
3.
4.
5.
6.
7.
#RemoteServiceName = bla-bla-bla
#RemoteServicePort = bla-bla-bla
...
строка запуска <server_executable_path_name> -a -p <уникальный номер порта>
...
строка коннекта:localhost/<уникальный номер порта>:E:\database\fb21\GENERAL_BASE_1903_25.FDB
...



ps. вот c RemoteServiceName не разобрался
Код: sql
1.
2.
3.
4.
5.
6.
7.
...
RemoteServiceName = gds_db_217
#RemoteServicePort = bla-bla-bla
...
строка запуска <server_executable_path_name> -a -p gds_db_217
...
строка коннекта:localhost/gds_db_217:E:\database\fb21\GENERAL_BASE_1903_25.FDB



в Х-перте получаю
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Attempting to connect to:
localhost/gds_db_217:E:\database\fb21\GENERAL_BASE_1903_25.FDB...
Connection failed!
------------------------------------
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Unable to complete network request to host "localhost".
Failed to locate host machine.
Undefined service gds_db_217/tcp.
 
Attempting to connect to services manager:
localhost/gds_db_217:service_mgr... Failed!
------------------------------------

Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Unable to complete network request to host "localhost".
Failed to locate host machine.
Undefined service gds_db_217/tcp.



Содержимое c:\WINDOWS\system32\drivers\etc\hosts (Win XP x32)
Код: sql
1.
2.
127.0.0.1       localhost
192.168.89.113   leybaserver
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869697
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докps. вот c RemoteServiceName не разобралсяЭто имя, завязанное на /etc/services (%SystemRoot%\System32\drivers\etc\services).
С RemoteServiceName просто нет смысла возиться - ничего "сакрального", окромя "поименованного номера порта" в нём нет.

P.S.
IpcName существенно только для xnet и, соответственно, только для винды.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869707
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovIpcName существенно только для xnet и, соответственно, только для винды
т.е. под другие протоколы нет смысла его изменять?


Basil A. SidorovС RemoteServiceName просто нет смысла возиться
интересно, с линуксами достаточно будет поиграться с портами и строкой запуска или вдобавок нужно будет в /etc/services прописывать RemoteServiceName?

зы. я уж извиняюсь за назойливость, привык все выяснять до конца. Хочется иметь на никсах (линь, OSX) тоже несколько серверов для икспериментов :)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869720
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c:\WINDOWS\system32\drivers\etc\services
Код: sql
1.
2.
3.
...
gds_db_217	3217/tcp	firebird_gds_db_217	#firebird 2.1.7 server
...


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
...
RemoteServiceName = gds_db_217
#RemoteServicePort = bla-bla-bla
...
строка запуска <server_executable_path_name> -a -p gds_db_217
...
строка коннекта: localhost/gds_db_217:E:\database\fb21\GENERAL_BASE_1903_25.FDB
...


а ведь взлетело

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Attempting to connect to:
localhost/gds_db_217:E:\database\fb21\GENERAL_BASE_1903_25.FDB... Connected successfully.
Server version: WI-V6.3.7.18553 Firebird 2.1
 
Disconnecting from database... Passed!
 
Attempting to connect to services manager:
localhost/gds_db_217:service_mgr... Connected successfully.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869730
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

что удивило то? Это документированное поведение.
Даже в комментах написано, что нужно изменять только один из этих параметров, но не два сразу.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869760
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЭто документированное поведение.
кто ж доки сразу читает? Только в крайнем случае...

зы. спасибо всем за участие и советы. Пошел есть моск автору IBX (чую, придется его компонентами скоро начать пользоваться). Теперь хоть смогу корректно исходные условия запуска сервера с возникающими ошибками коннекта ему описывать.

А по поводу сабжа: только собрался создавать тему на форуме FPC, словно по заказу еще один перец с подобными проблемами нарисовался :)

Кстати, если вручную в cmd-окне прервать gbak по <Ctrl>+<C>, то по моим наблюдениям все равно *.bak-файл в винде какое-то время залочен (правда, порядка 5-10 сек при "ручном прерывании" супротив 40-60 сек при "программном").
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869857
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

а зачем морочить голову с services и service name?
Клиент ФБ давно может игнорировать services, даже клиент ИБ это теперь умеет.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869861
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докдостаточно <exe-path> -a ?

Да. При условии, что задействуется правильный конфиг из каталога запуска. -p штука
довольно мутная, воздействует сразу на два протокола и я бы её избегал.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869920
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докинтересно, с линуксами достаточно будет поиграться с портами и строкой запуска или вдобавок нужно будет в /etc/services прописывать RemoteServiceName?Нигде не надо играться со строкой запуска.
Прописали RemoteServicePort, (опционно) IpcName и стартанули (перестартовали) сервис (приложение).
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870296
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvа зачем морочить голову с services и service name?
я уже не морочу, решил для себя в будущем не трогать дефолтные настройки конфигов и просто запускать сервера с параметрами -a -p <уникальный порт>

зы. кстати, я понял, что не так с теми британскими IBX'ами: автор че-та намудрил в компонентах с designtime-свойствами, потому и ошибки сыплет, и черт-те какие настройки в дизайнере кажет (можешь сам транк в svn попробовать). Если задать настройки в рантайме, все тип-топ (проверил навскидку в IBDatabase и IBXServicesConnection)


Dimitry Sibiryakov-p штука
довольно мутная, воздействует сразу на два протокола и я бы её избегал.
которые из них и чем грозит?

зы. Дим, если не трудно, плз, стукнись мне в яшшик dddoc лай-лай яндек сру. Есть вопросы приватного характера.

Basil A. SidorovПрописали RemoteServicePort, (опционно) IpcName и стартанули (перестартовали) сервис (приложение).
у меня машина домашняя, линь/хакинтош в виртуалке, поэтому не страшно. Мне некоторый опыт нужен, чтобы выяснить детали кухни птицы. Вдруг фрилансить придется (а судя по динамике принимаемых больных скоро мы вспомним начало сакральных 90-х), а я не готов :)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870299
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доки черт-те какие настройки в дизайнере кажет
я скачивал последний релиз ibx4lazarus2.3-3 2.3.3
мне эти транки до лампочки.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870308
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокЕсть вопросы приватного характера.

Не, к приватным танцам я не готов. Но ты можешь отловить меня где-нибудь за пивком в
Берлине через пару недель.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870641
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvмне эти транки до лампочки.
так это и есть транк, выложенный в паблик :) Таки ты в DT свойства задавал или в RT?

Dimitry SibiryakovНе, к приватным танцам я не готов. Но ты можешь отловить меня где-нибудь за пивком в
Берлине через пару недель.
вот прати-и-и-вный По заграницам я не выездной (типа "институт, экзамены, сессия..." ©).

У тебя какие-нибудь исходники на АПИ с простейшими примерами коннекта, селекта и проч.? Только не предлагай Using_OO_API, там все на "богомерзком С"


Или что почитать, букварь какой...
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870645
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док Таки ты в DT свойства задавал или в RT?
в дизайн-тайме, конечно. У меня нужды про RT пока нет.
Как у тебя на картинке было нарисовано, так я и делал.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870647
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокУ тебя какие-нибудь исходники на АПИ с простейшими примерами коннекта, селекта и проч.?
забей. для прикладных программ эта "технология" не годится, слишком много писанины, да еще исключительно рантаймовой. Для инструментальных - без проблем.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870650
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

Using_OO_API там с++, но для Pascal оно переводится с полпинка
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870659
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

mwasoftware написали свою обёртку над API завернув всё в интерфейсы аля-COM

https://mwasoftware.co.uk/downloads/send/5-ibx-current/146-firebirdpascalapiguide

эта фиговина входит в состав их IBX. Насколько она хорошо написана хз, но там точно более низкий уровень чем ихние датасеты.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870662
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
02.10.2019 16:42, Симонов Денис пишет:
> написали свою обёртку над API завернув всё в интерфейсы аля-COM

имхо, перебор.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870664
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv, обижаешь. Писанина, конечно, рантаймовая и среднестатистический мышевозник пальцы сотрёт, но Док-то в курсе как скопировать строку. В приложении библиотека (Дельфи 2006), которую я использую. С ней код выглядит так для коннекта:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
var dpb: String;
...
    dpb := fb_dpb_version1+
           fb_dpb_user_name+Char(Length(AdminUser))+AdminUser+
           fb_dpb_password+Char(Length(DecryptedPassword))+DecryptedPassword;
    if Length(Charset) > 0 then
      dpb := dpb+fb_dpb_lc_ctype+Char(Length(Charset))+Charset;
    if Length(AdminRole) > 0 then
     begin
      dpb := dpb+
             fb_dpb_sql_dialect+#1+#0+ // In case of quoted role
             fb_dpb_sql_role_name+Char(Length(AdminRole))+AdminRole;
     end;

    Call(fb_attach_database(status_vector, 0, PChar(ConnectionString),
                            Db,Length(dpb), PChar(dpb)));


Запрос и чтение результатов как-то так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
procedure TFBConfiguration.LoadDatabases;
var
  QryCfg : TFBCursor;
begin
  inherited;
  StartTransaction;
  try
   RunFBSQL(DbCfg, TransCfg, QryCfg,
            'SELECT DBNO,DBPATH,DBNAME,ADMINUSER,ADMINPASSWORD,COMMENTS,'+
            'PRIORITY,TIMEFIELDNAME,CHARSET,DBTYPE,USERROLE,DIALECT,'+
            'DIALUSERNAME,DIALPASSWORD,RASNAME,KEEPCONNECTION,MOREPARAMS'+
            ' FROM REPL$DATABASES',
            17, Dialect);
   While not QryCfg.Eof do
    begin
     AddDbToCache(GetIntegerValue(DbCfg, TransCfg, QryCfg, 0),
                  GetStringValue(DbCfg, TransCfg, QryCfg, 1),
                  GetStringValue(DbCfg, TransCfg, QryCfg, 2),
                  GetStringValue(DbCfg, TransCfg, QryCfg, 3),
                  GetStringValue(DbCfg, TransCfg, QryCfg, 4),
                  GetStringValue(DbCfg, TransCfg, QryCfg, 5),
                  GetIntegerValue(DbCfg, TransCfg, QryCfg, 6),
                  GetStringValue(DbCfg, TransCfg, QryCfg, 7),
                  GetStringValue(DbCfg, TransCfg, QryCfg, 8),
                  GetIntegerValue(DbCfg, TransCfg, QryCfg, 9),
                  GetStringValue(DbCfg, TransCfg, QryCfg, 10),
                  GetIntegerValue(DbCfg, TransCfg, QryCfg, 11),
                  GetStringValue(DbCfg, TransCfg, QryCfg, 12),
                  GetStringValue(DbCfg, TransCfg, QryCfg, 13),
                  GetStringValue(DbCfg, TransCfg, QryCfg, 14),
                  GetIntegerValue(DbCfg, TransCfg, QryCfg, 15),
                  GetStringValue(DbCfg, TransCfg, QryCfg, 16));
     Next(QryCfg);
    end;
   FreeCursor(QryCfg);
   CommitTransaction;
  except
   RollbackTransaction;
   raise;
  end;
end;
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870671
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а я пожалуй поддержу kdv.
для написания "инструмента" такой подход оправдан.
а для прикладного GUI-софта нонсенс.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870677
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийдля написания "инструмента" такой подход оправдан.
а для прикладного GUI-софта нонсенс.

И тебя не смущает, что и сама библиотека и приведённые куски кода - из того самого
"гуевого софта"?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870685
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не нужно демагогии.
у тебя инструмент.
GUI там сбоку.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870690
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийу тебя инструмент.
GUI там сбоку.

"Инструмент" у меня написан на С++ и гуй там чисто номинальный. А эти куски таки из чисто
гуевой редактилки базы, которая ничем не отличается от основной продукции Дока.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870692
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ещё добавь к этому, что у тебя данные таким макаром в грид попадают,
да в печатные формы сложносочинённые всякие...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870693
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

у тебя GUI только для настройки.
У прикладников в приложении живут сотни формочек и не факт что их можно сделать по одному шаблону.
В таком виде умрёшь писать
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870697
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисУ прикладников в приложении живут сотни формочек и не факт что их можно сделать по одному
шаблону.

Можно, можно. Все их "сотни формочек" сводятся к "загрузить хрень, позволить пользователю
над ней поиздеваться, сохранить результат".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870706
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
02.10.2019 17:19, Dimitry Sibiryakov пишет:
> Можно, можно. Все их "сотни формочек" сводятся к "загрузить хрень,
> позволить пользователю над ней поиздеваться, сохранить результат".

ты сознательно сузил размеры окна до замочной скважины.
можно конечно и это переморгать.
но глаз устаёт.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870741
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дим (DS), спасибо, поизучаю.

Мужики, спасибо всем за мнения. Я не то, чтобы завтра сяду писать свой репликатор на голом апи, но мне хотя бы оценочно надо прикинуть, стоит ли заморачиваться с этим или нет.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870745
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийты сознательно сузил размеры окна до замочной скважины.

А, ну давай, расскажи как космические корабли бороздят просторы Большого Театра
какие из этих "сотен формочек" не уложатся в данный шаблон и сколько их там будет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870749
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
02.10.2019 18:27, Dimitry Sibiryakov пишет:
> А, ну давай, расскажи

я никогда не спорю с носителями сокровенного знания
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870750
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийя никогда не спорю с носителями сокровенного знания

А ты не спорь, ты фактами дави. Типа "в моей прикладухе 100500-я формочка делает то-то и
то-то, но оно совершенно не может быть произведено в брифкейс модели за которую ты топишь".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39870865
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

"все норовят слепить свой собственный фреймворк".
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871251
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокУ тебя какие-нибудь исходники на АПИ с простейшими примерами коннекта, селекта и проч.?

возьми unified interbase - минимальная библиотека на Delphi - и читай сорсы

правда Анри её давно забросил, во времена ещё до выхода FB3 - но ты же не хочешь OO API (и я тебя понимаю)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871286
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochи я тебя понимаю

почему? Ты пробовал? Ну у DS есть список своих претензий. Но он хотя бы щупал OO API. А ты небось только из дали видел
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871297
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

да, издали

изобрели велосипед с огромным количеством бойлерплейта, в котором хрен разберёшься где что

при этом, в общем-то, не понятно зачем это надо. Типа, процедурный интерфейс с хэндлами уже не в моде.

старый API проще, обычнее (такое во всех DLL было), к нему документация есть (хотя и с ошибками и времён ib6) и куча проверенного кода. Декларация этого API - пара файлов, из которых самый большой - просто список error codes.

новый API.... Перемешаны декларации и роботом писанный код на Delphi. Всё это занимает гораздо больше места. Доки нет, даже на уровне IB6 API Guide. Больше такое нигде не используется, т.е. шаблоны восприятия/понимания наработанные на других продуктах тут не помогают.

вот зачем во всём этом разбираться, кроме возможно одной цели - UDR и писать SP на жабе или паскале (сама по себе сомнительная идея) ?

Итого: объёмный нечеловеческий boilerplate, почти недокументированный, с непонятно где лежащими граблями которые непонятно как если что диагностировать, и - с одним теоретическим преимуществом, которое просто не нужно. Ачивку себе повесить "перешёл на новый модный молодёжный API" ? я её себе лучше в Стиме на игрушке повешу за то же время.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871308
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
03.10.2019 18:00, Arioch пишет:
> Итого: объёмный нечеловеческий boilerplate, почти недокументированный, с
> непонятно где лежащими граблями которые непонятно как если что
> диагностировать, и - с одним теоретическим преимуществом, которое просто
> не нужно. Ачивку себе повесить "перешёл на новый модный молодёжный API" ?

мне оно тоже не по душе.
но я так понимаю, новые нумерики и тому подобное, на старом АПИ никто не
реализовал и вряд ли будет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871310
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

"К свету - по этапу. К счастью - под плетями."

ну вот когда/если понадобится, тогда и будем думать

....взять и реализовать fbclient3 с классическим интерфейсом поверх молодёжного, чтобы на самом деле этот API изучить
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871319
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
03.10.2019 18:20, Arioch пишет:
> ну вот когда/если понадобится, тогда и будем думать

я слабо представляю кому РЕАЛЬНО могут понадобиться нумерики
размером в 30 и более знаков
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871323
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийя так понимаю, новые нумерики и тому подобное, на старом АПИ никто не
реализовал и вряд ли будет.

Фишка старого API в расширяемости и для новых типов там не нужна никакая специальная
поддержка.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871325
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
03.10.2019 18:36, Dimitry Sibiryakov пишет:
> Фишка старого API в расширяемости и для новых типов там не нужна никакая
> специальная поддержка.

и как сейчас запихать эти нумерики в xsqlda?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871332
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

для этого сначала нужно разобраться, что такое диалект XSQLDA, вывести его в отдельное понятие (он не должен был быть отдельным понятием, но между IB5 & 6 про это забыли), задокументировать, пофиксить код

и всё это желательно сделать вместе с interbase team, ради мира в о всём мире

попробовать что-ли сделать какой-нибудь блог-пост из переписки с авторами jaybird и interbase objects....
хотя кому это нафиг надо, логика как с теми скобками, "за 20 лет никто не натолкнулся"
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871334
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну или нифига не делать с диалектом data area, а просто ввести новые конвтанты типов, как с тем же boolean, а какие клиентские либа/аппликухи на этом посыплются - те к новым типам не готовы
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871335
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий03.10.2019 18:20, Arioch пишет:
> ну вот когда/если понадобится, тогда и будем думать

я слабо представляю кому РЕАЛЬНО могут понадобиться нумерики
размером в 30 и более знаков

https://www.sql.ru/forum/1317439/integer-overflow-coalesce-numeric-int64



так что 30 - это только для разгону
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871337
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийи как сейчас запихать эти нумерики в xsqlda?

Так же как обычно: соответствующий тип в sqltype, размер - в sqllen, указатель на
собственно данные - в sqldata.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871338
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
03.10.2019 18:56, Dimitry Sibiryakov пишет:
> Так же как обычно: соответствующий тип в sqltype

и кто этот тип должен объявить?
вон ввели SQL_BOOLEAN, все писатели библиотек его заприходовали.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871340
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

вот ровно также только название будет типа SQL_Integer_128_signed

сначла в движке, потом в fbclient, потом в либах/аппликухах
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871341
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
03.10.2019 19:03, Arioch пишет:

> вот ровно также только название будет типа SQL_Integer_128_signed
> сначла в движке, потом в fbclient, потом в либах/аппликухах

есть мнение, что не будет :(
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871343
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

значит, не будет

а ты что загрустил, тебе разве уже понадобились "нумерики размером в 30 и более знаков"
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871345
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
03.10.2019 19:13, Arioch пишет:
> а ты что загрустил, тебе разве уже понадобились "нумерики размером
> в 30 и более знаков"

меня удручает тенденция
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871346
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

ты это, лучше оленей от обрыва отгони, не надо о тенденциях, не-на-до!
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871347
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийесть мнение, что не будет :(

Влад на этом месте уже начал бы ругаться, а я просто процитирую sqlda_pub.h:
Код: plaintext
1.
2.
3.
4.
5.
#define SQL_TIMESTAMP_TZ                 32754
#define SQL_TIME_TZ                      32756
#define SQL_DEC_FIXED                    32758
#define SQL_DEC16                        32760
#define SQL_DEC34                        32762


Куда приткнуть SQL_INT128 Алекс пока не решил.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871352
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovМимопроходящийи как сейчас запихать эти нумерики в xsqlda?

Так же как обычно: соответствующий тип в sqltype, размер - в sqllen, указатель на
собственно данные - в sqldata.


ага, а портировать классы на Delphi для работы с INT128, DECFLOAT или TIMESTAMP WITH TIMEZONE ты сам будешь?
Т.е. запихнуть то их туда на стороне fbclient можно, а вот что потом с этим указателем на данные делать без специальных интерфейсов хз.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871356
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисТ.е. запихнуть то их туда на стороне fbclient можно, а вот что потом с этим указателем на
данные делать без специальных интерфейсов хз.

А как ты живёшь без специальных интерфейсов для INT64/TIMESTAMP?.. В Си есть встроенные
decimal и int128, в Delphi тоже почти наверняка можно найти библиотеки для работы с ними.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871357
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

int64 есть везде и давно.

Для TIMSTAMP есть isc_decode_date / isc_encode_date ...

А вот что делать с DECFLOAT? Вон с одними таймзонами уже геморроя нажили
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871359
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисДля TIMSTAMP есть isc_decode_date / isc_encode_date ...

Лучше бы не было. И да, это справедливо и для того ужаса, что они навыдумывали в интерфейсах.

Симонов ДенисА вот что делать с DECFLOAT?
Слаб духом - биндь как SQL_TEXT. Прочие могут гуглить сторонние библиотеки. Особо суровые
- спецификацию двоичной раскладки из вики или первоисточника. Лично я буду тупо
использовать "в тёмную", как пачку байт, но это специфика.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871368
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochСимонов Денис,

да, издали

изобрели велосипед с огромным количеством бойлерплейта, в котором хрен разберёшься где что


ты не пытался


Ariochновый API.... Перемешаны декларации и роботом писанный код на Delphi. Всё это занимает гораздо больше места. Доки нет, даже на уровне IB6 API Guide. Больше такое нигде не используется, т.е. шаблоны восприятия/понимания наработанные на других продуктах тут не помогают.


да какая разница сколько это занимает места? Там и без доки всё понятно. Потому что это практически тот же старый API сгруппированный по хендлам. Ничего сложного там нет

Ariochвот зачем во всём этом разбираться, кроме возможно одной цели - UDR

тебе и в старом не зачем
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871369
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисэто практически тот же старый API сгруппированный по хендлам.

Не совсем. Это "очень старый API", который никогда не рассчитывался на прямое
использование, а служил исключительно как поддержка препроцессора gpre. Потому-то и
получилось то, что получилось.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871530
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
03.10.2019 19:19, Dimitry Sibiryakov пишет:
>
> Куда приткнуть SQL_INT128 Алекс пока не решил.

ну, ежели таки воткнут, то не всё так плохо.
а касаемо того, что делать с этим в Delphi, то особых проблем не вижу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871542
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий03.10.2019 19:19, Dimitry Sibiryakov пишет:
>
> Куда приткнуть SQL_INT128 Алекс пока не решил.

ну, ежели таки воткнут, то не всё так плохо.
а касаемо того, что делать с этим в Delphi, то особых проблем не вижу.


дык это оно и есть вроде

Код: plaintext
1.
#define SQL_DEC_FIXED                    32758



насколько я понял отдельного INT128 не будет, эта штуковина только для реализации NUMERIC(38, x)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871555
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

хотя не...

src/include/firebird/impl/sqlda_pub.h
Код: plaintext
1.
2.
3.
4.
5.
#define SQL_INT128                       32752
#define SQL_TIMESTAMP_TZ                 32754
#define SQL_TIME_TZ                      32756
#define SQL_DEC16                        32760
#define SQL_DEC34                        32762
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871560
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

ты какой-то старый вариант цитируешь
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871579
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
04.10.2019 11:49, Симонов Денис пишет:
>
> хотя не...
> src/include/firebird/impl/sqlda_pub.h
> #define SQL_INT128 32752

ага.
значит есть уже.
ну, тогда компонентописателям OO_API можно игнорировать.
причина для игнора: необходимо поддерживать 2 параллельные ветки кода.
ибо нормальная библиотека работает не только с распоследним клиентом,
но и с унаследованными версиями IB/FB.

зы: хотя, например в Оракеле на это дело откровенно кладут...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871596
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисты какой-то старый вариант цитируешь

Просто давненько дерево не обновлял.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871602
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

ну реализацию int128 на delphi найти можно. С DecFloat намного сложнее. Скорее всего большинство воспользуются хелпером

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
interface DecFloat34 : Versioned
{
	const uint BCD_SIZE = 34;
	const uint STRING_SIZE = 43;	// includes terminating \0
	void toBcd(const FB_DEC34* from, int* sign, uchar* bcd, int* exp);
	void toString(Status status, const FB_DEC34* from, uint bufferLength, string buffer);
	void fromBcd(int sign, const uchar* bcd, int exp, FB_DEC34* to);
	void fromString(Status status, const string from, FB_DEC34* to);
}



впрочем для того чтобы пользоваться хелперами, не обязательно целиком переходить на OO_API

достаточно

Код: pascal
1.
2.
3.
4.
master := fb_get_master_interface;
util := master.getUtilInterface;
st := master.getStatus;
dec34 := util.getDecFloat34(st);
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871605
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийнапример в Оракеле на это дело откровенно кладут...

Ну, в Оракеле своя специфика. Там парсер SQL до сих пор на клиентской стороне.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871629
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
04.10.2019 12:33, Симонов Денис пишет:
> master := fb_get_master_interface;
> util := master.getUtilInterface;
> st := master.getStatus;
> dec34 := util.getDecFloat34(st);

вот объясни замшелому ретрограду на пальцах,
ЗАЧЕМ для тупого процедурного преобразования нужны интерфейсы?!
я не про то, что оно уже так сделано.
а про насцущную необходимость.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871635
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

ИХМО, исключительно с целью унификации OO API, чтобы он везде ОО сохранялся :)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871638
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
04.10.2019 13:15, Симонов Денис пишет:
> ИХМО, исключительно с целью унификации OO API, чтобы он везде ОО
> сохранялся :)


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871641
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если приложение неспособно работать с decfloat, оно не сможет его в базу положить и нет
смысла его из базы доставать. Ибо не ГПСЧ же из байт значение там собирается?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871812
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опять же, если вспомнить мой пример - тупо перемножение нескольких нумериков, то на самом деле все эти 38 знаков и не нужно, ибо последние знаки будут нули-нули-нули

и поэтому будут как во времена 1-го диалекте, через другие типа

конкретно в Delphi это делалось через поля типа BCD, у которых были сеттеры/геттеры в int32-тип
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871821
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
04.10.2019 17:42, Arioch пишет:
> конкретно в Delphi это делалось через поля типа BCD, у которых были
> сеттеры/геттеры в int32-тип

в новых дельфях к рекорду TBCD понавешивали собственных классовых методов.
ибо это стильно, модно, молодежно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871841
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochопять же, если вспомнить мой пример - тупо перемножение нескольких нумериков, то на самом деле все эти 38 знаков и не нужно, ибо последние знаки будут нули-нули-нули


не факт. Нули у тебя потому что ты в дробной части нули задавал. Оно может редко, но нужно. И кстати запрос на длинные нумерики давно был

Ariochи поэтому будут как во времена 1-го диалекте, через другие типа

есть ещё DEFLOAT(34)

Ariochконкретно в Delphi это делалось через поля типа BCD, у которых были сеттеры/геттеры в int32-тип

причём тут delphi? Пользовательские агрегатные функции ещё не сделали
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871853
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delphi к вопросу Симонов Денисага, а портировать классы на Delphi для работы с INT128, DECFLOAT или TIMESTAMP WITH TIMEZONE ты сам будешь?
Т.е. запихнуть то их туда на стороне fbclient можно, а вот что потом с этим указателем на данные делать
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871855
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

оно в bcd само не преобразуется. Теоретически для int128 это не сложно сделать. Можно и для decfloat если почитать стандарт по бинарному размещению. Но на хрена, когда это уже сделали за вас? Шоб понты поколотить смотрите а я смог без OO API
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871857
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисНо на хрена, когда это уже сделали за вас?

А теперь вопрос на засыпку: что проще: портировать своё приложение на новое API или
портировать мелкий кусок нового API в своё приложение?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871861
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

конечно кусок. Но не портировать, а использовать.

В IBE так и делают. Там всё что можно на Legacy API, где не получается идём за новым.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871864
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Фактический стандарт в Delphi - это TDataset и всё, что вокруг него наросло, от FAQ до визуальщины. Даже ADO - и тот обернули в TDataSet, хотя COM-объекты можно напрямую использовать в языке.

В принципе любую часть "обычной" библиотеки любого языка можно выкинуть и взять другое или написать своё.
Но на практике для этого должны быть причины. Т.е. - это только в узких нишах каких-нибудь.

Далее, в рамках TDataSet уже был прецедент работы с длинными числами ДО появления типа int64 в Delphi. Делалось это через BCD. Сейчас в Delphi есть int64, но нет int128. Ситуация похожа. И вероятно, что можно взять старое решение и адаптировать для этой новой проблемы. Поэтому и BCD.

Можно придумывать что-то новое, нехоженное и неезженное, возможно оно даже в итоге окажется лучше.

> Шоб понты поколотить смотрите а я смог без OO API

Тут всё ровно наоборот. Понты - это выпендриться и сделать не как у всех.

Смотрите, я смог без VCL/FMX, а сразу на Win32 GDI API (вариант - на KOL без MCK) - это выпендрёж.
Смотрите, я смог напистаь на VCL и не писал на KOL - не выпендрёж.

Смотрите, я смог без TDataSet и вообще без обёрток, сразу на низкоуровневом API - это выпендрёж.
Смотрите, я написал на FireDAC/DBX/IBO и не лез в FB-OO-API - не выпендрёж
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871866
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисконечно кусок. Но не портировать, а использовать.

На пути "использовать" лежат забавные грабли с загрузкой библиотеки и импортом, но да,
наверное есть ещё любители геморроя себе на шею.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871868
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

причём тут DataSet. Никто не агитирует от него отказываться, кроме DS.

AriochСмотрите, я написал на FireDAC/DBX/IBO и не лез в FB-OO-API - не выпендрёж

ты это не в тему сказал. Речь о том кто будет в эти библиотеки добавлять поддержку новых фич из 4-ки.

Вот у МП, например, свой клон IBX, если ему надо будет добавить новые плюхи, то придётся разбираться с API.
Если нет аналога в старом, то придётся в новое лезть, только и всего.

Перечислю основное, что придётся добавить:
- поддержка тайм-аутов
- поддержка timezone
- поддержка NUMERIC и DECIMAL c точностью 38 (INT_128)
- поддержка DECFLOAT(16), DECFLOAT(34)
- поддержка batch-api

Если тебе этого не надо. или кто-то из компоненто-писателей уже сделал это, то и обсуждать не чего. Заметь я не агитирую за использование API вместо чего-то там вообще.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871873
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovСимонов Денисконечно кусок. Но не портировать, а использовать.

На пути "использовать" лежат забавные грабли с загрузкой библиотеки и импортом, но да,
наверное есть ещё любители геморроя себе на шею.


вот здесь не понял. Ты в LegacyAPI импортируешь десятки функций, с чего бы импорт ещё одной должен дать какие-то грабли?
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871874
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЕсли нет аналога в старом, то придётся в новое лезть, только и всего.

но речь шла про int128 - а его вроде бы уже протащили в старый API, во всяком случае константы sql_type цитировали
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871877
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

эти константы не только для старого API. И да в SQLVAR поместить то можно любой тип. Речь о том что ты будешь делать с этим указателем. Как в Delphi он должен обрабатываться?
Варианта 2: воспользоваться хелперами из нового API, или раскатывать структуру руками.

вот тебе

Код: plaintext
1.
2.
3.
4.
5.
struct FB_I128_t {
	ISC_UINT64 fb_data[2];
};

typedef struct FB_I128_t FB_I128;



расскажи нам как ты это в BCD раскатаешь?
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871883
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

посмотрю, как во времена Delphi 5 или Delphi 2006 переводили int64 в TField.AsDouble и сделаю аналогично

а с твоим хелпером будет аналогичная проблема, как скопировать данные из поля в байтовые буфера "текущая запись плюс-минус пара десятка строк, чтобы на экран влезало" у TDataSet

Только копировать надо будет не из SQLDA, а из твоего хелпера.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871892
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

там есть поле типа FMTBcd в него можно закатать.

Вариант 1. Берём указатель из SQLDA и вызываем в хелепере функцию toBcd, если она бинарно совместимо, то следом

function BcdFromBytes(const AValue: TArray<Byte>): TBcd;

Если нет, то вариант 2. Вызываем из хелпера toString. Далее

function StrToBcd(const AValue: string): TBcd; overload;
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871908
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисТы в LegacyAPI импортируешь десятки функций, с чего бы импорт ещё одной должен дать
какие-то грабли?

Так и речь-то не обо мне, а о тех между кем и уже импортированными функциями две
жирных-жирных библиотеки. Вот топик для размышления:
https://www.sql.ru/forum/1316505/firedac-i-firebird-shifrovanie
Арефьев, там, кстати, так и не показался.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871914
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

А какая вторая из "две"? И, кстати, ваш покорный слуга как раз из той организации, где вполне бы был востребован decfloat и как раз через фаердак, на которые , в симбиозе, весь прошлый год я лелеял надежды. Но теперь уже совершенно ясно, что внедрить FB4 в одной из самых известных структуре в стране уже не успею, время вышло. А жаль.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871918
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad FА какая вторая из "две"?

VCL+половина FireDAC-а и вторая половина FireDAC-а, так называемый "физический слой".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39871921
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Я понял. Но боюсь, что все это теперь придется оставить уже на нового работодателя и на новое десятилетие.))
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872459
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
04.10.2019 22:10, Dimitry Sibiryakov пишет:
> вторая половина FireDAC-а, так называемый "физический слой".

вот за это я его и не люблю.
даже кушать не могу! (С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872465
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

ну им надо было чем-то заменить BDE. ADO у них сделан так себе. Собственная разработка dbExpress тоже. По сравнению с ними универсальный FireDac очень даже ничего. Кому не нравится могут продолжать пользоваться IBX/FibPlus и так далее. Хот прямым API
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872472
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
07.10.2019 11:53, Симонов Денис пишет:
> ну им надо было чем-то заменить BDE.

они об этом не думали вааще.
Арефий сам по себе такое решил.
а Дебаркадеры купили готовое решение.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872479
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

погоди. У Арефьева была цель сделать универсальный компонент доступа к БД. Он это сделал, по-моему мнению весьма не плохо, в особенности по сравнению с тем что предлагали в Embercadero.
Дебаркадера поняла что ихние универсальные компоненты доступа мягко говоря гомно, стали искать чем бы заменить и их выбор пал на AnyDac (на их месте вполне мог оказаться UniDac).

Понятное дело что специализированный компонент под конкретную СУБД всегда можно сделать более гибким. Но у FireDac такой цели нет. Посмотри с другой стороны, кто сейчас делает и поддерживает хоть один из специализированных компонентов доступа?

IBX сосредоточена на IB им плюшки FB до лампочки, разве что самому точить, как ты это делаешь.

FibPlus никто не поддерживает, есть некий клон, но насколько он актуален неизвестно. Да и вообще возникают проблемы с чистотой этого клона. Опять же систематически его никто не правит, какой-то обратной связи в плане поддержки нет. Что остаётся?

Как бы не был сделан FireDac у него хотя бы есть обратная связь, плюшки новых версий FB в него портируются, ошибки правятся.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872487
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисДебаркадера поняла что ихние универсальные компоненты доступа мягко говоря гомно, стали
искать чем бы заменить и их выбор пал на AnyDac (на их месте вполне мог оказаться UniDac).

Универсальных компонент доступа у них никогда и не было. Была BDE, купленная с Аштонами,
dbExpress, купленный позже и оказавшийся хуже BDE, а теперь вот FireDAC, который, конечно,
лучше Экспресса, но до уровня BDE пока так и не дотянувшийся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872488
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денистам есть поле типа FMTBcd в него можно закатать.

агась, в него родного и закатывали. До сих пор хвосты попадаются в старой прикладухе, которая начиналась с BDE/Paradox через BDE/IB5/Dialect1 и в dbx/Firebird/Dialect3

Вариант 1. Берём указатель из SQLDA и вызываем в хелепере функцию toBcd, если она бинарно совместимо, то следом function BcdFromBytes(const AValue: TArray<Byte>): TBcd;

Ё! ещё и указатель надо взять не НА DA, а ИЗ DA. Т.е. DA придётся руками парсить. К вопросу о полезности хелперов, которые по идее должны превращать низкоуровневый опасный код в высокоуровневый безопасный.

Кстати, спасибо за наводку. Глянул я внутрь этой функции.... buffer overrun на чтение. Размер входного буфера никто не проверяет. И вообще всё, что она делает по сути - это один вызов Move (memory copy), только расписанный на три раздельных операции, чтобы подольше исполнялось. Характерно, что в списке typecast'ов у TBcd этого мрака нет. Видимо осталось с каких-то совсем древних времён чисто ради совместимости. Возможно, ради совместимости с .Net.

В общем, если там и делать Delphi helper, то возвращать он должен не TBytes (неформатированный дамп который может совпасть по длине и внутреннему содержимому с TBcd, а может и не совпасть), а сразу готовый TBcd. И не по указателю "из" SQLDA, а "на" SQLDA. Иначе смысла в таком хелпере не много остаётся.

А сейчас получится, что для доработки TDataSet у нас будет
1. самостоятельная привязка к буферам, TFieldDefs и прочей внутренней кухни TDataSet
2. самостоятельный парсинг низкоуровневой структуры XSQLDA (с проверкой на dialect 0 SQLDA)
3. дёрганье хелпера, создающего "сырой" дамп в TBytes - ARC-структуре, т.е. запускающего две глобальные блокировки потоков процессора, как минимум две.

"В таком аксепте" я бы этим хелпером пользоваться не стал, а либо выдрал из него код копипастом (это хоть какое-то, но использование), а вероятнее таки написал бы сам на основе ib6 api guide. Потому что на фоне 1 и 2 экономия усилий от его использования небольшая, при этом возникает ИЛЛЮЗИЯ высокоуровневого безопасного кода плюс ненужные блокировки.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872489
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
07.10.2019 12:14, Симонов Денис пишет:
> Как бы не был сделан FireDac...

может кому-то и не важно.
может кто-то всё ещё онанирует медитирует на предмет
"универсального доступа".
покажите мне универсальный решатель обобщенных задач в дикой природе,
и я тоже подрочу возрадуюсь.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872490
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

чего это не дотянувшийся до BDE? Что в BDE есть такого чего нет в FireDac?
Если что-то глюкнуло в BDE, то внутрь уже никак не пролезешь хоть лопни.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872494
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий04.10.2019 22:10, Dimitry Sibiryakov пишет:
> вторая половина FireDAC-а, так называемый "физический слой".

вот за это я его и не люблю.
даже кушать не могу! (С)

Ну так - оно всё такое. И вообще, как делать унифицированный интерфейс без abstraction layer, как ты его не назови?

DBX - в качестве "физического слоя" используется "провайдер" с закрытыми исходниками и минимумом документации, написанный вокруг COM-модели, с вероятной целью унифицировать нативный и .NET-ный Delphi

Что интересно, китайцы написали альтернативный Firebird DBX Provider - но исходников так же не выложили.

BDE - в качестве "физического слоя" выступает сам BDE. С закрытыми исходниками, изначально рассчитанный на ISAM с SQL прикрученным "сбоку бантик" задним числом, давно не поддерживаемый, по факту почти не совместимый с современными Windows, и гораздо более сложный (кто-нибудь видел сторонний drop-in replacement для BDE?)

Я таки тоже не вижу смысла в претенизии к AnyDAC с этой стороны. Разве что как завуалированную претензию к универсальности AnyDAC. Ну так если кому-то нужно "close to metal" - то есть и UIB и IBX
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872495
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЧто в BDE есть такого чего нет в FireDac?

Кэширование резалт-сета на диске. Он не сожрёт всю память на большом запросе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872496
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

речь не об универсальном решателе задач. Речь о том, что в сообществе FB никто не делает заточенного под него компонента на Delphi и уже давно, кроме разве что энтузиастов. Если приходит нуб, у которого нет собственных наработок за последние 10 лет, то ему проще взять FireDac, нежели IBX начинать в него портировать плюшки FB за последние 15 лет. Сейчас начинать разработку на Firebird стало сложнее увы
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872498
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЧто в BDE есть такого чего нет в FireDac?

прямая работа с файлами Paradox
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872503
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
07.10.2019 12:42, Симонов Денис пишет:
> Если приходит нуб, у которого нет собственных наработок за последние 10
> лет, то ему проще взять FireDac,

это если ньюб приходит сразу же на распоследние версии Delphi.
а если на Лазаря, то там есть выбор.

а вообще, Delphi(как продаваемый продукт) must die!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872505
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Плюшки за 15 лет" для "нуба", которому надо "начинать разработку на Firebird" - они сильно overrated

логиновские FB IBX Utils никто не отменял, если "нуб" по инерции с IBX начнёт.

UIB в режиме Firebird 2.5 даст всё, что нубу будет нужно в ближайшие пару лет.
Включая такую приятную мелочь, как вычитывание запросов в виде
Код: pascal
1.
2.
3.
4.
5.
type Q1 = record ..... end;
var R: Q1;
begin
   Query1.open;
   for R in Query1.All<Q1> do begin ... end;



К сожалению, из за убогого полуживого type inference в Delphi тип переменной надо явно объявлять, иначе бы ещё красивее было.

И какой такой killer feature при этом лишится "начинающий разработку" "нуб" ?
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872507
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochЁ! ещё и указатель надо взять не НА DA, а ИЗ DA. Т.е. DA придётся руками парсить.

не надо там ничего парсить. Сразу видно не разбирался.

AriochРазмер входного буфера никто не проверяет

если ты не рукожоп, то его не надо проверять. Зачем чтобы дополнительные тормоза поиметь?

Ariochс проверкой на dialect 0 SQLDA

этого не нужно. Старый диалект только для совместимости со старыми компонентами. Он не используется уже лет 15. Разве что в недрах старого BDE. В новом API этого понятия нет вообще.

Arioch3. дёрганье хелпера, создающего "сырой" дамп в TBytes - ARC-структуре, т.е. запускающего две глобальные блокировки потоков процессора, как минимум две.

сразу видно что ты не пытался разобраться. Нет там никаких блокировок. Хелпер надо получить ровно один раз, а потом пользоваться им. В нём нет глобального состояния.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872537
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

тебя почему-то не смущает string в Delphi. А ведь преобразование char/varchar в string несёт дополнительные накладные расходы и не малые. Не вижу никакой разницы с преобразованиями из/в bcd
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872550
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

смущает, но в данном случае влезть влезть внутрь компилятора и переписать строки
1) невозможно
2) если бы было возможно - было бы весьма трудно

а вот в твоём-моём случае не надо "убирать" блокировки, достаточно их "недобавлять"

Возвращаясь к строкам и BCD, в одном англоязычном FAQ отвечала на вечный вопрос о сравнении двух float на равенство.
И "правильный" ответ был - заменить "if f1 = f2" на "if FloatToStr(f1) = FloatToStr(f2)"

В принципе - код рабочий. Но какой-то он неправильный.

Вот твой совет ради копирования raw bytes создать и потом уничтожить dynamic array - с ним на мой вкус ровно та же проблема. Накладные расходы на порядки больше самого действия.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872558
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

оно и в стрингах большое. Преобразование UTF8 <-> UTF-16 вызывает ничуть не меньше проблем и никто не жужжитю Уж извини работает с тем что есть. А от тебя лучших предложений пока не поступало. Вот только не надо про преобразование в double, оно не допустимо ибо несёт потерю точности.

AriochИ "правильный" ответ был - заменить "if f1 = f2" на "if FloatToStr(f1) = FloatToStr(f2)"

хрень это а не ответ. Все давно знают что сравнивать числа с плавающей точность надо с допустимой погрешностью. Правильный ответ

Код: pascal
1.
if abc(f1-f2) <= eps



где eps допустимая погрешность. Хочешь переменную придумай, хочешь константу
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872560
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

поправочка abs, т.е. модуль
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872583
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисА от тебя лучших предложений пока не поступало

поступало

AriochВ общем, если там и делать Delphi helper, то возвращать он должен не TBytes (неформатированный дамп который может совпасть по длине и внутреннему содержимому с TBcd, а может и не совпасть), а сразу готовый TBcd. И не по указателю "из" SQLDA, а "на" SQLDA.

но, конечно, удобнее вопринимать реальность выборочно

Симонов ДенисAriochЁ! ещё и указатель надо взять не НА DA, а ИЗ DA. Т.е. DA придётся руками парсить.

не надо там ничего парсить. Сразу видно не разбирался.

AriochРазмер входного буфера никто не проверяет

Ну что ты написал - то и читаю

если ты не рукожоп, то его не надо проверять. Зачем чтобы дополнительные тормоза поиметь?

Это великолепно.
Т.е. две глобальных блокировки и две неизвестно какой сложности операции внутри pluggable heap manager - это нормально.
А одно сравнение integer с константой - это тормоза.

А давайте из Firebird'а все bugcheck'и уберём. Я-то рукожоп, что с меня взять, но вы-то не рукожопы, вы же чoткие пацаны.
Заодно и "дополнительных тормозов" меньше будет, сервер взлетит просто.

Ariochс проверкой на dialect 0 SQLDA
этого не нужно. Старый диалект только для совместимости со старыми компонентами. Он не используется уже лет 15. Разве что в недрах старого BDE. В новом API этого понятия нет вообще.

Мы тут как бы про старый API говорим, про введение в классический API integer-128 и какую адаптацию *существующих* библиотек доступа это повлечёт.

Arioch3. дёрганье хелпера, создающего "сырой" дамп в TBytes - ARC-структуре, т.е. запускающего две глобальные блокировки потоков процессора, как минимум две.

сразу видно что ты не пытался разобраться. Нет там никаких блокировок. Хелпер надо получить ровно один раз, а потом пользоваться им. В нём нет глобального состояния.[/quote]

Сразу видно, что ты не знаешь, что такое TBytes, хотя и заговорил про string, казалось бы в тему заговорил, но... Я удивлён.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872600
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochВ общем, если там и делать Delphi helper, то возвращать он должен не TBytes

с чего бы "интерфейсам" C++ который совершенно не привязан к Embercadro такое возвращать. Если хочешь пиши сам, да там как раз есть возможность хелперы классам писать. Это уже хелперы в терминах Delphi

AriochТ.е. две глобальных блокировки и две неизвестно какой сложности операции внутри pluggable heap manager - это нормально.
А одно сравнение integer с константой - это тормоза.

да откуда ты их взял? Пальцем покажи. Там для получения хелпера нет ни одного интерфейса с подсчётом ссылок, да и не забывай про паттерн синглетон, не надо 100500 раз один и тот же хелпер получать.

кто мешает проверять допустимость длины буфера на клиенте? Кто мешает выделить сразу буфер нужной длины? Так-то я тебе и в SQLDA могу по указателю хрень воткнуть для любого типа

AriochМы тут как бы про старый API говорим,

ты не о том. Я тебе говорю что даже старый API завязанный на SQLDA уже как 100 лет не использует понятие диалект SQLDA. Параметр есть, пишут туда что-то отличное от 0. Оно с 0 реально используется только в совсем древних компонентах, куда всё равно новые типы никто портировать не будет.

AriochСразу видно, что ты не знаешь, что такое TBytes, хотя и заговорил про string, казалось бы в тему заговорил, но... Я удивлён.

посмотри как устроен TEncoding для перекодировки строк и причём там TBytes, тогда может поймёшь
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872643
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

я это к тому, что ты так и сяк уже используешь TBytes для строк и не жужжишь не про его накладные расходы, ни про накладные расходы string. В последних версиях Delphi строки полученные из FB приходится перекодировать почти всегда (если только не AnsiString), ибо они в UTF-16, который никогда из FB не возвращается.
Чего тогда из-за bcd здесь бучу поднимаешь? Не нравится иди на c++, где это можно сделать более прямым способом.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872650
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ладно вам спорить то.
перекодировка нужна и там, и там.
ибо
1. нативные (RAW) типы отдаваемые клиентом, напрямую в Delphi не ложатся
(за редким исключением)
2. "интерфейсное АПИ" разрабатывалось тоже без оглядки на Delphi
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872651
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

так я и пытаюсь ему это донести. Накладных расходов избежать не удастся в любом варианте. Тогда чего панику поднимать, мол ой неудобно сделали, тут блокировки... Там и без того накладных расходов вагон и маленькая тележка
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872697
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисВ последних версиях Delphi строки полученные из FB приходится перекодировать почти всегда (если только не AnsiString), ибо они в UTF-16, который никогда из FB не возвращается.

ты серьёзно не понимаешь, что перекодирование потока байтов из одного формата в другой не приводит к глобальной блокировке всех потоков одного, а возможно и всех процессов (префикс LOCK в x86)?

при этом как правило перекодируются строки длиннее, чем 16 байтов. Т.е. даже если приравнять остановку всех потоков к неблокирующей работе внутри одного процесса, то и в этом случае накладные расходы на строки вызываются много реже, чем для int128/bcd

> Не нравится иди на c++

А голову отрубать для удаления зуба - это принципиальная позиция Firebird Project ?

....не читатель, но писатель. Я ведь написал, как бы я это делал на Delphi.

Симонов Дениспосмотри как устроен TEncoding для перекодировки строк

Никогда не считал TEncoding образцом хорошего кода. Это просто тупой копипаст из C# не включая голову. Причём настолько не включая, что элементарно можно получить use after free и dangling pointer.
Потому что "цельнотянутое" API разрабатывалось для GC-языка.


Симонов ДенисAriochВ общем, если там и делать Delphi helper , то возвращать он должен не TBytes

с чего бы " интерфейсам" C++ который совершенно не привязан к Embercadro такое возвращать. Если хочешь пиши сам, да там как раз есть возможность хелперы классам писать. Это уже хелперы в терминах Delphi

И снова подмена предмета спора.
Ты начал разговор про какой-то неофигенно удобный Delphi хелпер, ради которого стоит отказаться от классического API и существующих библиотек, а теперь переключился на какой-то "непривязанный к Эмбаркадеро" новый Delphi-интерфейс.

AriochТ.е. две глобальных блокировки и две неизвестно какой сложности операции внутри pluggable heap manager - это нормально.
А одно сравнение integer с константой - это тормоза.

да откуда ты их взял? Пальцем покажи.

показывал уже, снова показываю - TBytes

Там для получения хелпера нет ни одного интерфейса с подсчётом ссылок, да и не забывай про паттерн синглетон, не надо 100500 раз один и тот же хелпер получать.

Я ж говорю, ты не знаешь что такое TBytes - но радостно его советуешь вместо memcpy как "правильное" решение. Ну как те ребята со сравнением float'ов.

кто мешает проверять допустимость длины буфера на клиенте?
А что, посоветованная тобой BcdFromBytes на сервере выполняется???
А мужики-то не знают.... (c)

Так-то я тебе и в SQLDA могу по указателю хрень воткнуть для любого типа
Можешь. Но там нет иллюзии безопасности. Там идёт работа с низкоуровневыми структурами данных.
А BcdFromBytes эту иллюзию создает. Принимая на вход ARC-завёрнутый буфер данных произвольной структуры и размера. И ожидая от кого-то создания этого буфера (с межпоточными блокировами и вызовоми заранее неизвестного heap manager) недокументированного размера и заполнения его в недокументированном формате. И потом убивания буфера (с межпоточными.....).

Фактически единственное относительно безопасное (на уровне source level compatibility с другими версиями Delphi или имитирующими Delphi сторонними языками) этой функции - только и исключительно использование в паре с BcdToBytes и никак кроме.

AriochМы тут как бы про старый API говорим,

ты не о том. Я тебе говорю что даже старый API завязанный на SQLDA уже как 100 лет не использует понятие диалект SQLDA. Параметр есть, пишут туда что-то отличное от 0. Оно с 0 реально используется только в совсем древних компонентах, куда всё равно новые типы никто портировать не будет.

А должно быть, кстати, не "отличное от нуля", а +1, поскольку это версия DA, предназначенная для дальнейшего расширения, и изначально означавшее то же самое, что SQL dialect....

Пока этот диалект DA задокументирован - библиотеки должны ожидать его прихода от сервера, хотя бы в размере "проверить и выдать ошибку".

Хотя, конечно, ничего не проверять и тупо иметь шанс запороть память - лучше. Ведь "дополнительных тормозов" не будет.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872700
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисТам и без того накладных расходов вагон и маленькая тележка

а поэтому давайте на ровном месте, без какой-либо пользы, сделаем ЕЩЁ БОЛЬШЕ накладных расходов

пц! пц! пц! (с)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872702
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий2. "интерфейсное АПИ" разрабатывалось тоже без оглядки на Delphi

Зато Delphi разрабатывался с оглядкой на классическое API 21986134
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872724
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

сотый раз тебе повторяю. Все перекодировки строк в Delphi используют TBytes. Я не говорю что это хорошее решение, но оно так работает внутри. У тебя наверное из БД выбираются много полей с типами CHAR/VARCHAR. Ты не жужжишь? Ну так с какого перепугу беспокоиться об использовании его в Bcd?

Покажи нам тупым как правильно инициализировать Bcd прям из структуры INT128. Только кодом, не надо нам тут поток бреда нести.

Загляни в любой компонент доступа для современной Delphi. Глянь как получается string из CHAR/VARCHAR. Перевари, сильно не огорчайся.

У тебя все числа теперь NUMERIC(38, x) что ли стали? Чего это оверхед на каждом шагу чудится
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872746
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
07.10.2019 16:21, Симонов Денис пишет:
> У тебя все числа теперь NUMERIC(38, x) что ли стали?

ну, агрегаты таки уже да.
а это значит, что без изменений в библиотеке доступа не обойтись,
для нормальной работы с FB4.
даже не затачиваясь на новые фичи и типы .
поясню.
большинство (если не все) дельфийских библиотек
для мапирования RAW-типов в дельфийские типы,
не мудрствуя лукаво, запрашивают от сервера описание полей резалтсета
при помощи isc_dsql_describe().
в данном же случае, результат будет отличный от того,
на который библиотека "умеет" реагировать.
так что без напильника не обойтись.
в любом случае.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872760
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

делаешь в ON CONNECT триггере

Код: sql
1.
SET INT128 BIND BIGINT



Если результат помещается в BIGINT, то можно не править ни одной строчки кода
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872764
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
07.10.2019 16:57, Симонов Денис пишет:
>
> делаешь в ON CONNECT триггере
> SET INT128 BIND BIGINT

кривые костыли.
в DB-конфиге ещё куда ни шло, но в триггере...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872768
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

да не важно где. Это новый вид запросов, так называемые "Управляющие запросы". Их позволили выполнять где угодно, в том числе и PSQL. Хотя согласен привязка типов там выглядит странно, ибо получается что потенциально мы можем менять привязку на лету.

Можно попросить параметр пока не поздно, ну или через dbp_
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872781
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
07.10.2019 17:05, Симонов Денис пишет:
> Можно попросить параметр пока не поздно, ну или через dbp_

если не затруднит, закинь в FD удочку.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872801
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

isc_dpb_int128_bind уже есть оказывается
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872810
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
07.10.2019 17:22, Симонов Денис пишет:
> isc_dpb_int128_bind уже есть оказывается

а в DB-конфиге?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872818
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

не уверен что он там нужен. Клиенты разные бывают, кто поддерживает нативный тип, кто-то нет.
ИХМО, сразу для всех ставить не правильно
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872822
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
07.10.2019 17:33, Симонов Денис пишет:
> не уверен что он там нужен. Клиенты разные бывают, кто поддерживает
> нативный тип, кто-то нет.
> ИХМО, сразу для всех ставить не правильно

основной опиньён совместимости:
унаследованный клиент должен работать БЕЗ переделок.

к тому же это ничуть не хужее триггера на коннект.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39872926
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий> У тебя все числа теперь NUMERIC(38, x) что ли стали?

ну, агрегаты таки уже да.Не все. Тип агрегата выводится из типа его аргумента.
Например
sum(int) -> bigint
sum(bigint) -> numeric(38)

С какого перепугу 0.0 стал bigint - тут мы ещё разберёмся.
Не всё так страшно.
...
Рейтинг: 0 / 0
173 сообщений из 173, показаны все 7 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Корректное завершение gbak/isql при b/r
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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