powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Зависание Prepare
18 сообщений из 43, страница 2 из 2
Зависание Prepare
    #39285599
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch
Код: sql
1.
2.
FOR SELECT ID, SQL FROM SQLS INTO :ID, :SQL DO
  EXECUTE STATEMENT :SQL

12874261 , 12874351
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285601
fb user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисfb user,

предположим что UDF написана без бага.

Код: sql
1.
2.
3.
4.
5.
6.
7.
EXECUTE BLOCK RETURNS (ID INTEGER) AS
  DECLARE SQL BLOB SUB_TYPE TEXT;
BEGIN
  FOR SELECT ID, SQL FROM SQLS INTO :ID, :SQL DO
    IF (PREPARE_SQL(:SQL) <> 1) THEN
      SUSPEND;
END



сколько раз произойдёт CONNECT/DISCONNECT пока будет выполняться сей блок?
Столько сколько закодит разработчик.

А вот такое вообще не понятно взлетит или нет, потому как код FB будет путать свои и чужие dll ( CORE-5123 ). Плюс ещё возможно и потому что не умеет выгружаться полностью ( CORE-5299 )
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TABLE SERVERS (ID INTEGER, LIB VARCHAR(100), CONNSTRING VARCHAR(200))

INSERT INTO SERVERS (ID, LIB, CONNSTRING) (1, 'fb\2.5.6\fbembed.dll', 'db\2.5.6\data.fdb');
INSERT INTO SERVERS (ID, LIB, CONNSTRING) (2, 'fb\3.0.0\fbclient.dll', 'db\3.0.0\data.fdb');
INSERT INTO SERVERS (ID, LIB, CONNSTRING) (3, 'fb\3.0.1\fbclient.dll', 'db\3.0.1\data.fdb');
INSERT INTO SERVERS (ID, LIB, CONNSTRING) (4, 'fb\4.0.0.snapshot\fbclient.dll', 'db\4.0.0.snapshot\data.fdb');

EXECUTE BLOCK RETURNS (ID INTEGER, SERVERID INTEGER) AS
  DECLARE SQL BLOB SUB_TYPE TEXT;
  DECLARE LIB VARCHAR(100);
  DECLARE CONNSTRING VARCHAR(200);
BEGIN
  FOR SELECT ID, SQL FROM SQLS INTO :ID, :SQL DO
    FOR SELECT ID, LIB, CONNSTRING FROM SERVERS INTO :SERVERID, :LIB, :CONNSTRING DO
      IF (PREPARE_SQL2(:LIB, :CONNSTRING, 'SYSDBA', 'masterkey', :SQL) <> 1) THEN
        SUSPEND;
END
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285603
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

да что ты всё к UDF привязываешься. Сделать консольное приложение которое будет подключаться 1 раз, считывать все твои запросы, препарировать их и выкидываю лог неудач дело одного дня максимум.
А с UDF ты ещё долго будешь гадать на кофейной гуще.
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285609
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

а что толку тебе препарировать вызов процедуры без её реального выполнения ?
проверить что совпадает количество параметров - и всё.
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285610
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Вы очень резки сегодня. Давайте всё же подумаем о компромиссах!

Сделаем таки UDF, которая запустит консольное приложение...
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285621
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

я сама доброта. Вот если бы тут появился Dimitry Sibiryakov или МП...
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285638
fb user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисВот если бы тут появился Dimitry Sibiryakov или МП...
Да они бы сразу показали разработчикам FB где у них не правильно. Это вы всё стесняетесь видеть ясно :)
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285643
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисда что ты всё к UDF привязываешьсяУже писал_Vasilisk_Чтобы все это вставить в один скрипт по очистке базы
Симонов ДенисА с UDF ты ещё долго будешь гадать на кофейной гуще.UDF после Backup/Restore отлично заработала. Повторюсь - это была единственная проблема, за все пять лет использования механизма. Проблема решена. Мне было интересно, подскажет ли кто в чем была причина. Вот и все
Ariochа что толку тебе препарировать вызов процедуры без её реального выполнения ?
проверить что совпадает количество параметров - и всё.Вот именно! Проверить количество параметров в процедурах, проверить имена полей в SELECT/UPDATE запросах...
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285717
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fb userДавайте чисто технически, почему нельзя, какой конкретно код в FB накладывает такие ограничения на разработчиков UDF?
Да все можно. Понятно - udf написана чтобы можно было ее вызывать в sql из каких-то других скриптовых языков. Но раз она написана на Дельфи, то зачем нужен вот этот анус - можно же этот кусок кода udf использовать прямо из программы на Дельфи, и не иметь проблем ни с разрядностью udf, ни с будущей совместимостью, ни с какими-то потенциальными багами сервера, и т.д.
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285719
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Чтобы все это вставить в один скрипт по очистке базы
в смысле - не сделать список запросов для исправления в соответствии с новыми метаданными, а тупо этот список грохнуть, что-ли?
Мне казалось, что описываемая проблема имеет только один тип решения - ручное исправление.
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285742
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv_Vasilisk_Чтобы все это вставить в один скрипт по очистке базы
в смысле - не сделать список запросов для исправления в соответствии с новыми метаданными, а тупо этот список грохнуть, что-ли?
Мне казалось, что описываемая проблема имеет только один тип решения - ручное исправление.в смысле есть скрипт, который прогоняется на девелоперской базе перед выкладыванием ее на тестирование. Этот скрипт оччищает таблицы, сбрасывает значения генераторов, заносит дефолтные данные и т.д. В этом же скрипте воткнута проверка таблицы запросов. При обнаружении ошибки скрипт сообщает о ней и останавливается
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285747
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_есть скрипт
А интерпретатор этого скрипта команду SHELL сосем не понимает?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285752
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fb user,

кстати твои ссылки на тикеты в трекере здесь совсем не в тему. У ТС вообще Interbase. Он не имеет ничего общего с плагинной архитектурой тройки, линковкой fbclient и т.д.
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285755
fb user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисУ ТС вообще Interbase.
Да не, ТС бы нас давно поправил.
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285758
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА интерпретатор этого скрипта команду SHELL сосем не понимает?..Это мысль. Есть ibec_Exec и, вроде, он позволяет парсить выхлоп
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285759
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fb userТС бы нас давно поправил.IB. Но в чем поправлять? Не было предложено ни одного решения. Вот Сибиряков натолкнул на мысль
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285760
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fb user,

почитай тот топик

_Vasilisk_Симонов ДенисПочему это обязательно должно делаться в UDF?В этом обсуждении сказано почему
...
Рейтинг: 0 / 0
Зависание Prepare
    #39285762
fb user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_fb userТС бы нас давно поправил.IB. Но в чем поправлять?
Перечитал. Увидел. Кое-кому нужно быть внимательней (не буду показывать на себя пальцем).
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Зависание Prepare
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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