Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.04;
Скачать: CL | DM;

Вниз

Отмена запроса, но как ???   Найти похожие ветки 

 
inic   (2004-06-07 13:58) [0]

Мое почтение!!!
Есть такой документ:
"Interbase, Firebird, Yaffil FAQ"
(http://www.ibase.ru/v6/ib6faq.htm).
И там сказано:
"...
Теперь на второй вопрос - новое в 6.5:
  Возможность снятия долгих запросов (из параллельного
  thread)через IB API
...".
Очень хотелось бы узнать, как это сделать ?
Заранее спасибо.


 
Digitman ©   (2004-06-07 14:35) [1]

создается отдельный генератор, например, MyGen

некий код.поток A кл.приложения перед запуском длит.запроса сбрасывает этот генератор в исх.состояние, например,  = 0

далее этот же код.поток A вызывает на выполнение некий длит.запрос, в котором кроме прочих WHERE-условий отбора записей фигурирует доп.условие GEN_ID(MyGen, 0) = 0

пока значение ген-ра MyGen равно 0, условие выполняется и запрос продолжает исполняться

одним из ключ.условий прекращения выполнения запроса в этом случае будет НЕвыполнение условия GEN_ID(MyGen, 0) = 0, чего можно достичь, например, инкрементом значения генератора

поскольку код.поток А кл.приложения блокирован в этот момент ожиданием результатов выполнения запроса, он не может инкрементировать генератор MyGen с целью обеспечения ложности упомянутого условия

но ничто не мешает кл.приложению создать вспомогательный код.поток В, который создаст отдельный коннект к той же базе и выполнит в контексте этого коннекта запрос, инкрементирующий значение генератора MyGen

при этом как только выполняющийся длит.запрос обнаружит невыполнение условия GEN_ID(MyGen, 0) = 0, он немедленно прекратит исполнение


 
inic   (2004-06-07 15:23) [2]

Была у меня идея отделенно похожая (там даже UDF фигурировали),
но этот способ конечно и лучше, и проще.
Огромное спасибо.

P.S.
Но все таки интересно, что они имеют в виду. Я думаю что-нибудь
типа gds32.dll::gds_query_cancel(...). Кстати, в Yaffil такая отменяющая штука вроде тоже есть.


 
Digitman ©   (2004-06-07 15:25) [3]


> интересно, что они имеют в виду


если подразумевать уровень совместимости IB и его клонов, то именно трюк с генератором и имелся ввиду


 
Alexandr   (2004-06-08 10:11) [4]

там же написано
"новое в IB6.5"
вот только запрос если срубить через IB API таким способом, то это с некоторой отличной от нуля вероятностью может привести в той или иной степени к порче базы данных.



Страницы: 1 вся ветка

Текущий архив: 2004.07.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.136 c
1-1087903052
denary
2004-06-22 15:17
2004.07.04
как записать в массив действительных чисел строки из текстового ф


14-1087429532
olookin
2004-06-17 03:45
2004.07.04
Как все печально


6-1084339864
It
2004-05-12 09:31
2004.07.04
Определение IP-адреса в локальной сети


10-1017716590
Вячеслав Кляйн
2002-04-02 07:03
2004.07.04
Ещё раз про File not found: OrbPas.dcu


1-1087451527
P@vel
2004-06-17 09:52
2004.07.04
Window Handle