On 06/07/19 21:01, Andres Freund wrote: > On 2019-06-07 20:52:38 -0400, Chapman Flack wrote: >> It seems they had ended up designing a whole 'nother "protocol level" >> involving queries wrapping their results as JSON and an app layer that >> unwraps again, after trying a simpler first approach that was foiled by the >> inability to see into arrays and anonymous record types in the 'describe' >> response. > > I suspect quite a few people would have to have left the projectbefore > this would happen.
I'm not sure I understand what you're getting at. The "whole 'nother protocol" was something they actually implemented, at the application level, by rewriting their queries to produce JSON and their client to unwrap it. It wasn't proposed to go into postgres ... but it was a workaround they were forced into by the current protocol's inability to tell them what they were getting. > That'd be a *lot* of additional complexity, and pretty much prohibitive > from a performance POV. We'd have to not continue decoding on the server > side *all* the time to give the client a chance to inquire additional > information. Does anything travel in the client->server direction during replication? I thought I saw CopyBoth mentioned. Is there a select()/poll() being done so those messages can be received? It does seem that the replication protocol would be the tougher problem. For the regular extended-query protocol, it seems like allowing an extra Describe or two before Execute might not be awfully hard. Regards, -Chap