Mi investigación adicional del problema reveló que el problema está relacionado con Postgres SQL puro, desarrollé una versión plpgsql pura que es un puerto uno a uno del código anterior. La pregunta reformulada para plpgsql puro está aquí:¿Por qué falla este código en PostgreSQL y cómo solucionarlo (solución alternativa)? ¿Es una falla del motor SQL de Postgres? .
Entonces, no es un problema relacionado con Java/JDBC.
Además, logré simplificar el código de prueba; ahora usa una tabla. El problema simplificado se publicó en la lista de correo de pgsql-bugs:http:// archivos.postgresql.org/pgsql-bugs/2010-01/msg00182.php . Está confirmado que ocurre en otras máquinas (no solo en la mía).
Aquí hay una solución alternativa:cambie la intercalación de la base de datos de polaco a 'C' estándar. Con la intercalación 'C' no hay error. Pero sin la colación polaca, las palabras polacas se ordenan incorrectamente (con respecto a los caracteres nacionales polacos), por lo que el problema debería solucionarse en Postgres.