On Tue, 4 Jun 2019 at 16:46, Andres Freund <and...@anarazel.de> wrote:

> Hi,
>
> On 2019-06-04 16:39:32 -0400, Dave Cramer wrote:
> > On Tue, 4 Jun 2019 at 16:30, Andres Freund <
> andres.fre...@enterprisedb.com>
> > wrote:
> > > > There's also no reason that I am aware that binary outputs can't be
> > > > supported.
> > >
> > > Well, it *does* increase version dependencies, and does make
> replication
> > > more complicated, because type oids etc cannot be relied to be the same
> > > on source and target side.
> > >
> > I was about to agree with this but if the type oids change from source
> > to target you still can't decode the text version properly. Unless I
> > mis-understand something here ?
>
> The text format doesn't care about oids. I don't see how it'd be a
> problem?  Note that some people *intentionally* use different types from
> source to target system when logically replicating. So you can't rely on
> the target table's types under any circumstance.
>
> I think you really have to use the textual type which we already write
> out (cf logicalrep_write_typ()) to call the binary input functions. And
> you can send only data as binary that's from builtin types - otherwise
> there's no guarantee at all that the target system has something
> compatible. And even if you just assumed that all extensions etc are
> present, you can't transport arrays / composite types in binary: For
> hard to discern reasons we a) embed type oids in them b) verify them. b)
> won't ever work for non-builtin types, because oids are assigned
> dynamically.
>

I figured arrays and UDT's would be problematic.

>
>
> > > I think if we were to add binary output - and I think we should - we
> > > ought to only accept a patch if it's also used in core.
> > >
> >
> > Certainly; as not doing so would make my work completely irrelevant for
> my
> > purpose.
>
> What I mean is that the builtin logical replication would have to use
> this on the receiving side too.
>
> Got it, thanks for validating that the idea isn't nuts. Now I *have* to
produce a POC.

Thanks,
Dave

>
>

Reply via email to