Penyelidikan lebih lanjut saya tentang masalah ini mengungkapkan bahwa masalahnya terkait dengan Postgres SQL murni, saya mengembangkan versi plpgsql murni yang merupakan port satu-ke-satu dari kode di atas. Pertanyaan ulang untuk plpgsql murni ada di sini:Mengapa kode ini gagal di PostgreSQL dan bagaimana cara memperbaikinya (work-around)? Apakah ini kelemahan mesin SQL Postgres? .
Jadi - ini bukan masalah terkait Java/JDBC.
Selanjutnya, saya telah berhasil menyederhanakan kode pengujian - sekarang menggunakan satu tabel. Masalah yang disederhanakan telah diposting di milis pgsql-bugs:http:// archives.postgresql.org/pgsql-bugs/2010-01/msg00182.php . Ini dipastikan terjadi pada mesin lain (bukan hanya milik saya).
Berikut ini solusinya:ubah susunan basis data dari semir ke standar 'C'. Dengan susunan 'C' tidak ada kesalahan. Tetapi tanpa polesan collation, kata-kata poles diurutkan secara tidak benar (sehubungan dengan karakter nasional poles), jadi masalahnya harus diperbaiki di Postgres itu sendiri.