Доброе время суток!
Windows 10 x64
RAD Studio XE8
ODAC 9.6.20
Oracle 11.2.0.4
TSmartQuery зависает со свойством NonBlocking=true до окончания выполнения SQL запроса в методе Open(). Происходит это по той причине, что он пытается выполнить дополнительные запросы в тот момент, когда первый не завершил выполнение. Так как сессия в Oracle у нас одна, происходит блокировка. Можно легко воспроизвести, если сделать выборку в которой будет присутствовать процедура с бесконечным циклом. Если выполнить тоже самое в Execute(), ничего не блокируется, и мы можем отменить запрос. В случае же с Open() поток блокируется. Пример во вложении.
ODAC 9.6.20 Зависание TSmartQuery в NonBlocking режиме
ODAC 9.6.20 Зависание TSmartQuery в NonBlocking режиме
- Вложения
-
- ODAC Hang test.rar
- (5.32 КБ) 249 скачиваний
Re: ODAC 9.6.20 Зависание TSmartQuery в NonBlocking режиме
Мы исследуем поведение TSmartQuery в NonBlocking режиме и сообщим Вам о результатах в ближайшее время
Re: ODAC 9.6.20 Зависание TSmartQuery в NonBlocking режиме
Мы исправили поведение TSmartQuery в NonBlocking режиме. Исправление будет включено в следующий билд ODAC, который мы планируем выпустить на следующей неделе