Należy pamiętać, że to, co powiem poniżej, opiera się na obserwacjach i wnioskach dotyczących użytkowania Oracle, a nie na żadnym głębokim zrozumieniu wewnętrznych elementów Oracle. Żadnej z nich nie należy uważać za autorytatywną.
To, co dziewięciostronne powiedział w pierwszym akapicie, jest poprawne. Uważaj jednak na sugerowany test. Nie wszystkie długotrwałe zapytania Oracle są takie same. Wydaje się, że zapytania są oceniane w dwóch fazach, po pierwsze w fazie, która łączy wystarczającą ilość danych, aby wiedzieć, jak zwrócić wiersze we właściwej kolejności, a po drugie w fazie, w której zwracane są wiersze wypełniające luki, których nie obliczono w pierwsza faza. Na podział pracy pomiędzy dwie fazy mają również wpływ ustawienia optymalizatora kosztowego. np. Pierwsze rzędy a wszystkie rzędy.
Teraz, jeśli zapytanie znajduje się w fazie 1, żądanie anulowania wydaje się co najwyżej być w kolejce do zastosowania na końcu fazy 1, co oznacza, że zapytanie nadal działa.
W fazie 2 wiersze są zwracane w pęczkach, a po każdym pęczku polecenie anulowania może zacząć działać, więc zakładając, że sterownik obsługuje to polecenie, żądanie anulowania spowoduje zabicie zapytania.
Specyfikacja polecenia anulowania JDBC wydaje się nie określać, co powinno się stać, jeśli zapytanie nie przestanie działać, a zatem polecenie może czekać na potwierdzenie zabicia lub może przekroczyć limit czasu i powrócić z uruchomionym zapytaniem.