По-нататъшното ми разследване на проблема разкри, че проблемът е свързан с чист Postgres SQL, разработих чиста plpgsql версия, която е порт едно към едно на кода по-горе. Преформулиран въпрос за чист plpgsql е тук:Защо този код се проваля в PostgreSQL и как да го коригирам (заобиколно)? Дали това е дефект на Postgres SQL двигателя? .
Така че - проблемът не е свързан с Java/JDBC.
Освен това успях да опростя тестовия код - сега той използва една таблица. Опростеният проблем беше публикуван в пощенския списък на pgsql-bugs:http:// archives.postgresql.org/pgsql-bugs/2010-01/msg00182.php . Потвърдено е, че се среща и на други машини (не само на моята).
Ето заобиколно решение:променете сортирането на базата данни от полски на стандартен „C“. При сортирането „C“ няма грешка. Но без полско съпоставяне полските думи са сортирани неправилно (по отношение на полските национални символи), така че проблемът трябва да бъде коригиран в самия Postgres.