Min videre undersøgelse af problemet afslørede, at problemet er relateret til ren Postgres SQL, jeg udviklede ren plpgsql version, som er en-til-en port af koden ovenfor. Omformuleret spørgsmål til ren plpgsql er her:Hvorfor fejler denne kode i PostgreSQL, og hvordan rettes den (omgå)? Er det Postgres SQL-motorfejl? .
Så - det er ikke Java/JDBC-relateret problem.
Desuden har jeg formået at forenkle testkoden - nu bruger den én tabel. Forenklet problem blev opslået på pgsql-bugs mailingliste:http:// archives.postgresql.org/pgsql-bugs/2010-01/msg00182.php . Det er bekræftet, at det forekommer på andre maskiner (ikke kun min).
Her er en løsning:skift databasesortering fra polsk til standard 'C'. Med 'C'-sortering er der ingen fejl. Men uden polsk sortering er polske ord sorteret forkert (med hensyn til polske nationale tegn), så problemet bør løses i selve Postgres.