Charlie Clark <charlie@xxxxxxxxxxxxxx> writes: > psytec=# show lc_collate; > lc_collate > ------------- > de_DE.UTF-8 > (1 row) > psytec=# show server_encoding; > server_encoding > ----------------- > LATIN1 > (1 row) There's your problem right there. The string comparison routines are built on strcoll(), which is going to expect UTF8-encoded data because of the LC_COLLATE setting. If there are any high-bit-set LATIN1 characters in the database, they will most likely look like invalid encoding to strcoll(), and on most platforms that causes it to behave very oddly. You need to keep lc_collate (and lc_ctype) in sync with server_encoding. regards, tom lane