|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Преамбула: я тут задался целью написать для себя кроссплатформенный велосипед с использованием всех утилит FB "в одном стакане", чтобы не мыкаться с командной строкой. В прикладе используется компонент TProcess (лазарусовская обвязка вокруг ShellExecute/System), который создается в доп.потоке, вызывает gbak/isql и т.д., ждет окончания их работы и благопристойно умирает вместе с потоком. В ситуации, когда нужно срочно прервать b/r, мне необходимо сначала корректно завершить работу gbak/isql. Если просто уничтожить поток вместе с выполняющимся b/r, то утилиты, очевидно, лочат какое-то время выводимые файлы, потому что при повторной попытке запустить процесс я в течение 30-60 сек не могу удалить "неудачный" бекап и получаю отлуп: Код: sql 1. 2.
Я читал про мониторинг, но 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- ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 15:54 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, для gbak можно было сразу воспользоваться ServiceAPI и получить полный контроль за всем происходящим. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 16:15 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов Денисможно было сразу воспользоваться ServiceAPI можно подробнее для гуманитария, что ты имел ввиду? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 16:39 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, MON$REMOTE_PID ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 16:42 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Докможно подробнее для гуманитария, что ты имел ввиду? :) в IBX лазаря нет IBBackupService? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 16:48 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов Денисв IBX лазаря нет IBBackupService? в данном случае я не использую его hvladMON$REMOTE_PID а как извлечь его из текущего соединения gbak? Есть какие-нибудь ключи? Или придется изучать низкоуровневой доступ к БД? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 17:04 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, когда ты запускал дочерний процесс, ты мог получить его PID. Кстати ДокМожно, конечно, вычислить "виновника" по MON$REMOTE_PROCESS, но в этом случае грохнутся соседние экземпляры моего приложения, которые в этом время будут делать что-то ещетвои приложения называются gbak.exe ? :) PS PID - это process ID (на всякий) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 17:09 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
hvladкогда ты запускал дочерний процесс, ты мог получить его PID. ага, вот ты о чем! Я наивно полагал, что PID надо получать из таблиц мониторинга :) Щас спрошу на лазаревском форуме, можно ли получить PID из TProcess. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 17:27 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
hvladтвои приложения называются gbak.exe ? :) :) нет, конечно, но я сделал вывод по аналогии, глядя в таблицы MON$ATTACHMENTS двух запущенных экземпляров IBE ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 17:28 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов Денисвоспользоваться ServiceAPI и получить полный контроль за всем происходящим. Авотфиг. Там не то что "полного", там минимального контроля и то нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 17:28 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ДокСимонов Денисв IBX лазаря нет IBBackupService? в данном случае я не использую его А почему ты его не используешь? Потому, что ты хочешь получать бэкап-файл на локальной (не серверной) машине, или еще почему-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 17:29 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ёёёёёА почему ты его не используешь? Потому, что ты хочешь получать бэкап-файл на локальной (не серверной) машине, или еще почему-то? В том числе. Я уже писал раньше, что на текущий момент, пилящиеся под Лазарь IBX от mwasoftware, либо не удовлетворяют потребностям последних версий FB (например, legacy-компоненты, оставшиеся в составе этой библы от первоисточника, не имеют пропертей обработки ключей -fix_fss_d/fix_fss_m), либо еще сырые и дают ошибки коннекта, если сервер(а) (например, в винде) установлен(ы) и запущен(ы) не стандартным инсталлятором, а из архивов и вручную. Плюсуй сюда упертость автора, что продукт лучше развивать в соответствии с хотелками (в разумных пределах, конечно) пользователей, а не автора. Плюс независимость от нестандартных компонент доступа. В итоге получишь мои резоны :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 17:51 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Докя сделал вывод по аналогии, глядя в таблицы MON$ATTACHMENTS двух запущенных экземпляров IBEIBE не запускает gbak. Он использует Service API ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 17:59 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
hvlad, Влад, спасибо за наводку. Пошел пилить дальше ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 18:32 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, А вот в linux расширения .exe не будет. :) У TProcess есть свойство ProcessID , в котором этот самый pid и должен отдаватся. Кроме того, gbak , должен корректно отрабатывать прерывание по Ctrl+C - сигнал завершения. Т. е. ты ему по pid -у можешь послать сигнал завершения и он всё корректно закроет. Возможно TProcess так и делает по Terminate() , но можно и явно ручками послать через FpKill() ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 18:47 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, госпидя. скопипастил из fibplus, и сделал свой клон, если автор ибх под лазарь такой дебил, что даже ключи почти десятилетней давности не может добавить в servapi. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 23:06 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
kdvавтор ибх под лазарь такой дебил И эти люди ещё удивляются почему я использую API напрямую... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2019, 00:08 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
kdvесли автор ибх под лазарь такой дебил, что даже ключи почти десятилетней давности не может добавить в servapi. я не был столь категоричен :) он там много чего полезного (я надеюсь, все не щупал) наворотил Но вот это вкупе с необходимостью чего-то доказывать, напрочь отбивает охоту ими пользоваться Свой клон делать - это надо программистом работать, вот выйду на пенсию :) TonalВозможно TProcess так и делает по Terminate() , но можно и явно ручками послать через FpKill() На стороне клиента TProcess.Terminate(), действительно, убивает gbak (кстати, на виндах метод вызывает TerminateProcess, а на линуксе FpKill). На винде огрызок файла бекапа все равно остается залоченным 30-60 сек, в линуксе можно сразу запускать и прерывать процесс бекапа бесконечно много раз. Поэкспериментирую с удалением по MON$REMOTE_PID, потом отпишусь ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2019, 00:52 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovИ эти люди ещё удивляются почему я использую API напрямую... я не удивляюсь, я тебе завидую :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2019, 00:53 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2019, 13:24 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ДокНо вот это вкупе с необходимостью чего-то доказывать, напрочь отбивает охоту ими пользоваться только что проверил. Поменял порт у фб на 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 [ОК] так что всё там работает. Ты просто или ФБ не запустил, или в конфиге ФБ не тот порт указал, или не рестартанул ФБ после изменения порта. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2019, 23:20 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
kdvДокНо вот это вкупе с необходимостью чего-то доказывать, напрочь отбивает охоту ими пользоваться так что всё там работает. Ты просто или ФБ не запустил, или в конфиге ФБ не тот порт указал, или не рестартанул ФБ после изменения порта. Вряд ли, у меня, как минимум, две версии сервера всегда крутятся. IBE доволен :). Вечерком проверю, конечно. А у тебя сервак запущен как приложение или как сервис? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 08:03 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ДокА у тебя сервак запущен как приложение или как сервис? как приложение, но в случае tcp это не имеет никакого значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 11:17 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
kdv, скорее всего, у тебя че-та в реестре или в переменных среды есть, чего нет у меня. Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
cmd Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
да и х@р с ним :) Будет время, отпишу ему ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 15:15 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ГРАЖДАНЕ! вот нахрена вы оборачиваете значимую часть сообщения в СПОЙЛЕР?!! просто потому что "красиво"? ИЗАБЭЛЛА, йопть! зы: по nntp не читаемо. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 15:21 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящийпо nntp не читаемо. Ругайся Джуджу в ОНС, что он генерит HTML громоптицей не поддерживаемый. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 15:25 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, выходит - у тебя нет слушателя на 127.0.0.1, но есть на localhost. Или он был не запущен. Покажи ping localhost ping 127.0.0.1 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 15:30 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
МимопроходящийГРАЖДАНЕ! special for MP IBE: Attempting to connect to: Код: sql 1. 2. 3. 4. 5. 6. 7.
cmd: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
ps. звиняй, все время забываю, что ты nntp читаешь ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 15:32 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 15:33 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
30.09.2019 15:25, Dimitry Sibiryakov пишет: > Ругайся Джуджу в ОНС жужель не писал nntp. как и большую часть сего "портала". ибо не копенгахен. кроме того, его уже больше года с собаками ищут. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 15:34 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
hvladвыходит - у тебя нет слушателя на 127.0.0.1, но есть на localhost. не похоже: IBE Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 15:52 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Значит и "вот это" 21981845 тоже должно работать ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 15:53 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
hvladЗначит и "вот это" 21981845 тоже должно работать вечерком попробую переставить компоненты из последнего транка. Побежал на работу :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 16:07 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, я буквально вчера лазаря и ибх ставил, потыкать, так что у меня полный свежак. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 17:01 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ДокhvladЗначит и "вот это" 21981845 тоже должно работать вечерком попробую переставить компоненты из последнего транка. Побежал на работу :) Эд, а ты IBX какой юзаешь? От Rik или родной? Может он тебе поможет? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 17:20 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
GallemarОт Rik или родной? Речь шла про форк от mwasoftware (которые в репах OPM лежит). От Юрия Копнина (aka Rik) они уже устарели, но надежны. Надо будет поковыряться в исподниках, может и вправду, добавить самому пару свойств. зы. вообще, это хорошая школа писать такие велосипеды: воленс-ноленс перелопатишь кучу доки. Времени только уходит немеряно. Вот кабы мне этим лет 25 назад заняться... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 17:49 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
30.09.2019 17:49, Док пишет: > Вот кабы мне этим лет 25 назад заняться... щас бы плевался... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 17:56 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, у mwasoftware есть API интерфейс который унифицирует ОО-API тройки и API-2.5 больше ничего интересного я там не нашёл. Может их унификация и не идеальна, зато много чего можно подсмотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 18:11 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий30.09.2019 17:49, Док пишет: > Вот кабы мне этим лет 25 назад заняться... щас бы плевался... ''Лучшее время для посадки деревьев - 20 лет назад" - (с). Второе лучшее время - сейчас. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 18:22 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
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. Но у меня образованиев не хватает :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 00:20 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док-p <n+номер версии> А вот это лишнее. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 00:39 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
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 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 00:51 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Докдостаточно <exe-path> -a -p ? достаточно <exe-path> -a ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 00:56 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ДокRemoteServiceName = gds_db_<n+номер версии>И этого не надо. В системе нет такого сервиса ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 01:00 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
hvladДокRemoteServiceName = gds_db_<n+номер версии>И этого не надо. В системе нет такого сервиса Я тоже в имя сервиса FB включаю версию и # порта. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 01:12 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
hvlad, так как правильно? Шоб навсегда и железобетонно? Я пробовал читать тут , но мой моск вышел из строя, по меньшей мере, до утра :( ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 01:14 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ДокЯ пробовал читать тут , но мой моск вышел из строя, по меньшей мере, до утра :(Вроде, всё разумно и понятно. С практической точки зрения: 1. -p в строке запуска - последнее слово; 2. Не выделываемся с RemoteServiceName и меняем RemoteServicePort по мере надобности. P.S. Лично я использую "говорящую схему" - 10000 + 10*Версия + Экземпляр: 13040, 12590, 12170, 11560. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 04:04 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, иными словами, если резюмировать выше сказанное, корректные варианты конфигов (по сравнению с дефолтным) и подключений: IpcName = <уникальное имя инстанса> - задается в любом случае Код: plsql 1. 2. 3. 4. 5. 6. 7.
или Код: sql 1. 2. 3. 4. 5. 6. 7.
ps. вот c RemoteServiceName не разобрался Код: sql 1. 2. 3. 4. 5. 6. 7.
в Х-перте получаю Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Содержимое c:\WINDOWS\system32\drivers\etc\hosts (Win XP x32) Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 09:56 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Докps. вот c RemoteServiceName не разобралсяЭто имя, завязанное на /etc/services (%SystemRoot%\System32\drivers\etc\services). С RemoteServiceName просто нет смысла возиться - ничего "сакрального", окромя "поименованного номера порта" в нём нет. P.S. IpcName существенно только для xnet и, соответственно, только для винды. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 10:05 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Basil A. SidorovIpcName существенно только для xnet и, соответственно, только для винды т.е. под другие протоколы нет смысла его изменять? Basil A. SidorovС RemoteServiceName просто нет смысла возиться интересно, с линуксами достаточно будет поиграться с портами и строкой запуска или вдобавок нужно будет в /etc/services прописывать RemoteServiceName? зы. я уж извиняюсь за назойливость, привык все выяснять до конца. Хочется иметь на никсах (линь, OSX) тоже несколько серверов для икспериментов :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 10:15 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
c:\WINDOWS\system32\drivers\etc\services Код: sql 1. 2. 3.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
а ведь взлетело Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 10:26 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, что удивило то? Это документированное поведение. Даже в комментах написано, что нужно изменять только один из этих параметров, но не два сразу. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 10:31 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов ДенисЭто документированное поведение. кто ж доки сразу читает? Только в крайнем случае... зы. спасибо всем за участие и советы. Пошел есть моск автору IBX (чую, придется его компонентами скоро начать пользоваться). Теперь хоть смогу корректно исходные условия запуска сервера с возникающими ошибками коннекта ему описывать. А по поводу сабжа: только собрался создавать тему на форуме FPC, словно по заказу еще один перец с подобными проблемами нарисовался :) Кстати, если вручную в cmd-окне прервать gbak по <Ctrl>+<C>, то по моим наблюдениям все равно *.bak-файл в винде какое-то время залочен (правда, порядка 5-10 сек при "ручном прерывании" супротив 40-60 сек при "программном"). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 10:56 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, а зачем морочить голову с services и service name? Клиент ФБ давно может игнорировать services, даже клиент ИБ это теперь умеет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 12:19 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Докдостаточно <exe-path> -a ? Да. При условии, что задействуется правильный конфиг из каталога запуска. -p штука довольно мутная, воздействует сразу на два протокола и я бы её избегал. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 12:31 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Докинтересно, с линуксами достаточно будет поиграться с портами и строкой запуска или вдобавок нужно будет в /etc/services прописывать RemoteServiceName?Нигде не надо играться со строкой запуска. Прописали RemoteServicePort, (опционно) IpcName и стартанули (перестартовали) сервис (приложение). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 13:31 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
kdvа зачем морочить голову с services и service name? я уже не морочу, решил для себя в будущем не трогать дефолтные настройки конфигов и просто запускать сервера с параметрами -a -p <уникальный порт> зы. кстати, я понял, что не так с теми британскими IBX'ами: автор че-та намудрил в компонентах с designtime-свойствами, потому и ошибки сыплет, и черт-те какие настройки в дизайнере кажет (можешь сам транк в svn попробовать). Если задать настройки в рантайме, все тип-топ (проверил навскидку в IBDatabase и IBXServicesConnection) Dimitry Sibiryakov-p штука довольно мутная, воздействует сразу на два протокола и я бы её избегал. которые из них и чем грозит? зы. Дим, если не трудно, плз, стукнись мне в яшшик dddoc лай-лай яндек сру. Есть вопросы приватного характера. Basil A. SidorovПрописали RemoteServicePort, (опционно) IpcName и стартанули (перестартовали) сервис (приложение). у меня машина домашняя, линь/хакинтош в виртуалке, поэтому не страшно. Мне некоторый опыт нужен, чтобы выяснить детали кухни птицы. Вдруг фрилансить придется (а судя по динамике принимаемых больных скоро мы вспомним начало сакральных 90-х), а я не готов :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 23:19 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Доки черт-те какие настройки в дизайнере кажет я скачивал последний релиз ibx4lazarus2.3-3 2.3.3 мне эти транки до лампочки. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2019, 23:25 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ДокЕсть вопросы приватного характера. Не, к приватным танцам я не готов. Но ты можешь отловить меня где-нибудь за пивком в Берлине через пару недель. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 00:11 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
kdvмне эти транки до лампочки. так это и есть транк, выложенный в паблик :) Таки ты в DT свойства задавал или в RT? Dimitry SibiryakovНе, к приватным танцам я не готов. Но ты можешь отловить меня где-нибудь за пивком в Берлине через пару недель. вот прати-и-и-вный По заграницам я не выездной (типа "институт, экзамены, сессия..." ©). У тебя какие-нибудь исходники на АПИ с простейшими примерами коннекта, селекта и проч.? Только не предлагай Using_OO_API, там все на "богомерзком С" Или что почитать, букварь какой... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 16:14 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док Таки ты в DT свойства задавал или в RT? в дизайн-тайме, конечно. У меня нужды про RT пока нет. Как у тебя на картинке было нарисовано, так я и делал. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 16:23 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ДокУ тебя какие-нибудь исходники на АПИ с простейшими примерами коннекта, селекта и проч.? забей. для прикладных программ эта "технология" не годится, слишком много писанины, да еще исключительно рантаймовой. Для инструментальных - без проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 16:24 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, Using_OO_API там с++, но для Pascal оно переводится с полпинка ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 16:32 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, mwasoftware написали свою обёртку над API завернув всё в интерфейсы аля-COM https://mwasoftware.co.uk/downloads/send/5-ibx-current/146-firebirdpascalapiguide эта фиговина входит в состав их IBX. Насколько она хорошо написана хз, но там точно более низкий уровень чем ихние датасеты. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 16:42 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
02.10.2019 16:42, Симонов Денис пишет: > написали свою обёртку над API завернув всё в интерфейсы аля-COM имхо, перебор. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 16:44 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
kdv, обижаешь. Писанина, конечно, рантаймовая и среднестатистический мышевозник пальцы сотрёт, но Док-то в курсе как скопировать строку. В приложении библиотека (Дельфи 2006), которую я использую. С ней код выглядит так для коннекта: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Запрос и чтение результатов как-то так: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 16:45 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
а я пожалуй поддержу kdv. для написания "инструмента" такой подход оправдан. а для прикладного GUI-софта нонсенс. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 16:50 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящийдля написания "инструмента" такой подход оправдан. а для прикладного GUI-софта нонсенс. И тебя не смущает, что и сама библиотека и приведённые куски кода - из того самого "гуевого софта"?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 16:56 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
не нужно демагогии. у тебя инструмент. GUI там сбоку. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:01 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящийу тебя инструмент. GUI там сбоку. "Инструмент" у меня написан на С++ и гуй там чисто номинальный. А эти куски таки из чисто гуевой редактилки базы, которая ничем не отличается от основной продукции Дока. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:11 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ещё добавь к этому, что у тебя данные таким макаром в грид попадают, да в печатные формы сложносочинённые всякие... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:15 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, у тебя GUI только для настройки. У прикладников в приложении живут сотни формочек и не факт что их можно сделать по одному шаблону. В таком виде умрёшь писать ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:15 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов ДенисУ прикладников в приложении живут сотни формочек и не факт что их можно сделать по одному шаблону. Можно, можно. Все их "сотни формочек" сводятся к "загрузить хрень, позволить пользователю над ней поиздеваться, сохранить результат". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:19 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
02.10.2019 17:19, Dimitry Sibiryakov пишет: > Можно, можно. Все их "сотни формочек" сводятся к "загрузить хрень, > позволить пользователю над ней поиздеваться, сохранить результат". ты сознательно сузил размеры окна до замочной скважины. можно конечно и это переморгать. но глаз устаёт. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:29 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Дим (DS), спасибо, поизучаю. Мужики, спасибо всем за мнения. Я не то, чтобы завтра сяду писать свой репликатор на голом апи, но мне хотя бы оценочно надо прикинуть, стоит ли заморачиваться с этим или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 18:25 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящийты сознательно сузил размеры окна до замочной скважины. А, ну давай, расскажи как космические корабли бороздят просторы Большого Театра какие из этих "сотен формочек" не уложатся в данный шаблон и сколько их там будет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 18:27 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
02.10.2019 18:27, Dimitry Sibiryakov пишет: > А, ну давай, расскажи я никогда не спорю с носителями сокровенного знания Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 18:31 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящийя никогда не спорю с носителями сокровенного знания А ты не спорь, ты фактами дави. Типа "в моей прикладухе 100500-я формочка делает то-то и то-то, но оно совершенно не может быть произведено в брифкейс модели за которую ты топишь". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 18:34 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, "все норовят слепить свой собственный фреймворк". ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 21:43 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ДокУ тебя какие-нибудь исходники на АПИ с простейшими примерами коннекта, селекта и проч.? возьми unified interbase - минимальная библиотека на Delphi - и читай сорсы правда Анри её давно забросил, во времена ещё до выхода FB3 - но ты же не хочешь OO API (и я тебя понимаю) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 17:02 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Ariochи я тебя понимаю почему? Ты пробовал? Ну у DS есть список своих претензий. Но он хотя бы щупал OO API. А ты небось только из дали видел ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 17:42 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов Денис, да, издали изобрели велосипед с огромным количеством бойлерплейта, в котором хрен разберёшься где что при этом, в общем-то, не понятно зачем это надо. Типа, процедурный интерфейс с хэндлами уже не в моде. старый API проще, обычнее (такое во всех DLL было), к нему документация есть (хотя и с ошибками и времён ib6) и куча проверенного кода. Декларация этого API - пара файлов, из которых самый большой - просто список error codes. новый API.... Перемешаны декларации и роботом писанный код на Delphi. Всё это занимает гораздо больше места. Доки нет, даже на уровне IB6 API Guide. Больше такое нигде не используется, т.е. шаблоны восприятия/понимания наработанные на других продуктах тут не помогают. вот зачем во всём этом разбираться, кроме возможно одной цели - UDR и писать SP на жабе или паскале (сама по себе сомнительная идея) ? Итого: объёмный нечеловеческий boilerplate, почти недокументированный, с непонятно где лежащими граблями которые непонятно как если что диагностировать, и - с одним теоретическим преимуществом, которое просто не нужно. Ачивку себе повесить "перешёл на новый модный молодёжный API" ? я её себе лучше в Стиме на игрушке повешу за то же время. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 18:00 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
03.10.2019 18:00, Arioch пишет: > Итого: объёмный нечеловеческий boilerplate, почти недокументированный, с > непонятно где лежащими граблями которые непонятно как если что > диагностировать, и - с одним теоретическим преимуществом, которое просто > не нужно. Ачивку себе повесить "перешёл на новый модный молодёжный API" ? мне оно тоже не по душе. но я так понимаю, новые нумерики и тому подобное, на старом АПИ никто не реализовал и вряд ли будет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 18:14 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий, "К свету - по этапу. К счастью - под плетями." ну вот когда/если понадобится, тогда и будем думать ....взять и реализовать fbclient3 с классическим интерфейсом поверх молодёжного, чтобы на самом деле этот API изучить ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 18:20 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
03.10.2019 18:20, Arioch пишет: > ну вот когда/если понадобится, тогда и будем думать я слабо представляю кому РЕАЛЬНО могут понадобиться нумерики размером в 30 и более знаков Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 18:31 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящийя так понимаю, новые нумерики и тому подобное, на старом АПИ никто не реализовал и вряд ли будет. Фишка старого API в расширяемости и для новых типов там не нужна никакая специальная поддержка. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 18:36 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
03.10.2019 18:36, Dimitry Sibiryakov пишет: > Фишка старого API в расширяемости и для новых типов там не нужна никакая > специальная поддержка. и как сейчас запихать эти нумерики в xsqlda? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 18:40 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий, для этого сначала нужно разобраться, что такое диалект XSQLDA, вывести его в отдельное понятие (он не должен был быть отдельным понятием, но между IB5 & 6 про это забыли), задокументировать, пофиксить код и всё это желательно сделать вместе с interbase team, ради мира в о всём мире попробовать что-ли сделать какой-нибудь блог-пост из переписки с авторами jaybird и interbase objects.... хотя кому это нафиг надо, логика как с теми скобками, "за 20 лет никто не натолкнулся" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 18:50 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ну или нифига не делать с диалектом data area, а просто ввести новые конвтанты типов, как с тем же boolean, а какие клиентские либа/аппликухи на этом посыплются - те к новым типам не готовы ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 18:52 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий03.10.2019 18:20, Arioch пишет: > ну вот когда/если понадобится, тогда и будем думать я слабо представляю кому РЕАЛЬНО могут понадобиться нумерики размером в 30 и более знаков https://www.sql.ru/forum/1317439/integer-overflow-coalesce-numeric-int64 так что 30 - это только для разгону ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 18:53 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящийи как сейчас запихать эти нумерики в xsqlda? Так же как обычно: соответствующий тип в sqltype, размер - в sqllen, указатель на собственно данные - в sqldata. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 18:56 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
03.10.2019 18:56, Dimitry Sibiryakov пишет: > Так же как обычно: соответствующий тип в sqltype и кто этот тип должен объявить? вон ввели SQL_BOOLEAN, все писатели библиотек его заприходовали. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 19:00 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий, вот ровно также только название будет типа SQL_Integer_128_signed сначла в движке, потом в fbclient, потом в либах/аппликухах ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 19:03 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
03.10.2019 19:03, Arioch пишет: > вот ровно также только название будет типа SQL_Integer_128_signed > сначла в движке, потом в fbclient, потом в либах/аппликухах есть мнение, что не будет :( Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 19:05 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий, значит, не будет а ты что загрустил, тебе разве уже понадобились "нумерики размером в 30 и более знаков" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 19:13 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
03.10.2019 19:13, Arioch пишет: > а ты что загрустил, тебе разве уже понадобились "нумерики размером > в 30 и более знаков" меня удручает тенденция Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 19:15 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий, ты это, лучше оленей от обрыва отгони, не надо о тенденциях, не-на-до! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 19:16 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящийесть мнение, что не будет :( Влад на этом месте уже начал бы ругаться, а я просто процитирую sqlda_pub.h: Код: plaintext 1. 2. 3. 4. 5.
Куда приткнуть SQL_INT128 Алекс пока не решил. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 19:19 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovМимопроходящийи как сейчас запихать эти нумерики в xsqlda? Так же как обычно: соответствующий тип в sqltype, размер - в sqllen, указатель на собственно данные - в sqldata. ага, а портировать классы на Delphi для работы с INT128, DECFLOAT или TIMESTAMP WITH TIMEZONE ты сам будешь? Т.е. запихнуть то их туда на стороне fbclient можно, а вот что потом с этим указателем на данные делать без специальных интерфейсов хз. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 19:37 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов ДенисТ.е. запихнуть то их туда на стороне fbclient можно, а вот что потом с этим указателем на данные делать без специальных интерфейсов хз. А как ты живёшь без специальных интерфейсов для INT64/TIMESTAMP?.. В Си есть встроенные decimal и int128, в Delphi тоже почти наверняка можно найти библиотеки для работы с ними. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 19:42 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, int64 есть везде и давно. Для TIMSTAMP есть isc_decode_date / isc_encode_date ... А вот что делать с DECFLOAT? Вон с одними таймзонами уже геморроя нажили ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 19:47 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов ДенисДля TIMSTAMP есть isc_decode_date / isc_encode_date ... Лучше бы не было. И да, это справедливо и для того ужаса, что они навыдумывали в интерфейсах. Симонов ДенисА вот что делать с DECFLOAT? Слаб духом - биндь как SQL_TEXT. Прочие могут гуглить сторонние библиотеки. Особо суровые - спецификацию двоичной раскладки из вики или первоисточника. Лично я буду тупо использовать "в тёмную", как пачку байт, но это специфика. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 19:50 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
AriochСимонов Денис, да, издали изобрели велосипед с огромным количеством бойлерплейта, в котором хрен разберёшься где что ты не пытался Ariochновый API.... Перемешаны декларации и роботом писанный код на Delphi. Всё это занимает гораздо больше места. Доки нет, даже на уровне IB6 API Guide. Больше такое нигде не используется, т.е. шаблоны восприятия/понимания наработанные на других продуктах тут не помогают. да какая разница сколько это занимает места? Там и без доки всё понятно. Потому что это практически тот же старый API сгруппированный по хендлам. Ничего сложного там нет Ariochвот зачем во всём этом разбираться, кроме возможно одной цели - UDR тебе и в старом не зачем ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 20:19 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов Денисэто практически тот же старый API сгруппированный по хендлам. Не совсем. Это "очень старый API", который никогда не рассчитывался на прямое использование, а служил исключительно как поддержка препроцессора gpre. Потому-то и получилось то, что получилось. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 20:27 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
03.10.2019 19:19, Dimitry Sibiryakov пишет: > > Куда приткнуть SQL_INT128 Алекс пока не решил. ну, ежели таки воткнут, то не всё так плохо. а касаемо того, что делать с этим в Delphi, то особых проблем не вижу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 11:29 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий03.10.2019 19:19, Dimitry Sibiryakov пишет: > > Куда приткнуть SQL_INT128 Алекс пока не решил. ну, ежели таки воткнут, то не всё так плохо. а касаемо того, что делать с этим в Delphi, то особых проблем не вижу. дык это оно и есть вроде Код: plaintext 1.
насколько я понял отдельного INT128 не будет, эта штуковина только для реализации NUMERIC(38, x) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 11:41 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов Денис, хотя не... src/include/firebird/impl/sqlda_pub.h Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 11:49 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ты какой-то старый вариант цитируешь ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 11:51 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 12:17 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов Денисты какой-то старый вариант цитируешь Просто давненько дерево не обновлял. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 12:30 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий, ну реализацию int128 на delphi найти можно. С DecFloat намного сложнее. Скорее всего большинство воспользуются хелпером Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
впрочем для того чтобы пользоваться хелперами, не обязательно целиком переходить на OO_API достаточно Код: pascal 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 12:33 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящийнапример в Оракеле на это дело откровенно кладут... Ну, в Оракеле своя специфика. Там парсер SQL до сих пор на клиентской стороне. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 12:36 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 13:08 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий, ИХМО, исключительно с целью унификации OO API, чтобы он везде ОО сохранялся :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 13:15 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
04.10.2019 13:15, Симонов Денис пишет: > ИХМО, исключительно с целью унификации OO API, чтобы он везде ОО > сохранялся :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 13:25 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Если приложение неспособно работать с decfloat, оно не сможет его в базу положить и нет смысла его из базы доставать. Ибо не ГПСЧ же из байт значение там собирается?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 13:34 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
опять же, если вспомнить мой пример - тупо перемножение нескольких нумериков, то на самом деле все эти 38 знаков и не нужно, ибо последние знаки будут нули-нули-нули и поэтому будут как во времена 1-го диалекте, через другие типа конкретно в Delphi это делалось через поля типа BCD, у которых были сеттеры/геттеры в int32-тип ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 17:42 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
04.10.2019 17:42, Arioch пишет: > конкретно в Delphi это делалось через поля типа BCD, у которых были > сеттеры/геттеры в int32-тип в новых дельфях к рекорду TBCD понавешивали собственных классовых методов. ибо это стильно, модно, молодежно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 17:48 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Ariochопять же, если вспомнить мой пример - тупо перемножение нескольких нумериков, то на самом деле все эти 38 знаков и не нужно, ибо последние знаки будут нули-нули-нули не факт. Нули у тебя потому что ты в дробной части нули задавал. Оно может редко, но нужно. И кстати запрос на длинные нумерики давно был Ariochи поэтому будут как во времена 1-го диалекте, через другие типа есть ещё DEFLOAT(34) Ariochконкретно в Delphi это делалось через поля типа BCD, у которых были сеттеры/геттеры в int32-тип причём тут delphi? Пользовательские агрегатные функции ещё не сделали ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 18:22 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Delphi к вопросу Симонов Денисага, а портировать классы на Delphi для работы с INT128, DECFLOAT или TIMESTAMP WITH TIMEZONE ты сам будешь? Т.е. запихнуть то их туда на стороне fbclient можно, а вот что потом с этим указателем на данные делать ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 18:38 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Arioch, оно в bcd само не преобразуется. Теоретически для int128 это не сложно сделать. Можно и для decfloat если почитать стандарт по бинарному размещению. Но на хрена, когда это уже сделали за вас? Шоб понты поколотить смотрите а я смог без OO API ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 18:43 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов ДенисНо на хрена, когда это уже сделали за вас? А теперь вопрос на засыпку: что проще: портировать своё приложение на новое API или портировать мелкий кусок нового API в своё приложение? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 18:48 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, конечно кусок. Но не портировать, а использовать. В IBE так и делают. Там всё что можно на Legacy API, где не получается идём за новым. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 18:59 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов Денис, Фактический стандарт в 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 - не выпендрёж ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 19:11 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов Денисконечно кусок. Но не портировать, а использовать. На пути "использовать" лежат забавные грабли с загрузкой библиотеки и импортом, но да, наверное есть ещё любители геморроя себе на шею. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 19:26 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
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 вместо чего-то там вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 19:28 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСимонов Денисконечно кусок. Но не портировать, а использовать. На пути "использовать" лежат забавные грабли с загрузкой библиотеки и импортом, но да, наверное есть ещё любители геморроя себе на шею. вот здесь не понял. Ты в LegacyAPI импортируешь десятки функций, с чего бы импорт ещё одной должен дать какие-то грабли? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 19:40 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов ДенисЕсли нет аналога в старом, то придётся в новое лезть, только и всего. но речь шла про int128 - а его вроде бы уже протащили в старый API, во всяком случае константы sql_type цитировали ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 19:42 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Arioch, эти константы не только для старого API. И да в SQLVAR поместить то можно любой тип. Речь о том что ты будешь делать с этим указателем. Как в Delphi он должен обрабатываться? Варианта 2: воспользоваться хелперами из нового API, или раскатывать структуру руками. вот тебе Код: plaintext 1. 2. 3. 4. 5.
расскажи нам как ты это в BCD раскатаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 19:57 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов Денис, посмотрю, как во времена Delphi 5 или Delphi 2006 переводили int64 в TField.AsDouble и сделаю аналогично а с твоим хелпером будет аналогичная проблема, как скопировать данные из поля в байтовые буфера "текущая запись плюс-минус пара десятка строк, чтобы на экран влезало" у TDataSet Только копировать надо будет не из SQLDA, а из твоего хелпера. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 20:16 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Arioch, там есть поле типа FMTBcd в него можно закатать. Вариант 1. Берём указатель из SQLDA и вызываем в хелепере функцию toBcd, если она бинарно совместимо, то следом function BcdFromBytes(const AValue: TArray<Byte>): TBcd; Если нет, то вариант 2. Вызываем из хелпера toString. Далее function StrToBcd(const AValue: string): TBcd; overload; ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 20:44 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов ДенисТы в LegacyAPI импортируешь десятки функций, с чего бы импорт ещё одной должен дать какие-то грабли? Так и речь-то не обо мне, а о тех между кем и уже импортированными функциями две жирных-жирных библиотеки. Вот топик для размышления: https://www.sql.ru/forum/1316505/firedac-i-firebird-shifrovanie Арефьев, там, кстати, так и не показался. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 21:29 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, А какая вторая из "две"? И, кстати, ваш покорный слуга как раз из той организации, где вполне бы был востребован decfloat и как раз через фаердак, на которые , в симбиозе, весь прошлый год я лелеял надежды. Но теперь уже совершенно ясно, что внедрить FB4 в одной из самых известных структуре в стране уже не успею, время вышло. А жаль. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 21:57 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Vlad FА какая вторая из "две"? VCL+половина FireDAC-а и вторая половина FireDAC-а, так называемый "физический слой". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 22:10 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Я понял. Но боюсь, что все это теперь придется оставить уже на нового работодателя и на новое десятилетие.)) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 22:15 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
04.10.2019 22:10, Dimitry Sibiryakov пишет: > вторая половина FireDAC-а, так называемый "физический слой". вот за это я его и не люблю. даже кушать не могу! (С) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 11:44 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий, ну им надо было чем-то заменить BDE. ADO у них сделан так себе. Собственная разработка dbExpress тоже. По сравнению с ними универсальный FireDac очень даже ничего. Кому не нравится могут продолжать пользоваться IBX/FibPlus и так далее. Хот прямым API ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 11:53 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
07.10.2019 11:53, Симонов Денис пишет: > ну им надо было чем-то заменить BDE. они об этом не думали вааще. Арефий сам по себе такое решил. а Дебаркадеры купили готовое решение. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 11:58 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий, погоди. У Арефьева была цель сделать универсальный компонент доступа к БД. Он это сделал, по-моему мнению весьма не плохо, в особенности по сравнению с тем что предлагали в Embercadero. Дебаркадера поняла что ихние универсальные компоненты доступа мягко говоря гомно, стали искать чем бы заменить и их выбор пал на AnyDac (на их месте вполне мог оказаться UniDac). Понятное дело что специализированный компонент под конкретную СУБД всегда можно сделать более гибким. Но у FireDac такой цели нет. Посмотри с другой стороны, кто сейчас делает и поддерживает хоть один из специализированных компонентов доступа? IBX сосредоточена на IB им плюшки FB до лампочки, разве что самому точить, как ты это делаешь. FibPlus никто не поддерживает, есть некий клон, но насколько он актуален неизвестно. Да и вообще возникают проблемы с чистотой этого клона. Опять же систематически его никто не правит, какой-то обратной связи в плане поддержки нет. Что остаётся? Как бы не был сделан FireDac у него хотя бы есть обратная связь, плюшки новых версий FB в него портируются, ошибки правятся. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 12:14 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов ДенисДебаркадера поняла что ихние универсальные компоненты доступа мягко говоря гомно, стали искать чем бы заменить и их выбор пал на AnyDac (на их месте вполне мог оказаться UniDac). Универсальных компонент доступа у них никогда и не было. Была BDE, купленная с Аштонами, dbExpress, купленный позже и оказавшийся хуже BDE, а теперь вот FireDAC, который, конечно, лучше Экспресса, но до уровня BDE пока так и не дотянувшийся. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 12:28 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов Денистам есть поле типа 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 экономия усилий от его использования небольшая, при этом возникает ИЛЛЮЗИЯ высокоуровневого безопасного кода плюс ненужные блокировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 12:31 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
07.10.2019 12:14, Симонов Денис пишет: > Как бы не был сделан FireDac... может кому-то и не важно. может кто-то всё ещё онанирует медитирует на предмет "универсального доступа". покажите мне универсальный решатель обобщенных задач в дикой природе, и я тоже подрочу возрадуюсь. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 12:32 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, чего это не дотянувшийся до BDE? Что в BDE есть такого чего нет в FireDac? Если что-то глюкнуло в BDE, то внутрь уже никак не пролезешь хоть лопни. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 12:34 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий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 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 12:42 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов ДенисЧто в BDE есть такого чего нет в FireDac? Кэширование резалт-сета на диске. Он не сожрёт всю память на большом запросе. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 12:42 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий, речь не об универсальном решателе задач. Речь о том, что в сообществе FB никто не делает заточенного под него компонента на Delphi и уже давно, кроме разве что энтузиастов. Если приходит нуб, у которого нет собственных наработок за последние 10 лет, то ему проще взять FireDac, нежели IBX начинать в него портировать плюшки FB за последние 15 лет. Сейчас начинать разработку на Firebird стало сложнее увы ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 12:42 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов ДенисЧто в BDE есть такого чего нет в FireDac? прямая работа с файлами Paradox ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 12:43 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
07.10.2019 12:42, Симонов Денис пишет: > Если приходит нуб, у которого нет собственных наработок за последние 10 > лет, то ему проще взять FireDac, это если ньюб приходит сразу же на распоследние версии Delphi. а если на Лазаря, то там есть выбор. а вообще, Delphi(как продаваемый продукт) must die! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 12:49 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
"Плюшки за 15 лет" для "нуба", которому надо "начинать разработку на Firebird" - они сильно overrated логиновские FB IBX Utils никто не отменял, если "нуб" по инерции с IBX начнёт. UIB в режиме Firebird 2.5 даст всё, что нубу будет нужно в ближайшие пару лет. Включая такую приятную мелочь, как вычитывание запросов в виде Код: pascal 1. 2. 3. 4. 5.
К сожалению, из за убогого полуживого type inference в Delphi тип переменной надо явно объявлять, иначе бы ещё красивее было. И какой такой killer feature при этом лишится "начинающий разработку" "нуб" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 12:50 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
AriochЁ! ещё и указатель надо взять не НА DA, а ИЗ DA. Т.е. DA придётся руками парсить. не надо там ничего парсить. Сразу видно не разбирался. AriochРазмер входного буфера никто не проверяет если ты не рукожоп, то его не надо проверять. Зачем чтобы дополнительные тормоза поиметь? Ariochс проверкой на dialect 0 SQLDA этого не нужно. Старый диалект только для совместимости со старыми компонентами. Он не используется уже лет 15. Разве что в недрах старого BDE. В новом API этого понятия нет вообще. Arioch3. дёрганье хелпера, создающего "сырой" дамп в TBytes - ARC-структуре, т.е. запускающего две глобальные блокировки потоков процессора, как минимум две. сразу видно что ты не пытался разобраться. Нет там никаких блокировок. Хелпер надо получить ровно один раз, а потом пользоваться им. В нём нет глобального состояния. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 12:52 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Arioch, тебя почему-то не смущает string в Delphi. А ведь преобразование char/varchar в string несёт дополнительные накладные расходы и не малые. Не вижу никакой разницы с преобразованиями из/в bcd ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 13:23 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов Денис, смущает, но в данном случае влезть влезть внутрь компилятора и переписать строки 1) невозможно 2) если бы было возможно - было бы весьма трудно а вот в твоём-моём случае не надо "убирать" блокировки, достаточно их "недобавлять" Возвращаясь к строкам и BCD, в одном англоязычном FAQ отвечала на вечный вопрос о сравнении двух float на равенство. И "правильный" ответ был - заменить "if f1 = f2" на "if FloatToStr(f1) = FloatToStr(f2)" В принципе - код рабочий. Но какой-то он неправильный. Вот твой совет ради копирования raw bytes создать и потом уничтожить dynamic array - с ним на мой вкус ровно та же проблема. Накладные расходы на порядки больше самого действия. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 13:36 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Arioch, оно и в стрингах большое. Преобразование UTF8 <-> UTF-16 вызывает ничуть не меньше проблем и никто не жужжитю Уж извини работает с тем что есть. А от тебя лучших предложений пока не поступало. Вот только не надо про преобразование в double, оно не допустимо ибо несёт потерю точности. AriochИ "правильный" ответ был - заменить "if f1 = f2" на "if FloatToStr(f1) = FloatToStr(f2)" хрень это а не ответ. Все давно знают что сравнивать числа с плавающей точность надо с допустимой погрешностью. Правильный ответ Код: pascal 1.
где eps допустимая погрешность. Хочешь переменную придумай, хочешь константу ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 13:43 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов Денис, поправочка abs, т.е. модуль ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 13:44 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов ДенисА от тебя лучших предложений пока не поступало поступало 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, казалось бы в тему заговорил, но... Я удивлён. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 14:04 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
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, тогда может поймёшь ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 14:21 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Arioch, я это к тому, что ты так и сяк уже используешь TBytes для строк и не жужжишь не про его накладные расходы, ни про накладные расходы string. В последних версиях Delphi строки полученные из FB приходится перекодировать почти всегда (если только не AnsiString), ибо они в UTF-16, который никогда из FB не возвращается. Чего тогда из-за bcd здесь бучу поднимаешь? Не нравится иди на c++, где это можно сделать более прямым способом. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 15:01 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ладно вам спорить то. перекодировка нужна и там, и там. ибо 1. нативные (RAW) типы отдаваемые клиентом, напрямую в Delphi не ложатся (за редким исключением) 2. "интерфейсное АПИ" разрабатывалось тоже без оглядки на Delphi Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 15:08 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий, так я и пытаюсь ему это донести. Накладных расходов избежать не удастся в любом варианте. Тогда чего панику поднимать, мол ой неудобно сделали, тут блокировки... Там и без того накладных расходов вагон и маленькая тележка ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 15:11 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов ДенисВ последних версиях 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 задокументирован - библиотеки должны ожидать его прихода от сервера, хотя бы в размере "проверить и выдать ошибку". Хотя, конечно, ничего не проверять и тупо иметь шанс запороть память - лучше. Ведь "дополнительных тормозов" не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 15:49 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов ДенисТам и без того накладных расходов вагон и маленькая тележка а поэтому давайте на ровном месте, без какой-либо пользы, сделаем ЕЩЁ БОЛЬШЕ накладных расходов пц! пц! пц! (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 15:52 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий2. "интерфейсное АПИ" разрабатывалось тоже без оглядки на Delphi Зато Delphi разрабатывался с оглядкой на классическое API 21986134 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 15:56 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Arioch, сотый раз тебе повторяю. Все перекодировки строк в Delphi используют TBytes. Я не говорю что это хорошее решение, но оно так работает внутри. У тебя наверное из БД выбираются много полей с типами CHAR/VARCHAR. Ты не жужжишь? Ну так с какого перепугу беспокоиться об использовании его в Bcd? Покажи нам тупым как правильно инициализировать Bcd прям из структуры INT128. Только кодом, не надо нам тут поток бреда нести. Загляни в любой компонент доступа для современной Delphi. Глянь как получается string из CHAR/VARCHAR. Перевари, сильно не огорчайся. У тебя все числа теперь NUMERIC(38, x) что ли стали? Чего это оверхед на каждом шагу чудится ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 16:21 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
07.10.2019 16:21, Симонов Денис пишет: > У тебя все числа теперь NUMERIC(38, x) что ли стали? ну, агрегаты таки уже да. а это значит, что без изменений в библиотеке доступа не обойтись, для нормальной работы с FB4. даже не затачиваясь на новые фичи и типы . поясню. большинство (если не все) дельфийских библиотек для мапирования RAW-типов в дельфийские типы, не мудрствуя лукаво, запрашивают от сервера описание полей резалтсета при помощи isc_dsql_describe(). в данном же случае, результат будет отличный от того, на который библиотека "умеет" реагировать. так что без напильника не обойтись. в любом случае. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 16:45 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий, делаешь в ON CONNECT триггере Код: sql 1.
Если результат помещается в BIGINT, то можно не править ни одной строчки кода ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 16:57 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
07.10.2019 16:57, Симонов Денис пишет: > > делаешь в ON CONNECT триггере > SET INT128 BIND BIGINT кривые костыли. в DB-конфиге ещё куда ни шло, но в триггере... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 17:00 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий, да не важно где. Это новый вид запросов, так называемые "Управляющие запросы". Их позволили выполнять где угодно, в том числе и PSQL. Хотя согласен привязка типов там выглядит странно, ибо получается что потенциально мы можем менять привязку на лету. Можно попросить параметр пока не поздно, ну или через dbp_ ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 17:05 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
07.10.2019 17:05, Симонов Денис пишет: > Можно попросить параметр пока не поздно, ну или через dbp_ если не затруднит, закинь в FD удочку. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 17:11 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий, isc_dpb_int128_bind уже есть оказывается ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 17:22 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
07.10.2019 17:22, Симонов Денис пишет: > isc_dpb_int128_bind уже есть оказывается а в DB-конфиге? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 17:27 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий, не уверен что он там нужен. Клиенты разные бывают, кто поддерживает нативный тип, кто-то нет. ИХМО, сразу для всех ставить не правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 17:33 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
07.10.2019 17:33, Симонов Денис пишет: > не уверен что он там нужен. Клиенты разные бывают, кто поддерживает > нативный тип, кто-то нет. > ИХМО, сразу для всех ставить не правильно основной опиньён совместимости: унаследованный клиент должен работать БЕЗ переделок. к тому же это ничуть не хужее триггера на коннект. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 17:37 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Мимопроходящий> У тебя все числа теперь NUMERIC(38, x) что ли стали? ну, агрегаты таки уже да.Не все. Тип агрегата выводится из типа его аргумента. Например sum(int) -> bigint sum(bigint) -> numeric(38) С какого перепугу 0.0 стал bigint - тут мы ещё разберёмся. Не всё так страшно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 20:25 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1560551]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
155ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 273ms |
0 / 0 |