Re: Binary support for pgoutput plugin - Mailing list pgsql-hackers

From Chapman Flack
Subject Re: Binary support for pgoutput plugin
Date
Msg-id 5CFB0C5C.7030700@anastigmatix.net
Whole thread Raw
In response to Re: Binary support for pgoutput plugin  (Andres Freund <andres@anarazel.de>)
Responses Re: Binary support for pgoutput plugin
List pgsql-hackers
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



pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: Binary support for pgoutput plugin
Next
From: Andres Freund
Date:
Subject: Re: Binary support for pgoutput plugin