Robert Haas wrote:
> Now, let's suppose that the user sets up a sharded table and then
> says: SELECT a, SUM(b), AVG(c) FROM sometab. At this point, what we'd
> like to have happen is that for each child foreign table, we go and
> fetch partially aggregated results. Those children might be running
> any version of PostgreSQL - I was not assuming that we'd insist on
> matching major versions, although of course that could be done - and
> there would probably need to be a minimum version of PostgreSQL
> anyway. They could even be running some other database. As long as
> they can spit out partial aggregates in a format that we can
> understand, we can deserialize those aggregates and run combine
> functions on them. But if the remote side is, say, MariaDB, it's
> probably much easier to get it to spit out something that looks like a
> PostgreSQL array than it is to make it spit out some bytea blob that's
> in an entirely PostgreSQL-specific format.
Basing parts of the Postgres sharding mechanism on FDWs sounds
acceptable. Trying to design things so that *any* FDW can be part of a
shard, so that you have some shards in Postgres and other shards in
MariaDB, seems ludicrous to me. Down that path lies madness.
In fact, trying to ensure cross-major-version compatibility already
sounds like asking for too much. Requiring matching major versions
sounds a perfectly acceptable restricting to me.
--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services