On Thu, May 18, 2017 at 12:37 AM, Jeff Janes <jeff.ja...@gmail.com> wrote:
> It is shipping collation-sensitive aggregates between servers which have
> different collations.
> commit 7012b132d07c2b4ea15b0b3cb1ea9f3278801d98
> Author: Robert Haas <rh...@postgresql.org>
> Date: Fri Oct 21 09:54:29 2016 -0400
> postgres_fdw: Push down aggregates to remote servers.
> I've attached a reproducing case. Before this commit, the two final queries
> give the same answer, and after they give different answers. Maybe this
> isn't considered a bug? Is it just one of the "surprising semantic
> anomalies may arise when types or collations do not match"? It should be
> able to know what collation the local definition of the foreign table has;
> couldn't it pass that collation over the foreign side?
> I don't really care, I was just using min as a way to get an arbitrary value
> in the cases where there are more than one, but I found the change
The COLLATE clause assigns a collation to the column (which must be of
a collatable data type). If not specified, the column data type's
default collation is used.
In your test you have not specified the collation for column x in
remote1, so it's considered as DEFAULT collation on the local server.
>From the POV of the local server, the collation of the column on the
foreign server is same as the default collation locally, so it doesn't
add any collation clause to the query. May be it could, but then the
problem is that the exact default collation on local server may not be
available on the foreign server. What foreign server has might be a
collation whose behaviour is same as local server's default collation
behaviour, as far as that column's data type is concerned.
But this is not something specific to aggregation, WHERE, ORDER BY
clauses pushed down to the foreign server have the same behaviour.
The Postgres Database Company
Sent via pgsql-hackers mailing list (firstname.lastname@example.org)
To make changes to your subscription: