Aby użyć kursora do pobierania danych, oprócz ustawienia rozmiaru pobierania, musisz ustawić typ ResultSet na ResultSet.TYPE_FORWARD_ONLY (domyślnie) i autocommit na false. Jest to wspomniane w dokumencie, do którego prowadzisz link, ale nie wspomniałeś wyraźnie, że wykonałeś te czynności.
Uważaj na schemat partycjonowania PostgreSQL. Robi naprawdę okropne rzeczy z optymalizatorem i może powodować ogromne problemy z wydajnością tam, gdzie nie powinno (w zależności od specyfiki danych). W każdym razie, czy twój rząd ma tylko 1,8 miliona rzędów? Nie ma powodu, dla którego musiałby być on partycjonowany na podstawie samego rozmiaru, biorąc pod uwagę, że jest odpowiednio indeksowany.