I wrote:
> but I notice that some normalization seems to be getting done by
> tsqueryin:
> regression=# select $$( 'sanct' & 'peter' ) <-> ( 'sanct' & 'peter' )$$::tsquery;
> tsquery
> --------------------------------------------------------------------------------
> -------
> 'sanct' <-> 'sanct' & 'peter' <-> 'sanct' & 'sanct' <-> 'peter' & 'peter' <-> '
> peter'
> (1 row)
BTW, it seems like that normalization is wrong. The transformed query
should (and does) match the string "sanct sanct peter sanct sanct peter
peter peter", since each of the <-> pairs has a match somewhere in there.
But I would expect the original query to be specifying that a match occurs
at exactly one place, which of course is unsatisfiable since 'sanct' and
'peter' can't match the same word.
regards, tom lane