Gary Stainburn <gary.stainburn@ringways.co.uk> 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