Я только что узнал, что драйвер Postgres Java JDBC на самом деле не поддерживает режимы SCROLL_SENSITIVE
/SCROLL_INSENSITIVE
с использованием потоковой передачи, а вместо этого имитирует эти режимы, загружая сразу полный набор результатов в память клиента. Для запросов с большим набором результатов это может привести к неожиданно большому использованию памяти, особенно в таком языке, как Java, с небольшой поддержкой неупакованных значений. При использовании режима FORWARD_ONLY
драйвер передает результаты, как и ожидалось.
(детали; Насколько я понимаю, это ограничение проводной протокол Postgres, хотя теоретически драйвер мог бы обойти это, преобразовывая запросы в явные курсоры.)
Чтобы предотвратить такие сюрпризы в будущем, мне интересно, насколько широко распространено такое поведение и какие другие распространенные драйверы JDBC не реализуют реальную прокрутку там, где этого можно было бы ожидать, поэтому я знаю, что нужно следить за этим, если мне случится использовать один из эти водители. Какие другие распространенные драйверы JDBC не поддерживают все режимы прокрутки в потоковом режиме?