Roadmap for FE/BE protocol redesign

Started by Tom Laneabout 23 years ago179 messageshackers
Jump to latest
#1Tom Lane
tgl@sss.pgh.pa.us

This is an attempt to lay out a road map for updating the frontend/backend
protocol in 7.4. I don't at this point want to get into details on any
one of the TODO items, just get consensus that this is the set of tasks
to be tackled. Are there any areas that I've missed (that require
protocol changes)?

* Extend ERROR and NOTICE messages to carry multiple fields, including
(as appropriate) a spec-compliant error code, a textual position in the
original query string, information about the source-code location where
the error was reported, etc.

* Consider extending NOTIFY messages to allow a parameter to be carried.

* Fix COPY protocol to allow graceful error recovery (more graceful than
aborting the connection, at least) and to support COPY BINARY to/from
frontend.

* Redesign fastpath function call protocol to eliminate the problems cited
in the source code comments (src/backend/tcop/fastpath.c), and to
eliminate the security hole of accepting unchecked internal representation
from frontend. Also consider a fastpath for execution of PREPAREd queries.

* Re-institute type-specific send/receive conversion routines to allow
some modest amount of architecture independence for binary data. This'd
provide a place to check for bogus internal representation during fastpath
input and COPY BINARY IN, too, thus alleviating security concerns.

* Get rid of hardwired field sizes in StartupPacket --- use
variable-length null-terminated strings. Fixes problem with usernames
being limited to 32 characters, gets around unreasonable limitation on
PGOPTIONS length. Also can remove unused fields.

* Backend should pass its version number, database encoding, default
client encoding, and possibly other data (any ideas?) to frontend during
startup, to avoid need for explicit queries to get this info. We could
also consider eliminating SET commands sent by libpq in favor of adding
variable settings to startup packet's PGOPTIONS field. Ideally we could
get back to the point where a standard connection startup takes only one
packet in each direction.

* Backend's ReadyForQuery message (Z message) should carry an indication
of current transaction status (idle/in transaction/in aborted transaction)
so that frontend need not guess at state. Perhaps also indicate
autocommit status. (Is there anything else that frontends would Really
Like To Know?)

* XML support? If we do anything, I'd want some extensible solution to
allowing multiple query-result output formats from the backend, not an
XML-specific hack. For one thing, that would allow the actual appearance
of any XML support to happen later.

One of the $64 questions that has to be answered is how much work we're
willing to expend on backwards compatibility. The path of least
resistance would be to handle it the same way we've done protocol
revisions in the past: the backend will be able to handle both old and new
protocols (so it can talk to old clients) but libpq would be revised to
speak only the new protocol (so new/recompiled clients couldn't talk to
old backends). We've gotten away with this approach in the past, but the
last time was release 6.4. I fully expect to hear more complaints now.

One way to tamp down expectations of client backwards compatibility
would be to call the release 8.0 instead of 7.4 ;-)

Comments?

regards, tom lane

#2Justin Clift
justin@postgresql.org
In reply to: Tom Lane (#1)
Re: Roadmap for FE/BE protocol redesign

Tom Lane wrote:
<snip>

One way to tamp down expectations of client backwards compatibility
would be to call the release 8.0 instead of 7.4 ;-)

Comments?

Actually, I've been thinking about the numbering of the next PostgreSQL
version for a few days now.

The scenario that's appealing to me the most is this for the next release:

PostgreSQL 8.0
**************

+ Includes PITR and the Win32 port

+ Not sure where Satoshi is up to with his 2 phase commit proposal, but
that might make sense to incorporate into a wire protocol revision.
From memory he received funding to work on it, so it might be coming
along nicely.

+ Other things optional of course.

Personally, I'd rather we go for PostgreSQL 8.0, waiting a while extra
for PITR and Win32 if needed, and also properly co-ordinate all of the
release process information (website updates, package builds, Announce
to the mailing lists and news sources).

Regards and best wishes,

Justin Clift

--
"My grandfather once told me that there are two kinds of people: those
who work and those who take the credit. He told me to try to be in the
first group; there was less competition there."
- Indira Gandhi

#3Rod Taylor
rbt@rbt.ca
In reply to: Justin Clift (#2)
Re: Roadmap for FE/BE protocol redesign

+ Not sure where Satoshi is up to with his 2 phase commit proposal, but
that might make sense to incorporate into a wire protocol revision.
From memory he received funding to work on it, so it might be coming
along nicely.

One should note that his protocol changes had absolutely nothing to do
with 2 phase commits -- but were used as a marker to direct replication.

We may want to consider leaving some space for a server / server style
communication (Cluster ID, etc.)

--
Rod Taylor <rbt@rbt.ca>

PGP Key: http://www.rbt.ca/rbtpub.asc

#4Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#1)
Re: Roadmap for FE/BE protocol redesign

Tom Lane wrote:

* Backend should pass its version number, database encoding, default
client encoding, and possibly other data (any ideas?) to frontend during
startup, to avoid need for explicit queries to get this info. We could
also consider eliminating SET commands sent by libpq in favor of adding
variable settings to startup packet's PGOPTIONS field. Ideally we could
get back to the point where a standard connection startup takes only one
packet in each direction.

Should we pass this in a way where we can add stuff later, like passing
it as a simple NULL-terminated string that can get split up on the
client end.

One of the $64 questions that has to be answered is how much work we're
willing to expend on backwards compatibility. The path of least
resistance would be to handle it the same way we've done protocol
revisions in the past: the backend will be able to handle both old and new
protocols (so it can talk to old clients) but libpq would be revised to
speak only the new protocol (so new/recompiled clients couldn't talk to
old backends). We've gotten away with this approach in the past, but the
last time was release 6.4. I fully expect to hear more complaints now.

I think such compatibility is sufficient. We can mention in the
releases notes that they should upgrade there servers before their
clients.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Justin Clift (#2)
Re: Roadmap for FE/BE protocol redesign

Justin Clift <justin@postgresql.org> writes:

The scenario that's appealing to me the most is this for the next release:
PostgreSQL 8.0
+ Includes PITR and the Win32 port

If the folks doing those things can get done in time, great. I'm even
willing to push out the release schedule (now, not later) to make it
more likely they can get done. What I'm not willing to do is define
the release in terms of "it happens when these things are done". We
learned the folly of that approach in 7.1 and 7.2. Setting a target
date and sticking to it works *much* better.

+ Not sure where Satoshi is up to with his 2 phase commit proposal, but
that might make sense to incorporate into a wire protocol revision.

I can't see any need for protocol-level support for such a thing.
Why wouldn't it just be some more SQL commands?

(Not that I believe in 2PC as a real-world solution anyway, but that's
a different argument...)

regards, tom lane

#6Rod Taylor
rbt@rbt.ca
In reply to: Tom Lane (#1)
Re: Roadmap for FE/BE protocol redesign

* Backend's ReadyForQuery message (Z message) should carry an indication
of current transaction status (idle/in transaction/in aborted transaction)
so that frontend need not guess at state. Perhaps also indicate
autocommit status. (Is there anything else that frontends would Really
Like To Know?)

Could it include transaction depth with the assumption nested
transactions will arrive at some point?

* XML support? If we do anything, I'd want some extensible solution to
allowing multiple query-result output formats from the backend, not an
XML-specific hack. For one thing, that would allow the actual appearance
of any XML support to happen later.

One of the $64 questions that has to be answered is how much work we're
willing to expend on backwards compatibility. The path of least
resistance would be to handle it the same way we've done protocol
revisions in the past: the backend will be able to handle both old and new
protocols (so it can talk to old clients) but libpq would be revised to
speak only the new protocol (so new/recompiled clients couldn't talk to
old backends). We've gotten away with this approach in the past, but the
last time was release 6.4. I fully expect to hear more complaints now.

I wouldn't worry about backward compatibility complaints too much BUT
I'd be tempted to make a startup packet that will allow libpq to revert
back to old protocols easily enough for the future so that we can do
incremental changes to the protocol.

--
Rod Taylor <rbt@rbt.ca>

PGP Key: http://www.rbt.ca/rbtpub.asc

#7Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#4)
Re: Roadmap for FE/BE protocol redesign

Bruce Momjian <pgman@candle.pha.pa.us> writes:

Tom Lane wrote:

* Backend should pass its version number, database encoding, default
client encoding, and possibly other data (any ideas?) to frontend during
startup, to avoid need for explicit queries to get this info.

Should we pass this in a way where we can add stuff later, like passing
it as a simple NULL-terminated string that can get split up on the
client end.

Yeah, I was envisioning something with multiple labeled fields so that
more stuff can be added later without a protocol change (likewise for
StartupPacket and ErrorMessage). But again, I don't want this thread to
get into any details about specific tasks --- let's try to get a view of
the forest before we start hewing down individual trees...

We've gotten away with this approach in the past, but the
last time was release 6.4. I fully expect to hear more complaints now.

I think such compatibility is sufficient. We can mention in the
releases notes that they should upgrade there servers before their
clients.

I'd be really happy if we can make that stick. There's enough work to
be done here without trying to develop a multiprotocol version of
libpq.

It would be good to hear some words from the JDBC and ODBC developers
about what sort of plans they'd have for updating those interfaces.

regards, tom lane

#8Robert Treat
xzilla@users.sourceforge.net
In reply to: Justin Clift (#2)
Re: 7.4 vs 8.0 WAS Roadmap for FE/BE protocol redesign

On Mon, 2003-03-10 at 14:05, Justin Clift wrote:

Tom Lane wrote:
<snip>

One way to tamp down expectations of client backwards compatibility
would be to call the release 8.0 instead of 7.4 ;-)

Comments?

Actually, I've been thinking about the numbering of the next PostgreSQL
version for a few days now.

The scenario that's appealing to me the most is this for the next release:

PostgreSQL 8.0
**************

+ Includes PITR and the Win32 port

+ Not sure where Satoshi is up to with his 2 phase commit proposal, but
that might make sense to incorporate into a wire protocol revision.
From memory he received funding to work on it, so it might be coming
along nicely.

+ Other things optional of course.

Personally, I'd rather we go for PostgreSQL 8.0, waiting a while extra
for PITR and Win32 if needed, and also properly co-ordinate all of the
release process information (website updates, package builds, Announce
to the mailing lists and news sources).

I don't think PITR or Win32 (or even replication) warrant an 8.0, since
none of those should effect client/server interaction and/or backward
compatibility. (Or at least not as much as schema support did, which
required most "adminy" apps to be worked over)

A protocol change however, would warrant a version number bump IMHO. I
would guess that by the time all of the protocol changes could be
completed, we'd have win32 or pitr, so it will hopefully be moot.

Robert Treat

#9Tom Lane
tgl@sss.pgh.pa.us
In reply to: Rod Taylor (#6)
Re: Roadmap for FE/BE protocol redesign

Rod Taylor <rbt@rbt.ca> writes:

I'd be tempted to make a startup packet that will allow libpq to revert
back to old protocols easily enough for the future so that we can do=20
incremental changes to the protocol.

We already have that: you send a startup packet with a version less than
the latest, and the backend speaks that version to you.

One thing I want to do though is relax the protocol-level constraints
on certain message contents: for example, if ErrorMessage becomes a
collection of labeled fields, it should be possible to add new field
types without calling it a protocol revision. The protocol need only
specify "ignore any fields whose label you do not recognize".

regards, tom lane

#10Rod Taylor
rbt@rbt.ca
In reply to: Tom Lane (#9)
Re: Roadmap for FE/BE protocol redesign

On Mon, 2003-03-10 at 14:30, Tom Lane wrote:

Rod Taylor <rbt@rbt.ca> writes:

I'd be tempted to make a startup packet that will allow libpq to revert
back to old protocols easily enough for the future so that we can do=20
incremental changes to the protocol.

We already have that: you send a startup packet with a version less than
the latest, and the backend speaks that version to you.

Yes, but that requires you know the backend is less than the latest.

If you send version A, and the backend responds don't know A, but I know
A - 2, then libpq may want to try speaking A - 2.

types without calling it a protocol revision. The protocol need only
specify "ignore any fields whose label you do not recognize".

This is probably just as good, if it's done for both sides.

--
Rod Taylor <rbt@rbt.ca>

PGP Key: http://www.rbt.ca/rbtpub.asc

#11Merlin Moncure
merlin.moncure@rcsonline.com
In reply to: Rod Taylor (#10)
Re: Roadmap for FE/BE protocol redesign

Justin Clift wrote:

PostgreSQL 8.0
**************

+ Includes PITR and the Win32 port

*snip*

I feel like the upcoming 7.4 is the most important release since the
introduction of toast, maybe even since the introduction of the sql
language. I wholeheartedly agree with your proposition.

Merlin

#12Tom Lane
tgl@sss.pgh.pa.us
In reply to: Rod Taylor (#10)
Re: Roadmap for FE/BE protocol redesign

Rod Taylor <rbt@rbt.ca> writes:

We already have that: you send a startup packet with a version less than
the latest, and the backend speaks that version to you.

Yes, but that requires you know the backend is less than the latest.

As opposed to knowing what? You send the version number you wish to speak;
either the backend can handle it, or not.

regards, tom lane

#13Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#12)
Re: [INTERFACES] Roadmap for FE/BE protocol redesign

* Backend should pass its version number, database encoding,
default client encoding, and possibly other data (any ideas?) to
frontend during startup, to avoid need for explicit queries to get
this info. We could also consider eliminating SET commands sent by
libpq in favor of adding variable settings to startup packet's
PGOPTIONS field. Ideally we could get back to the point where a
standard connection startup takes only one packet in each
direction.

How about a bitmap field of "additional features" supported by
client/backend that can be negotiated? (Doesn't have to be bitmap, of
course, but the idea..) That way the server (or client - doesn't matter
who goes first, I guess) could say "I support X and Y, but not Z and Q".
If the client supports both X and Y, both are enabled. If it supports
only X, then only X is enabled.

X and Y? Well, the first thing that comes to mind is SSL support. I'm
not sure if it's still that way, but at least it used to be a pretty
ugly kludge there with the connection being dropped and re-connected in
some cases. I also seem to recall there was some talk about on-wire
compression support - that would also be ideal for something like this.
I'm sure there can be more...

It should be easy to make it version-independent - just make both client
and server reject any "protocol features" that are unknown.

These are features that can be enabled/disabled in a backend/client of
the same version. It cannot (at least not easily) be handled with
protocol versioning, since you can have for example 7.4 with or without
SSL.

//Magnus

#14Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#13)
Re: [INTERFACES] Roadmap for FE/BE protocol redesign

"Magnus Hagander" <mha@sollentuna.net> writes:

X and Y? Well, the first thing that comes to mind is SSL support. I'm
not sure if it's still that way, but at least it used to be a pretty
ugly kludge there with the connection being dropped and re-connected in
some cases.

SSL support is a bad example, since it would have to be negotiated long
before any more general-purpose negotiation could occur. (You do want
the connection authentication exchange to happen under cover of SSL, no?)

ISTM most of the other features you might want to turn on and off can be
handled as SET commands: the client tries to SET a variable, the backend
either accepts it or returns an error. No need for special protocol
support if you do it that way. Can you point to any examples that have
to have a special protocol feature instead?

regards, tom lane

#15Ashley Cambrell
ash@freaky-namuh.com
In reply to: Tom Lane (#1)
Re: Roadmap for FE/BE protocol redesign

Tom Lane wrote:

This is an attempt to lay out a road map for updating the frontend/backend
protocol in 7.4. I don't at this point want to get into details on any
one of the TODO items, just get consensus that this is the set of tasks
to be tackled. Are there any areas that I've missed (that require
protocol changes)?

What about binding variables ala oracle's ociparse -> ocibindbyname ->
ociexecute -> ocifetch ? I know you can do most of it via SQL
(PREPARE/EXECUTE) but you can't do 'RETURN x INTO :x' as it stands.
This would also get around the problem of getting values from newly
inserted rows (eg PKs) without resorting to OIDs. Not entirely a FE/BE
issue... but worth considering in any redesign.

Ashley Cambrell

#16Bruce Badger
bruce_badger@badgerse.com
In reply to: Tom Lane (#12)
Re: [INTERFACES] Roadmap for FE/BE protocol redesign

On Tue, 2003-03-11 at 06:52, Tom Lane wrote:

Rod Taylor <rbt@rbt.ca> writes:

We already have that: you send a startup packet with a version less than
the latest, and the backend speaks that version to you.

Yes, but that requires you know the backend is less than the latest.

As opposed to knowing what? You send the version number you wish to speak;
either the backend can handle it, or not.

If the backend can not handle the version I request, but can handle a
prior version, I'd like to know. I am planning on having handlers for
multiple protocol versions in the same memory space (I'm using
Smalltalk, BTW) so that one application can talk to various databases of
various vintages.

I suppose that the client can just keep retrying the connection with
different versions until it gets a match, though.

#17Rod Taylor
rbt@rbt.ca
In reply to: Tom Lane (#12)
Re: Roadmap for FE/BE protocol redesign

On Mon, 2003-03-10 at 14:52, Tom Lane wrote:

Rod Taylor <rbt@rbt.ca> writes:

We already have that: you send a startup packet with a version less than
the latest, and the backend speaks that version to you.

Yes, but that requires you know the backend is less than the latest.

As opposed to knowing what? You send the version number you wish to speak;
either the backend can handle it, or not.

At some point PostgreSQL will have enough users that changing it will
piss them off. If the backend cannot handle whats been requested, we
may want to consider negotiating a protocol that both can handle.

Anyway, it doesn't really affect me one way or the other. So whatever
you like is probably fine.
--
Rod Taylor <rbt@rbt.ca>

PGP Key: http://www.rbt.ca/rbtpub.asc

#18Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Badger (#16)
Re: [INTERFACES] Roadmap for FE/BE protocol redesign

Bruce Badger <bruce_badger@badgerse.com> writes:

I suppose that the client can just keep retrying the connection with
different versions until it gets a match, though.

Right now, the backend just barfs with
FATAL: unsupported frontend protocol
so you have to do a blind search to see what it will take.

It would probably be a good idea to improve that message to mention
exactly what range of protocol versions the backend does support.
However, this will do you little good for talking to existing backends
:-(

regards, tom lane

#19Neil Conway
neilc@samurai.com
In reply to: Ashley Cambrell (#15)
Re: Roadmap for FE/BE protocol redesign

On Mon, 2003-03-10 at 16:37, Ashley Cambrell wrote:

This would also get around the problem of getting values from newly
inserted rows (eg PKs) without resorting to OIDs.

That's not a problem: ensure that the newly inserted row has a SERIAL
column, and use currval().

Cheers,

Neil

--
Neil Conway <neilc@samurai.com> || PGP Key ID: DB3C29FC

#20Tom Lane
tgl@sss.pgh.pa.us
In reply to: Neil Conway (#19)
Re: Roadmap for FE/BE protocol redesign

Neil Conway <neilc@samurai.com> writes:

On Mon, 2003-03-10 at 16:37, Ashley Cambrell wrote:

This would also get around the problem of getting values from newly
inserted rows (eg PKs) without resorting to OIDs.

That's not a problem: ensure that the newly inserted row has a SERIAL
column, and use currval().

There was some talk awhile back of inventing INSERT ... RETURNING and
UPDATE ... RETURNING commands so that you could pass back computed
values to the frontend without an extra query. It doesn't seem to have
gotten further than a TODO item yet, though. AFAICS this does not need
a protocol extension, anyway --- it'd look just the same as a SELECT
at the protocol level.

regards, tom lane

#21Ashley Cambrell
ash@freaky-namuh.com
In reply to: Neil Conway (#19)
#22Merlin Moncure
merlin.moncure@rcsonline.com
In reply to: Ashley Cambrell (#21)
#23Bruce Badger
bruce_badger@badgerse.com
In reply to: Merlin Moncure (#22)
#24Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#5)
#25Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#24)
#26Dave Page
dpage@pgadmin.org
In reply to: Bruce Momjian (#24)
#27Joe Conway
mail@joeconway.com
In reply to: Tom Lane (#25)
#28Tom Lane
tgl@sss.pgh.pa.us
In reply to: Dave Page (#26)
#29Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#28)
#30Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#29)
#31Justin Clift
justin@postgresql.org
In reply to: Bruce Momjian (#24)
#32Christopher Kings-Lynne
chriskl@familyhealth.com.au
In reply to: Bruce Momjian (#24)
#33Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#30)
#34Justin Clift
justin@postgresql.org
In reply to: Tom Lane (#28)
#35Justin Clift
justin@postgresql.org
In reply to: Merlin Moncure (#11)
#36Tom Lane
tgl@sss.pgh.pa.us
In reply to: Justin Clift (#31)
#37Justin Clift
justin@postgresql.org
In reply to: Tom Lane (#5)
#38Magnus Hagander
magnus@hagander.net
In reply to: Justin Clift (#37)
#39Dave Page
dpage@pgadmin.org
In reply to: Tom Lane (#28)
#40Dave Page
dpage@pgadmin.org
In reply to: Bruce Momjian (#29)
#41Dave Page
dpage@pgadmin.org
In reply to: Bruce Momjian (#33)
#42Hiroshi Inoue
Inoue@tpf.co.jp
In reply to: Bruce Momjian (#4)
#43Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#36)
#44Merlin Moncure
merlin.moncure@rcsonline.com
In reply to: Hiroshi Inoue (#42)
#45Bruce Momjian
bruce@momjian.us
In reply to: Merlin Moncure (#44)
#46Tom Lane
tgl@sss.pgh.pa.us
In reply to: Hiroshi Inoue (#42)
#47Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#38)
#48Tom Lane
tgl@sss.pgh.pa.us
In reply to: Dave Page (#41)
#49Andrew Dunstan
andrew@dunslane.net
In reply to: Bruce Momjian (#45)
#50Dave Page
dpage@pgadmin.org
In reply to: Andrew Dunstan (#49)
#51Tom Lane
tgl@sss.pgh.pa.us
In reply to: Dave Page (#50)
#52Dave Page
dpage@pgadmin.org
In reply to: Tom Lane (#51)
#53Tom Lane
tgl@sss.pgh.pa.us
In reply to: Dave Page (#52)
#54Dave Page
dpage@pgadmin.org
In reply to: Tom Lane (#53)
#55Merlin Moncure
merlin.moncure@rcsonline.com
In reply to: Dave Page (#54)
#56Kevin Brown
kevin@sysexperts.com
In reply to: Tom Lane (#48)
#57Peter Eisentraut
peter_e@gmx.net
In reply to: Dave Page (#39)
#58The Hermit Hacker
scrappy@hub.org
In reply to: Tom Lane (#1)
#59The Hermit Hacker
scrappy@hub.org
In reply to: Tom Lane (#5)
#60The Hermit Hacker
scrappy@hub.org
In reply to: Bruce Momjian (#24)
#61The Hermit Hacker
scrappy@hub.org
In reply to: Justin Clift (#31)
#62Hiroshi Inoue
Inoue@tpf.co.jp
In reply to: Bruce Momjian (#4)
#63Bruce Momjian
bruce@momjian.us
In reply to: The Hermit Hacker (#58)
#64The Hermit Hacker
scrappy@hub.org
In reply to: Bruce Momjian (#63)
#65Bruce Momjian
bruce@momjian.us
In reply to: The Hermit Hacker (#60)
#66Neil Conway
neilc@samurai.com
In reply to: Merlin Moncure (#55)
#67Bruce Momjian
bruce@momjian.us
In reply to: The Hermit Hacker (#58)
#68Justin Clift
justin@postgresql.org
In reply to: The Hermit Hacker (#61)
#69Tom Lane
tgl@sss.pgh.pa.us
In reply to: Kevin Brown (#56)
#70Hiroshi Inoue
Inoue@tpf.co.jp
In reply to: Peter Eisentraut (#57)
#71Barry Lind
barry@xythos.com
In reply to: Tom Lane (#1)
#72Barry Lind
barry@xythos.com
In reply to: Dave Page (#39)
#73Zeugswetter Andreas SB SD
ZeugswetterA@spardat.at
In reply to: Barry Lind (#72)
#74Zeugswetter Andreas SB SD
ZeugswetterA@spardat.at
In reply to: Zeugswetter Andreas SB SD (#73)
#75Hannu Krosing
hannu@tm.ee
In reply to: Barry Lind (#72)
#76Merlin Moncure
merlin.moncure@rcsonline.com
In reply to: Hannu Krosing (#75)
#77Hiroshi Inoue
Inoue@tpf.co.jp
In reply to: Zeugswetter Andreas SB SD (#73)
#78Dave Page
dpage@pgadmin.org
In reply to: Hiroshi Inoue (#77)
#79Dave Page
dpage@pgadmin.org
In reply to: Dave Page (#78)
#80Dave Page
dpage@pgadmin.org
In reply to: Dave Page (#79)
#81Dave Cramer
pg@fastcrypt.com
In reply to: Dave Page (#79)
#82Dave Page
dpage@pgadmin.org
In reply to: Dave Cramer (#81)
#83Alvaro Herrera
alvherre@dcc.uchile.cl
In reply to: Dave Page (#82)
#84Dave Cramer
pg@fastcrypt.com
In reply to: Dave Page (#82)
#85Tom Lane
tgl@sss.pgh.pa.us
In reply to: Dave Page (#79)
#86Tom Lane
tgl@sss.pgh.pa.us
In reply to: Barry Lind (#71)
#87Dave Cramer
pg@fastcrypt.com
In reply to: Tom Lane (#86)
#88Peter Eisentraut
peter_e@gmx.net
In reply to: Dave Page (#78)
#89Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#88)
#90Merlin Moncure
merlin.moncure@rcsonline.com
In reply to: Tom Lane (#89)
#91Dave Page
dpage@pgadmin.org
In reply to: Merlin Moncure (#90)
#92Hiroshi Inoue
Inoue@tpf.co.jp
In reply to: Peter Eisentraut (#88)
#93Christopher Kings-Lynne
chriskl@familyhealth.com.au
In reply to: Dave Page (#82)
#94Christopher Kings-Lynne
chriskl@familyhealth.com.au
In reply to: Tom Lane (#1)
#95Dave Cramer
pg@fastcrypt.com
In reply to: Hiroshi Inoue (#92)
#96Barry Lind
barry@xythos.com
In reply to: Tom Lane (#86)
#97Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#67)
#98Hannu Krosing
hannu@tm.ee
In reply to: Bruce Momjian (#67)
#99Hiroshi Inoue
Inoue@tpf.co.jp
In reply to: Dave Page (#79)
In reply to: Tom Lane (#86)
In reply to: Alvaro Herrera (#83)
#102Sean Chittenden
sean@chittenden.org
In reply to: Tom Lane (#86)
#103Mike Mascari
mascarm@mascari.com
In reply to: Hannu Krosing (#100)
#104Dave Page
dpage@pgadmin.org
In reply to: Hiroshi Inoue (#99)
#105Hiroshi Inoue
Inoue@tpf.co.jp
In reply to: Dave Page (#79)
In reply to: Hiroshi Inoue (#105)
#107Christopher Kings-Lynne
chriskl@familyhealth.com.au
In reply to: Hiroshi Inoue (#105)
#108Hiroshi Inoue
Inoue@tpf.co.jp
In reply to: Christopher Kings-Lynne (#107)
#109Tom Lane
tgl@sss.pgh.pa.us
In reply to: Dave Page (#104)
#110Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#86)
#111Chris Browne
cbbrowne@acm.org
In reply to: Hiroshi Inoue (#108)
#112Christof Petig
christof@petig-baender.de
In reply to: Barry Lind (#71)
#113The Hermit Hacker
scrappy@hub.org
In reply to: Bruce Momjian (#65)
#114The Hermit Hacker
scrappy@hub.org
In reply to: Justin Clift (#68)
#115Zeugswetter Andreas SB SD
ZeugswetterA@spardat.at
In reply to: The Hermit Hacker (#114)
#116Tom Lane
tgl@sss.pgh.pa.us
In reply to: Zeugswetter Andreas SB SD (#115)
#117Tom Lane
tgl@sss.pgh.pa.us
In reply to: Barry Lind (#96)
#118Dave Page
dpage@pgadmin.org
In reply to: Tom Lane (#117)
#119Dave Page
dpage@pgadmin.org
In reply to: Dave Page (#118)
#120Andrew Dunstan
andrew@dunslane.net
In reply to: Zeugswetter Andreas SB SD (#115)
#121Barry Lind
barry@xythos.com
In reply to: Tom Lane (#117)
#122Hiroshi Inoue
Inoue@tpf.co.jp
In reply to: Dave Page (#118)
#123Tom Lane
tgl@sss.pgh.pa.us
In reply to: Barry Lind (#121)
#124Hiroshi Inoue
Inoue@tpf.co.jp
In reply to: Dave Page (#79)
#125Tom Lane
tgl@sss.pgh.pa.us
In reply to: Hiroshi Inoue (#124)
#126Barry Lind
barry@xythos.com
In reply to: Tom Lane (#123)
#127Bruce Momjian
bruce@momjian.us
In reply to: The Hermit Hacker (#113)
#128Larry Rosenman
ler@lerctr.org
In reply to: Bruce Momjian (#127)
#129Dave Page
dpage@pgadmin.org
In reply to: Hiroshi Inoue (#122)
#130Christof Petig
christof@petig-baender.de
In reply to: Tom Lane (#123)
#131Christof Petig
christof@petig-baender.de
In reply to: Christof Petig (#130)
#132Zeugswetter Andreas SB SD
ZeugswetterA@spardat.at
In reply to: Christof Petig (#131)
#133Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#86)
#134Chris Browne
cbbrowne@acm.org
In reply to: Bruce Momjian (#133)
#135Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#133)
#136Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#89)
#137Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#136)
#138Emmanuel Charpentier
charpent@bacbuc.dyndns.org
In reply to: Justin Clift (#34)
In reply to: Tom Lane (#135)
#140Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#1)
#141Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#137)
#142Bruce Momjian
bruce@momjian.us
In reply to: Peter Eisentraut (#140)
#143Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#140)
#144Neil Conway
neilc@samurai.com
In reply to: Tom Lane (#143)
#145Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#141)
#146Christof Petig
christof@petig-baender.de
In reply to: Peter Eisentraut (#141)
#147Dave Page
dpage@pgadmin.org
In reply to: Christof Petig (#146)
#148Peter Eisentraut
peter_e@gmx.net
In reply to: Bruce Momjian (#142)
#149Bruce Momjian
bruce@momjian.us
In reply to: Peter Eisentraut (#148)
#150Alvaro Herrera
alvherre@dcc.uchile.cl
In reply to: Bruce Momjian (#149)
#151Bruce Momjian
bruce@momjian.us
In reply to: Alvaro Herrera (#150)
#152Brian Bruns
camber@ais.org
In reply to: Hannu Krosing (#139)
#153Peter Eisentraut
peter_e@gmx.net
In reply to: Bruce Momjian (#151)
#154Bruce Momjian
bruce@momjian.us
In reply to: Peter Eisentraut (#153)
#155Jeff Davis
pgsql@j-davis.com
In reply to: Tom Lane (#1)
#156Dave Cramer
pg@fastcrypt.com
In reply to: Bruce Momjian (#154)
#157Tom Lane
tgl@sss.pgh.pa.us
In reply to: Dave Cramer (#156)
#158Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#157)
#159Dave Cramer
pg@fastcrypt.com
In reply to: Bruce Momjian (#158)
#160Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#158)
#161Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#160)
#162Peter Eisentraut
peter_e@gmx.net
In reply to: Bruce Momjian (#154)
#163Bruce Momjian
bruce@momjian.us
In reply to: Peter Eisentraut (#162)
#164Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#163)
#165Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#164)
#166Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#165)
#167Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#166)
#168Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#167)
#169Barry Lind
barry@xythos.com
In reply to: Tom Lane (#168)
#170Bruce Momjian
bruce@momjian.us
In reply to: Barry Lind (#169)
#171Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#170)
#172Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#171)
#173Barry Lind
barry@xythos.com
In reply to: Bruce Momjian (#172)
#174Bruce Momjian
bruce@momjian.us
In reply to: Barry Lind (#173)
#175Kevin Brown
kevin@sysexperts.com
In reply to: Tom Lane (#145)
#176Bruce Momjian
bruce@momjian.us
In reply to: Kevin Brown (#175)
#177Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#176)
#178Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#177)
#179Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#178)