Yes,it is locale problem.
I do some more testing,and find that in my DB locale which is zh_CN.UTF-8,the indexes on FreeBSD slave can works if the indexed data is lower case ascii,it can't find data contain upper case.
Explicit set the column collate to "C" can solve the problem.
I will recreate all the index with collate "C".
Thanks very much!
Jov
blog: http:amutu.com/blog
2014-08-20 23:36 GMT+08:00 Tom Lane <tgl@xxxxxxxxxxxxx>:
Adrian Klaver <adrian.klaver@xxxxxxxxxxx> writes:
> On 08/20/2014 07:53 AM, Jov wrote:
>> I setup a PG 9.3.5 master on CentOS 6 x86_64,and 2 screaming replicaton
>> slaves,one on CentOS6 x86_64,the other on FreeBSD 10 amd64.
>> The replication work fine for a week,But today I find a problem on sql
>> running on FreeBSD:simple sql use index do not return result.If I
>> disable the index ,use seqscan,then I can get correct result.
> I would say FreeBSD is not similar enough to Linux(CentOS) to make thisThe most likely theory as to the source of the problem is that the locale
> work reliably with binary replication.
names used by the CentOS machine are not recognized by the FreeBSD OS,
and/or imply slightly different sort orderings. So a text index that's
correctly sorted according to the CentOS machine is not correctly sorted
according to FreeBSD, leading to search failures.
You could probably make this case work reliably if you used C locale on
both systems; the behavior of that is pretty portable.
regards, tom lane
--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general