Re: walprotocol.h vs frontends
От | Magnus Hagander |
---|---|
Тема | Re: walprotocol.h vs frontends |
Дата | |
Msg-id | CABUevEycTNCYhe=P=v_r2GoWRMydO=ZPKDcuL=vMHVWVBb8Qaw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: walprotocol.h vs frontends (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: walprotocol.h vs frontends
|
Список | pgsql-hackers |
On Mon, Aug 15, 2011 at 16:20, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Magnus Hagander <magnus@hagander.net> writes: >> I'm trying to make my streaming log receiver work properly with 9.1, >> and have come across a couple of things. The first one that's causing >> trouble is that the definition of the protocol is currently in >> walprotocol.h, which is not include:able in a frontend application. >> AFAICT, this is because it includes utils/timestamp.h, which doesn't >> work. AFAICT, this means that anybody other than our own backend who >> wants to talk our replication protocol has to copy the specific struct >> defines they want in their own code. This seems like a really bad >> idea. (In my case, it's the StandbyReplyMessage that I need, so I can >> make my client not get killed by the default settings for timeout) > >> The basic reason for this is that we're putting TimestampTz fields in >> the protocol. This also means that the protocol actually changes >> definition depending on if the server is compiled with integer or >> float timestamps. While the replication itself breaks if these are >> different, this seems like a bad thing to expose in the protocol. It >> also makes life a lot harder on third party tools. > > I don't really see why it matters, given that the data to be shipped is > also dependent on the timestamp format? As an example, the stream receiver program needs to be able to construct the status message and send back - thus needs to be able to construct a TimestampTz. It never needs to look into the actual WAL data - it just writes it to a file considering it to be a stream of pure binary data. > However, for a narrow fix, I could see moving the data type definition > to someplace with fewer dependencies. Perhaps split it into a separate > file timestamp_type.h, or something like that. Yes, that seems to fix the problem of timestamptz. See the attached patch - seems ok? I also ran into a similar problem with some WAL macro definitions that are in xlog_internal.h. I've moved them to xlogdefs.h in the attached xlog.diff file. Does that seem ok as well, or should I move them somewhere else? (I don't need all those macros, but I moved the complete block of macros wherever I needed one of them, because otherwise it would be completely impossible to track). This is just a simple move of the definitions, zero new logic added and zero removed. -- Magnus Hagander Me: http://www.hagander.net/ Work: http://www.redpill-linpro.com/
Вложения
В списке pgsql-hackers по дате отправления: