Краткое описание :
Добавление булевского фильтра нарушает выборкуОписание :
MS SQLЧто измененно :
MSSQL
Навигация
----- ПРОЯВЛЕНИЕ ПРОБЛЕМЫ -----
Если во время вычисления булевского фильтра меняют структуру выборки (добавляют дочерние таблицы), то текущая навигация обрывается с результатом "больше нет данных".
Как измененно :
1. Добавлена защита процесса навигации от принудительного закрытия курсоров во время вычисления булевского фильтра.
2. Добавлена защита процесса навигации от подцепки дочерних таблиц и от сброса кеша во время вычисления булевского фильтра.
3. Добавлена защита процесса навигации от навигации по тому же узлу во время вычисления булевского фильтра при условии,
что в итоге позиция остаётся прежней по выходу из булевского фильтра (на эту защиту не даётся гарантия)
4. При включённом параметре Debug.DebugMessages выдаётся предупреждение, если сработала защита от случаев 2 и 3
Случаи 2 и 3 всё равно считаются аварийными, а вызвавший их прикладной код плохим.
Желательно, чтобы вообще не было обращений к БД из дополнительных фильтров,
для этого все необходимые для них таблицы надо затащить в основную выборку.