Moje dalsze badanie problemu ujawniło, że problem jest związany z czystym Postgres SQL, opracowałem czystą wersję plpgsql, która jest portem jeden do jednego powyższego kodu. Zmienione pytanie dotyczące czystego plpgsql jest tutaj:Dlaczego ten kod nie działa w PostgreSQL i jak to naprawić (obejście)? Czy to usterka silnika Postgres SQL? .
Więc - nie jest to problem związany z Java/JDBC.
Ponadto udało mi się uprościć kod testowy - teraz używa jednej tabeli. Uproszczony problem został opublikowany na liście dyskusyjnej pgsql-bugs:http:// archives.postgresql.org/pgsql-bugs/2010-01/msg00182.php . Potwierdzono, że występuje na innych komputerach (nie tylko w moim).
Oto obejście:zmień sortowanie bazy danych z polskiego na standardowe 'C'. Przy sortowaniu 'C' nie ma błędu. Ale bez sortowania polskiego polskie słowa są niepoprawnie sortowane (w odniesieniu do polskich znaków narodowych), więc problem powinien zostać rozwiązany w samym Postgresie.