Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.029 c
8-1081152480
SDV
2004-04-05 12:08
2004.07.04
Помещение изображения в TMemoryStream


3-1086586603
Denis_Visma
2004-06-07 09:36
2004.07.04
FastReport: отчет зеброй


3-1086782943
Dark Elf
2004-06-09 16:09
2004.07.04
Получение значения ячейки DBGrid


10-1017300695
AnatolyG
2002-03-28 10:31
2004.07.04
Вопрос по поводу использования персистентных CORBA и EJB объектов


9-1074853723
Дмитрий Терёхин
2004-01-23 13:28
2004.07.04
Участие в разработке игр





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский