Gary Stainburn <gary.stainburn@xxxxxxxxxxxxxx> writes: > goole=# show lc_ctype; > lc_ctype > ------------- > en_US.UTF-8 > (1 row) > goole=# show server_encoding; > server_encoding > ----------------- > UNICODE > (1 row) Hm. Well, the error message implies that there's some data in the database that we think is valid but mbstowcs() doesn't agree. If this is a pre-8.1 release then you could be getting burnt by the bugs we previously had with more-than-two-byte UTF8 sequences. > This has arisen from reading back into an existing server config a pg_dump > that was taken from the same server. Do you see the error if you just EXPLAIN the problem query, without executing it? If so, the failure is probably happening because a bogus data value happens to show up in the pg_stats statistics for one of the columns used in the query. Since these entries come from a random sample, re-ANALYZE-ing the table will probably make the EXPLAIN error come and go. Which leaves you needing to grovel through the whole table to find the bad data :-( regards, tom lane