Core team statement on replication in PostgreSQL

Started by Tom Lanealmost 18 years ago181 messageshackers
Jump to latest
#1Tom Lane
tgl@sss.pgh.pa.us

The Postgres core team met at PGCon to discuss a few issues, the largest
of which is the need for simple, built-in replication for PostgreSQL.
Historically the project policy has been to avoid putting replication
into core PostgreSQL, so as to leave room for development of competing
solutions, recognizing that there is no "one size fits all" replication
solution. However, it is becoming clear that this policy is hindering
acceptance of PostgreSQL to too great an extent, compared to the benefit
it offers to the add-on replication projects. Users who might consider
PostgreSQL are choosing other database systems because our existing
replication options are too complex to install and use for simple cases.
In practice, simple asynchronous single-master-multiple-slave
replication covers a respectable fraction of use cases, so we have
concluded that we should allow such a feature to be included in the core
project. We emphasize that this is not meant to prevent continued
development of add-on replication projects that cover more complex use
cases.

We believe that the most appropriate base technology for this is
probably real-time WAL log shipping, as was demoed by NTT OSS at PGCon.
We hope that such a feature can be completed for 8.4. Ideally this
would be coupled with the ability to execute read-only queries on the
slave servers, but we see technical difficulties that might prevent that
from being completed before 8.5 or even further out. (The big problem
is that long-running slave-side queries might still need tuples that are
vacuumable on the master, and so replication of vacuuming actions would
cause the slave's queries to deliver wrong answers.)

Again, this will not replace Slony, pgPool, Continuent, Londiste, or
other systems for many users, as it will be not be highly scalable nor
support long-distance replication nor replicating less than an entire
installation. But it is time to include a simple, reliable basic
replication feature in the core system.

regards, tom lane

#2Marko Kreen
markokr@gmail.com
In reply to: Tom Lane (#1)
Re: Core team statement on replication in PostgreSQL

On 5/29/08, Tom Lane <tgl@sss.pgh.pa.us> wrote:

The Postgres core team met at PGCon to discuss a few issues, the largest
of which is the need for simple, built-in replication for PostgreSQL.
Historically the project policy has been to avoid putting replication
into core PostgreSQL, so as to leave room for development of competing
solutions, recognizing that there is no "one size fits all" replication
solution. However, it is becoming clear that this policy is hindering
acceptance of PostgreSQL to too great an extent, compared to the benefit
it offers to the add-on replication projects. Users who might consider
PostgreSQL are choosing other database systems because our existing
replication options are too complex to install and use for simple cases.
In practice, simple asynchronous single-master-multiple-slave
replication covers a respectable fraction of use cases, so we have
concluded that we should allow such a feature to be included in the core
project. We emphasize that this is not meant to prevent continued
development of add-on replication projects that cover more complex use
cases.

We believe that the most appropriate base technology for this is
probably real-time WAL log shipping, as was demoed by NTT OSS at PGCon.
We hope that such a feature can be completed for 8.4.

+1

Although I would explain it more shortly - we do need a solution for
lossless failover servers and such solution needs to live in core backend.

Ideally this
would be coupled with the ability to execute read-only queries on the
slave servers, but we see technical difficulties that might prevent that
from being completed before 8.5 or even further out. (The big problem
is that long-running slave-side queries might still need tuples that are
vacuumable on the master, and so replication of vacuuming actions would
cause the slave's queries to deliver wrong answers.)

Well, both Slony-I and upcoming Skytools 3 have the same problem when
cleaning events and have it solved simply by slaves reporting back their
lowest position on event stream. I cannot see why it cannot be applied
in this case too. So each slave just needs to report its own longest
open tx as "open" to master. Yes, it bloats master but no way around it.

Only problem could be the plan to vacuum tuples updated in between long
running tx and the regular ones, but such behaviour can be just turned off.

We could also have a option of "inaccessible slave", for those who
fear bloat on master.

--
marko

#3David Fetter
david@fetter.org
In reply to: Tom Lane (#1)
Re: Core team statement on replication in PostgreSQL

On Thu, May 29, 2008 at 10:12:55AM -0400, Tom Lane wrote:

The Postgres core team met at PGCon to discuss a few issues, the
largest of which is the need for simple, built-in replication for
PostgreSQL. Historically the project policy has been to avoid
putting replication into core PostgreSQL, so as to leave room for
development of competing solutions, recognizing that there is no
"one size fits all" replication solution. However, it is becoming
clear that this policy is hindering acceptance of PostgreSQL to too
great an extent, compared to the benefit it offers to the add-on
replication projects. Users who might consider PostgreSQL are
choosing other database systems because our existing replication
options are too complex to install and use for simple cases. In
practice, simple asynchronous single-master-multiple-slave
replication covers a respectable fraction of use cases, so we have
concluded that we should allow such a feature to be included in the
core project. We emphasize that this is not meant to prevent
continued development of add-on replication projects that cover more
complex use cases.

We believe that the most appropriate base technology for this is
probably real-time WAL log shipping, as was demoed by NTT OSS at
PGCon. We hope that such a feature can be completed for 8.4.

Ideally this would be coupled with the ability to execute read-only
queries on the slave servers, but we see technical difficulties that
might prevent that from being completed before 8.5 or even further
out. (The big problem is that long-running slave-side queries might
still need tuples that are vacuumable on the master, and so
replication of vacuuming actions would cause the slave's queries to
deliver wrong answers.)

This part is a deal-killer. It's a giant up-hill slog to sell warm
standby to those in charge of making resources available because the
warm standby machine consumes SA time, bandwidth, power, rack space,
etc., but provides no tangible benefit, and this feature would have
exactly the same problem.

IMHO, without the ability to do read-only queries on slaves, it's not
worth doing this feature at all.

Cheers,
David.
--
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter
Skype: davidfetter XMPP: david.fetter@gmail.com

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

#4Marko Kreen
markokr@gmail.com
In reply to: David Fetter (#3)
Re: Core team statement on replication in PostgreSQL

On 5/29/08, David Fetter <david@fetter.org> wrote:

On Thu, May 29, 2008 at 10:12:55AM -0400, Tom Lane wrote:

Ideally this would be coupled with the ability to execute read-only
queries on the slave servers, but we see technical difficulties that
might prevent that from being completed before 8.5 or even further
out. (The big problem is that long-running slave-side queries might
still need tuples that are vacuumable on the master, and so
replication of vacuuming actions would cause the slave's queries to
deliver wrong answers.)

This part is a deal-killer. It's a giant up-hill slog to sell warm
standby to those in charge of making resources available because the
warm standby machine consumes SA time, bandwidth, power, rack space,
etc., but provides no tangible benefit, and this feature would have
exactly the same problem.

IMHO, without the ability to do read-only queries on slaves, it's not
worth doing this feature at all.

I would not be so harsh - I'd like to have the lossless standby even
without read-only slaves.

But Tom's mail gave me impression core wants to wait until we get "perfect"
read-only slave implementation so we wait with it until 8.6, which does
not seem sensible. If we can do slightly inefficient (but simple)
implementation
right now, I see no reason to reject it, we can always improve it later.

Especially as it can be switchable. And we could also have
transaction_timeout paramenter on slaves so the hit on master is limited.

--
marko

#5Joshua D. Drake
jd@commandprompt.com
In reply to: David Fetter (#3)
Re: Core team statement on replication in PostgreSQL

On Thu, 2008-05-29 at 08:21 -0700, David Fetter wrote:

On Thu, May 29, 2008 at 10:12:55AM -0400, Tom Lane wrote:

This part is a deal-killer. It's a giant up-hill slog to sell warm
standby to those in charge of making resources available because the
warm standby machine consumes SA time, bandwidth, power, rack space,
etc., but provides no tangible benefit, and this feature would have
exactly the same problem.

IMHO, without the ability to do read-only queries on slaves, it's not
worth doing this feature at all.

The only question I have is... what does this give us that PITR doesn't
give us?

Sincerely,

Joshua D. Drake

#6Doug McNaught
doug@mcnaught.org
In reply to: Joshua D. Drake (#5)
Re: Core team statement on replication in PostgreSQL

On Thu, May 29, 2008 at 11:46 AM, Joshua D. Drake <jd@commandprompt.com> wrote:

The only question I have is... what does this give us that PITR doesn't
give us?

I think the idea is that WAL records would be shipped (possibly via
socket) and applied as they're generated, rather than on a
file-by-file basis. At least that's what "real-time" implies to me...

-Doug

#7Josh Berkus
josh@agliodbs.com
In reply to: Marko Kreen (#4)
Re: Core team statement on replication in PostgreSQL

Marko,

But Tom's mail gave me impression core wants to wait until we get "perfect"
read-only slave implementation so we wait with it until 8.6, which does
not seem sensible. If we can do slightly inefficient (but simple)
implementation
right now, I see no reason to reject it, we can always improve it later.

That's incorrect. We're looking for a workable solution. If we could
get one for 8.4, that would be brilliant but we think it's going to be
harder than that.

Publishing the XIDs back to the master is one possibility. We also
looked at using "spillover segments" for vacuumed rows, but that seemed
even less viable.

I'm also thinking, for *async replication*, that we could simply halt
replication on the slave whenever a transaction passes minxid on the
master. However, the main focus will be on synchrounous hot standby.

--Josh

#8David Fetter
david@fetter.org
In reply to: Joshua D. Drake (#5)
Re: Core team statement on replication in PostgreSQL

On Thu, May 29, 2008 at 08:46:22AM -0700, Joshua D. Drake wrote:

On Thu, 2008-05-29 at 08:21 -0700, David Fetter wrote:

This part is a deal-killer. It's a giant up-hill slog to sell
warm standby to those in charge of making resources available
because the warm standby machine consumes SA time, bandwidth,
power, rack space, etc., but provides no tangible benefit, and
this feature would have exactly the same problem.

IMHO, without the ability to do read-only queries on slaves, it's
not worth doing this feature at all.

The only question I have is... what does this give us that PITR
doesn't give us?

It looks like a wrapper for PITR to me, so the gain would be ease of
use.

Cheers,
David.
--
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter
Skype: davidfetter XMPP: david.fetter@gmail.com

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

#9Rick Vernam
rickv@hobi.com
In reply to: Marko Kreen (#2)
Re: Core team statement on replication in PostgreSQL

On Thursday 29 May 2008 09:54:03 am Marko Kreen wrote:

On 5/29/08, Tom Lane <tgl@sss.pgh.pa.us> wrote:

The Postgres core team met at PGCon to discuss a few issues, the largest
 of which is the need for simple, built-in replication for PostgreSQL.
 Historically the project policy has been to avoid putting replication
 into core PostgreSQL, so as to leave room for development of competing
 solutions, recognizing that there is no "one size fits all" replication
 solution.  However, it is becoming clear that this policy is hindering
 acceptance of PostgreSQL to too great an extent, compared to the benefit
 it offers to the add-on replication projects.  Users who might consider
 PostgreSQL are choosing other database systems because our existing
 replication options are too complex to install and use for simple cases.
 In practice, simple asynchronous single-master-multiple-slave
 replication covers a respectable fraction of use cases, so we have
 concluded that we should allow such a feature to be included in the core
 project.  We emphasize that this is not meant to prevent continued
 development of add-on replication projects that cover more complex use
 cases.

 We believe that the most appropriate base technology for this is
 probably real-time WAL log shipping, as was demoed by NTT OSS at PGCon.
 We hope that such a feature can be completed for 8.4.

+1

Although I would explain it more shortly - we do need a solution for
lossless failover servers and such solution needs to live in core backend.

+1 for lossless failover (ie, synchronous)

#10Bruce Momjian
bruce@momjian.us
In reply to: Josh Berkus (#7)
Re: Core team statement on replication in PostgreSQL

Josh Berkus wrote:

Marko,

But Tom's mail gave me impression core wants to wait until we get "perfect"
read-only slave implementation so we wait with it until 8.6, which does
not seem sensible. If we can do slightly inefficient (but simple)
implementation
right now, I see no reason to reject it, we can always improve it later.

That's incorrect. We're looking for a workable solution. If we could
get one for 8.4, that would be brilliant but we think it's going to be
harder than that.

Publishing the XIDs back to the master is one possibility. We also
looked at using "spillover segments" for vacuumed rows, but that seemed
even less viable.

I'm also thinking, for *async replication*, that we could simply halt
replication on the slave whenever a transaction passes minxid on the
master. However, the main focus will be on synchrounous hot standby.

Another idea I discussed with Tom is having the slave _delay_ applying
WAL files until all slave snapshots are ready.

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +

#11Dave Page
dpage@pgadmin.org
In reply to: Doug McNaught (#6)
Re: Core team statement on replication in PostgreSQL

On Thu, May 29, 2008 at 4:48 PM, Douglas McNaught <doug@mcnaught.org> wrote:

On Thu, May 29, 2008 at 11:46 AM, Joshua D. Drake <jd@commandprompt.com> wrote:

The only question I have is... what does this give us that PITR doesn't
give us?

I think the idea is that WAL records would be shipped (possibly via
socket) and applied as they're generated, rather than on a
file-by-file basis. At least that's what "real-time" implies to me...

Yes, we're talking real-time streaming (synchronous) log shipping.

--
Dave Page
EnterpriseDB UK: http://www.enterprisedb.com

#12Mathias Brossard
mathias.brossard@opentrust.com
In reply to: Tom Lane (#1)
Re: Core team statement on replication in PostgreSQL

Tom Lane wrote:

In practice, simple asynchronous single-master-multiple-slave
replication covers a respectable fraction of use cases, so we have
concluded that we should allow such a feature to be included in the core
project. We emphasize that this is not meant to prevent continued
development of add-on replication projects that cover more complex use
cases.

IMHO, this will help PostgreSQL adoption, mindshare and even boost interest in
development for the other replication use cases.

We believe that the most appropriate base technology for this is
probably real-time WAL log shipping, as was demoed by NTT OSS at PGCon.

The slides are up at http://www.pgcon.org/2008/schedule/events/76.en.html
From what I gather from those slides it seems to me that the NTT solution is
synchronous not asynchronous. In my opinion it's even better, but I do
understand that others might prefer asynchronous. I'm going to speculate, but I
would think it should be possible (without a substancial rewrite) to support
both modes (or even some intermediate modes, like DRBD on Linux).

We hope that such a feature can be completed for 8.4. Ideally this
would be coupled with the ability to execute read-only queries on the
slave servers, but we see technical difficulties that might prevent that
from being completed before 8.5 or even further out. (The big problem
is that long-running slave-side queries might still need tuples that are
vacuumable on the master, and so replication of vacuuming actions would
cause the slave's queries to deliver wrong answers.)

From the 8.4dev documentation, another problem for read-only slaves would be :
« Operations on hash indexes are not presently WAL-logged, so replay will not
update these indexes. The recommended workaround is to manually REINDEX each
such index after completing a recovery operation. ».

Sincerely,
--
Mathias Brossard

#13Aidan Van Dyk
aidan@highrise.ca
In reply to: Josh Berkus (#7)
Re: Core team statement on replication in PostgreSQL

* Josh Berkus <josh@agliodbs.com> [080529 11:52]:

Marko,

But Tom's mail gave me impression core wants to wait until we get "perfect"
read-only slave implementation so we wait with it until 8.6, which does
not seem sensible. If we can do slightly inefficient (but simple)
implementation
right now, I see no reason to reject it, we can always improve it later.

That's incorrect. We're looking for a workable solution. If we could
get one for 8.4, that would be brilliant but we think it's going to be
harder than that.

Publishing the XIDs back to the master is one possibility. We also
looked at using "spillover segments" for vacuumed rows, but that seemed
even less viable.

I'm also thinking, for *async replication*, that we could simply halt
replication on the slave whenever a transaction passes minxid on the
master. However, the main focus will be on synchrounous hot standby.

Or, instead of statement timeout killing statements on the RO slave,
simply kill any "old" transactions on the RO slave. "Old" in the sense
that the master's xmin has passed it. And it's just an exersise in
controlling the age of xmin on the master, which could even be done
user-side.

Doesn't fit all, but no one size does... It would work for where you're
hammering your slaves with a diverse set of high-velocity short queries
that you're trying to avoid on the master...

An option to "pause reply (making it async)" or "abort transactions
(for sync)" might make it possible to easily run an async slave for slow
reporting queries, and a sync slave for short queries.

a.

--
Aidan Van Dyk Create like a god,
aidan@highrise.ca command like a king,
http://www.highrise.ca/ work like a slave.

#14Josh Berkus
josh@agliodbs.com
In reply to: Joshua D. Drake (#5)
Re: Core team statement on replication in PostgreSQL

Joshua D. Drake wrote:

On Thu, 2008-05-29 at 08:21 -0700, David Fetter wrote:

On Thu, May 29, 2008 at 10:12:55AM -0400, Tom Lane wrote:

This part is a deal-killer. It's a giant up-hill slog to sell warm
standby to those in charge of making resources available because the
warm standby machine consumes SA time, bandwidth, power, rack space,
etc., but provides no tangible benefit, and this feature would have
exactly the same problem.

IMHO, without the ability to do read-only queries on slaves, it's not
worth doing this feature at all.

The only question I have is... what does this give us that PITR doesn't
give us?

Since people seem to be unclear on what we're proposing:

8.4 Synchronous Warm Standby: makes PostgreSQL more suitable for HA
systems by eliminating failover data loss and cutting failover time.

8.5 (probably) Synchronous & Asynchronous Hot Standby: adds read-only
queries on slaves to the above.

Again, if we can implement queries on slaves for 8.4, we're all for it.
However, after conversations in Core and with Simon we all think it's
going to be too big a task to complete in 4-5 months. We *don't* want
to end up delaying 8.4 for 5 months because we're debugging hot standby.

--Josh

#15Brian Hurt
bhurt@janestcapital.com
In reply to: David Fetter (#3)
Re: Core team statement on replication in PostgreSQL

David Fetter wrote:

This part is a deal-killer. It's a giant up-hill slog to sell warm
standby to those in charge of making resources available because the
warm standby machine consumes SA time, bandwidth, power, rack space,
etc., but provides no tangible benefit, and this feature would have
exactly the same problem.

IMHO, without the ability to do read-only queries on slaves, it's not
worth doing this feature at all.

I don't think I agree with this. There are a large number of situations
where it's positive expectancy to do precisely this- it's not unlike
buying a $1 lottery ticket with a 1 chance in 100 of winning $1000- the
vast majority of the time (99 times out of 100), you're going to lose
$1. But when you win, you win big, and make up for all the small losses
you incurred getting there and then some. Failover machines are like
that- most of the time they're negative value, as you said- taking up SA
time, bandwidth, power, rack space, money, etc. But every once in a
(great) while, they save you. If the cost of having the database down
for hours or days (as you madly try to next-day replacement hardware)
isn't that great, then no, this isn't worthwhile- but in cases where
the database being down chalks up the lost money quickly, this is easy
to cost-justify.

Being able to do read-only queries makes this feature more valuable in
more situations, but I disagree that it's a deal-breaker.

Brian

#16David Fetter
david@fetter.org
In reply to: Bruce Momjian (#10)
Re: Core team statement on replication in PostgreSQL

On Thu, May 29, 2008 at 11:58:31AM -0400, Bruce Momjian wrote:

Josh Berkus wrote:

Publishing the XIDs back to the master is one possibility. We
also looked at using "spillover segments" for vacuumed rows, but
that seemed even less viable.

I'm also thinking, for *async replication*, that we could simply
halt replication on the slave whenever a transaction passes minxid
on the master. However, the main focus will be on synchrounous
hot standby.

Another idea I discussed with Tom is having the slave _delay_
applying WAL files until all slave snapshots are ready.

Either one of these would be great, but something that involves
machines that stay useless most of the time is just not going to work.

Cheers,
David.
--
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter
Skype: davidfetter XMPP: david.fetter@gmail.com

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

#17Bruce Momjian
bruce@momjian.us
In reply to: David Fetter (#16)
Re: Core team statement on replication in PostgreSQL

David Fetter wrote:

On Thu, May 29, 2008 at 11:58:31AM -0400, Bruce Momjian wrote:

Josh Berkus wrote:

Publishing the XIDs back to the master is one possibility. We
also looked at using "spillover segments" for vacuumed rows, but
that seemed even less viable.

I'm also thinking, for *async replication*, that we could simply
halt replication on the slave whenever a transaction passes minxid
on the master. However, the main focus will be on synchrounous
hot standby.

Another idea I discussed with Tom is having the slave _delay_
applying WAL files until all slave snapshots are ready.

Either one of these would be great, but something that involves
machines that stay useless most of the time is just not going to work.

Right, the ultimate target is to have the slave be read-only, but we
need to get the streaming of WAL logs done first.

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +

#18Aidan Van Dyk
aidan@highrise.ca
In reply to: Dave Page (#11)
Re: Core team statement on replication in PostgreSQL

* Dave Page <dpage@pgadmin.org> [080529 12:03]:

On Thu, May 29, 2008 at 4:48 PM, Douglas McNaught <doug@mcnaught.org> wrote:

I think the idea is that WAL records would be shipped (possibly via
socket) and applied as they're generated, rather than on a
file-by-file basis. At least that's what "real-time" implies to me...

Yes, we're talking real-time streaming (synchronous) log shipping.

But synchronous streaming doesn't mean the WAL has to be *applied* on
the salve yet. Just that it has to be "safely" on the slave (i.e on
disk, not just in kernel buffers).

The whole single-threaded WAL replay problem is going to rear it's ugly
head here too, and mean that a slave *won't* be able to keep up with a
busy master if it's actually trying to apply all the changes in
real-time. Well, actually, if it's synchronous, it will keep up, but it
just means that now your master is IO capabilities is limited to the
speed of the slaves single-threaded WAL application.

a.
--
Aidan Van Dyk Create like a god,
aidan@highrise.ca command like a king,
http://www.highrise.ca/ work like a slave.

#19Josh Berkus
josh@agliodbs.com
In reply to: Bruce Momjian (#10)
Re: Core team statement on replication in PostgreSQL

Bruce,

Another idea I discussed with Tom is having the slave _delay_ applying
WAL files until all slave snapshots are ready.

Well, again, that only works for async mode. I personally think that's
the correct solution for async. But for synch mode, I think we need to
push the xids back to the master; generally if a user is running in
synch mode they're concerned about failover time and zero data loss, so
holding back the WAL files doesn't make sense.

Also, if you did delay applying WAL files on an async slave, you'd reach
a point (perhaps after a 6-hour query) where it'd actually be cheaper to
rebuild the slave than to apply the pent-up WAL files.

--Josh Berkus

#20Andrew Dunstan
andrew@dunslane.net
In reply to: Dave Page (#11)
Re: Core team statement on replication in PostgreSQL

Dave Page wrote:

On Thu, May 29, 2008 at 4:48 PM, Douglas McNaught <doug@mcnaught.org> wrote:

On Thu, May 29, 2008 at 11:46 AM, Joshua D. Drake <jd@commandprompt.com> wrote:

The only question I have is... what does this give us that PITR doesn't
give us?

I think the idea is that WAL records would be shipped (possibly via
socket) and applied as they're generated, rather than on a
file-by-file basis. At least that's what "real-time" implies to me...

Yes, we're talking real-time streaming (synchronous) log shipping.

That's not what Tom's email said, AIUI. "Synchronous" replication surely
means that the master and slave always have the same set of transactions
applied. Streaming <> synchronous. But streaming log shipping will allow
us to get get closer to synchronicity in some situations, i.e. the
window for missing transactions will be much smaller.

Some of us were discussing this late on Friday night after PGcon. ISTM
that we can have either 1) fairly hot failover slaves that are
guaranteed to be almost up to date, or 2) slaves that can support
read-only transactions but might get somewhat out of date if they run
long transactions. The big problem is in having slaves which are both
highly up to date and support arbitrary read-only transactions. Maybe in
the first instance, at least, we need to make slaves choose which role
they will play.

cheers

andrew

#21Marko Kreen
markokr@gmail.com
In reply to: Joshua D. Drake (#5)
#22Bruce Momjian
bruce@momjian.us
In reply to: Josh Berkus (#19)
#23Steve Atkins
steve@blighty.com
In reply to: David Fetter (#16)
#24Marko Kreen
markokr@gmail.com
In reply to: Aidan Van Dyk (#18)
#25Joshua D. Drake
jd@commandprompt.com
In reply to: Josh Berkus (#14)
#26Aidan Van Dyk
aidan@highrise.ca
In reply to: Marko Kreen (#24)
#27Tom Lane
tgl@sss.pgh.pa.us
In reply to: Andrew Dunstan (#20)
#28Shane Ambler
pgsql@Sheeky.Biz
In reply to: David Fetter (#3)
#29Tom Lane
tgl@sss.pgh.pa.us
In reply to: David Fetter (#8)
#30Greg Smith
gsmith@gregsmith.com
In reply to: David Fetter (#3)
#31Jeff Davis
pgsql@j-davis.com
In reply to: Josh Berkus (#19)
#32Josh Berkus
josh@agliodbs.com
In reply to: Joshua D. Drake (#25)
#33Andrew Sullivan
ajs@commandprompt.com
In reply to: Brian Hurt (#15)
#34Andrew Sullivan
ajs@commandprompt.com
In reply to: Marko Kreen (#21)
#35David Fetter
david@fetter.org
In reply to: Andrew Sullivan (#33)
#36Teodor Sigaev
teodor@sigaev.ru
In reply to: Marko Kreen (#2)
#37Merlin Moncure
mmoncure@gmail.com
In reply to: Andrew Dunstan (#20)
#38Robert Hodges
robert.hodges@continuent.com
In reply to: Tom Lane (#29)
#39Merlin Moncure
mmoncure@gmail.com
In reply to: Robert Hodges (#38)
#40Brian Hurt
bhurt@janestcapital.com
In reply to: Andrew Sullivan (#33)
#41Marko Kreen
markokr@gmail.com
In reply to: Teodor Sigaev (#36)
#42Andrew Sullivan
ajs@commandprompt.com
In reply to: Robert Hodges (#38)
#43Marko Kreen
markokr@gmail.com
In reply to: Tom Lane (#29)
#44Peter Eisentraut
peter_e@gmx.net
In reply to: David Fetter (#16)
#45Peter Eisentraut
peter_e@gmx.net
In reply to: Jeff Davis (#31)
#46Peter Eisentraut
peter_e@gmx.net
In reply to: Merlin Moncure (#37)
#47Peter Eisentraut
peter_e@gmx.net
In reply to: Joshua D. Drake (#25)
#48Tom Lane
tgl@sss.pgh.pa.us
In reply to: Andrew Sullivan (#42)
#49Peter Eisentraut
peter_e@gmx.net
In reply to: Andrew Sullivan (#34)
#50Peter Eisentraut
peter_e@gmx.net
In reply to: Mathias Brossard (#12)
#51Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#1)
#52Merlin Moncure
mmoncure@gmail.com
In reply to: Peter Eisentraut (#46)
#53Josh Berkus
josh@agliodbs.com
In reply to: Robert Hodges (#38)
#54David Fetter
david@fetter.org
In reply to: Peter Eisentraut (#44)
#55Tom Lane
tgl@sss.pgh.pa.us
In reply to: David Fetter (#54)
#56David Fetter
david@fetter.org
In reply to: Tom Lane (#55)
#57Bruce Momjian
bruce@momjian.us
In reply to: David Fetter (#56)
#58Josh Berkus
josh@agliodbs.com
In reply to: David Fetter (#54)
#59David Fetter
david@fetter.org
In reply to: Bruce Momjian (#57)
#60Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#57)
#61David Fetter
david@fetter.org
In reply to: Josh Berkus (#58)
#62Josh Berkus
josh@agliodbs.com
In reply to: David Fetter (#61)
#63Andrew Sullivan
ajs@commandprompt.com
In reply to: David Fetter (#54)
#64Mathias Brossard
mathias.brossard@opentrust.com
In reply to: Peter Eisentraut (#50)
#65Robert Treat
xzilla@users.sourceforge.net
In reply to: Bruce Momjian (#17)
#66Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Treat (#65)
#67Joshua D. Drake
jd@commandprompt.com
In reply to: Robert Treat (#65)
#68Chris Browne
cbbrowne@acm.org
In reply to: Tom Lane (#29)
#69Dimitri Fontaine
dimitri@2ndQuadrant.fr
In reply to: Robert Treat (#65)
#70Tom Lane
tgl@sss.pgh.pa.us
In reply to: Dimitri Fontaine (#69)
#71Andrew Dunstan
andrew@dunslane.net
In reply to: Joshua D. Drake (#67)
#72Joshua D. Drake
jd@commandprompt.com
In reply to: Andrew Dunstan (#71)
#73Tom Lane
tgl@sss.pgh.pa.us
In reply to: Joshua D. Drake (#72)
#74Joshua D. Drake
jd@commandprompt.com
In reply to: Tom Lane (#73)
#75Tom Lane
tgl@sss.pgh.pa.us
In reply to: Joshua D. Drake (#74)
#76Merlin Moncure
mmoncure@gmail.com
In reply to: Joshua D. Drake (#74)
#77Greg Smith
gsmith@gregsmith.com
In reply to: Tom Lane (#73)
#78Aidan Van Dyk
aidan@highrise.ca
In reply to: Tom Lane (#75)
#79Joshua D. Drake
jd@commandprompt.com
In reply to: Tom Lane (#75)
#80Josh Berkus
josh@agliodbs.com
In reply to: Greg Smith (#77)
#81Andrew Sullivan
ajs@commandprompt.com
In reply to: Tom Lane (#73)
#82Merlin Moncure
mmoncure@gmail.com
In reply to: Josh Berkus (#80)
#83Andrew Dunstan
andrew@dunslane.net
In reply to: Josh Berkus (#80)
#84Tom Lane
tgl@sss.pgh.pa.us
In reply to: Greg Smith (#77)
#85Gurjeet Singh
singh.gurjeet@gmail.com
In reply to: Tom Lane (#84)
#86Csaba Nagy
nagy@ecircle-ag.com
In reply to: Gurjeet Singh (#85)
#87Simon Riggs
simon@2ndQuadrant.com
In reply to: Tom Lane (#1)
#88Dimitri Fontaine
dimitri@2ndQuadrant.fr
In reply to: Tom Lane (#70)
#89Simon Riggs
simon@2ndQuadrant.com
In reply to: Tom Lane (#84)
#90Dimitri Fontaine
dimitri@2ndQuadrant.fr
In reply to: Dimitri Fontaine (#88)
#91Dirk Riehle
dirk@riehle.org
In reply to: Tom Lane (#1)
#92Andrew Sullivan
ajs@commandprompt.com
In reply to: David Fetter (#59)
#93Marko Kreen
markokr@gmail.com
In reply to: Gurjeet Singh (#85)
#94Andreas 'ads' Scherbaum
adsmail@wars-nicht.de
In reply to: Andrew Dunstan (#83)
#95Andreas 'ads' Scherbaum
adsmail@wars-nicht.de
In reply to: Tom Lane (#70)
#96Andreas 'ads' Scherbaum
adsmail@wars-nicht.de
In reply to: Steve Atkins (#23)
#97Simon Riggs
simon@2ndQuadrant.com
In reply to: Gurjeet Singh (#85)
#98Tom Lane
tgl@sss.pgh.pa.us
In reply to: Simon Riggs (#97)
#99Andrew Dunstan
andrew@dunslane.net
In reply to: Tom Lane (#98)
#100Simon Riggs
simon@2ndQuadrant.com
In reply to: Andrew Dunstan (#99)
#101Merlin Moncure
mmoncure@gmail.com
In reply to: Marko Kreen (#93)
#102Robert Hodges
robert.hodges@continuent.com
In reply to: Tom Lane (#48)
#103Robert Treat
xzilla@users.sourceforge.net
In reply to: Tom Lane (#84)
#104Robert Treat
xzilla@users.sourceforge.net
In reply to: Greg Smith (#77)
#105Robert Treat
xzilla@users.sourceforge.net
In reply to: Merlin Moncure (#82)
#106Simon Riggs
simon@2ndQuadrant.com
In reply to: Robert Hodges (#102)
#107Gurjeet Singh
singh.gurjeet@gmail.com
In reply to: Tom Lane (#1)
#108Greg Smith
gsmith@gregsmith.com
In reply to: Andreas 'ads' Scherbaum (#94)
#109Andrew Dunstan
andrew@dunslane.net
In reply to: Andreas 'ads' Scherbaum (#94)
#110Gurjeet Singh
singh.gurjeet@gmail.com
In reply to: Greg Smith (#108)
#111Greg Smith
gsmith@gregsmith.com
In reply to: Gurjeet Singh (#110)
#112Andreas 'ads' Scherbaum
adsmail@wars-nicht.de
In reply to: Greg Smith (#108)
#113Andreas 'ads' Scherbaum
adsmail@wars-nicht.de
In reply to: Andrew Dunstan (#109)
#114Josh Berkus
josh@agliodbs.com
In reply to: Andrew Dunstan (#109)
#115Joshua D. Drake
jd@commandprompt.com
In reply to: Gurjeet Singh (#110)
#116Tatsuo Ishii
t-ishii@sra.co.jp
In reply to: Andrew Dunstan (#109)
#117Andrew Dunstan
andrew@dunslane.net
In reply to: Tatsuo Ishii (#116)
#118Gurjeet Singh
singh.gurjeet@gmail.com
In reply to: Greg Smith (#111)
#119Mike Rylander
mrylander@gmail.com
In reply to: Andreas 'ads' Scherbaum (#113)
#120Merlin Moncure
mmoncure@gmail.com
In reply to: Mike Rylander (#119)
#121Joshua D. Drake
jd@commandprompt.com
In reply to: Merlin Moncure (#120)
#122Josh Berkus
josh@agliodbs.com
In reply to: Dirk Riehle (#91)
#123Robert Treat
xzilla@users.sourceforge.net
In reply to: Josh Berkus (#122)
#124Shane Ambler
pgsql@Sheeky.Biz
In reply to: Dirk Riehle (#91)
#125Dirk Riehle
dirk@riehle.org
In reply to: Josh Berkus (#122)
#126Jonah H. Harris
jonah.harris@gmail.com
In reply to: Dirk Riehle (#91)
#127Robert Hodges
robert.hodges@continuent.com
In reply to: Merlin Moncure (#39)
#128Merlin Moncure
mmoncure@gmail.com
In reply to: Robert Hodges (#127)
#129Tom Lane
tgl@sss.pgh.pa.us
In reply to: Merlin Moncure (#128)
#130Dawid Kuroczko
qnex42@gmail.com
In reply to: Tom Lane (#1)
#131James Mansion
james@mansionfamily.plus.com
In reply to: David Fetter (#3)
#132James Mansion
james@mansionfamily.plus.com
In reply to: Aidan Van Dyk (#18)
In reply to: Robert Treat (#103)
In reply to: Tom Lane (#29)
In reply to: Robert Hodges (#38)
#136Robert Hodges
robert.hodges@continuent.com
In reply to: Hannu Krosing (#135)
#137Chris Browne
cbbrowne@acm.org
In reply to: Bruce Momjian (#17)
In reply to: Mathias Brossard (#64)
#139Andreas 'ads' Scherbaum
adsmail@wars-nicht.de
In reply to: Chris Browne (#137)
In reply to: Andreas 'ads' Scherbaum (#139)
#141Andrew Sullivan
ajs@commandprompt.com
In reply to: Tom Lane (#129)
#142Stephen Denne
Stephen.Denne@datamail.co.nz
In reply to: Hannu Krosing (#133)
#143Markus Wanner
markus@bluegap.ch
In reply to: Andrew Sullivan (#141)
#144Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Stephen Denne (#142)
#145Teodor Sigaev
teodor@sigaev.ru
In reply to: Heikki Linnakangas (#144)
#146Csaba Nagy
nagy@ecircle-ag.com
In reply to: Heikki Linnakangas (#144)
#147Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Csaba Nagy (#146)
#148Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Teodor Sigaev (#145)
#149Andrew Sullivan
ajs@commandprompt.com
In reply to: Markus Wanner (#143)
#150Tom Lane
tgl@sss.pgh.pa.us
In reply to: Heikki Linnakangas (#144)
In reply to: Tom Lane (#150)
#152Tom Lane
tgl@sss.pgh.pa.us
In reply to: Hannu Krosing (#151)
#153Simon Riggs
simon@2ndQuadrant.com
In reply to: Tom Lane (#152)
#154Jeff Davis
pgsql@j-davis.com
In reply to: Heikki Linnakangas (#147)
#155Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jeff Davis (#154)
#156Jeff Davis
pgsql@j-davis.com
In reply to: Tom Lane (#155)
#157Koichi Suzuki
koichi.szk@gmail.com
In reply to: Heikki Linnakangas (#144)
#158Tom Lane
tgl@sss.pgh.pa.us
In reply to: Koichi Suzuki (#157)
#159Koichi Suzuki
koichi.szk@gmail.com
In reply to: Tom Lane (#158)
#160Bruce Momjian
bruce@momjian.us
In reply to: Jeff Davis (#154)
#161Bruce Momjian
bruce@momjian.us
In reply to: Gurjeet Singh (#85)
#162Bruce Momjian
bruce@momjian.us
In reply to: Andreas 'ads' Scherbaum (#112)
#163Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Bruce Momjian (#162)
#164Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#161)
#165Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#162)
#166Greg Smith
gsmith@gregsmith.com
In reply to: Tom Lane (#165)
#167Koichi Suzuki
koichi.szk@gmail.com
In reply to: Greg Smith (#166)
#168Bruce Momjian
bruce@momjian.us
In reply to: Greg Smith (#166)
#169Heikki Linnakangas
heikki.linnakangas@enterprisedb.com
In reply to: Bruce Momjian (#168)
#170Josh Berkus
josh@agliodbs.com
In reply to: Tom Lane (#164)
#171ITAGAKI Takahiro
itagaki.takahiro@oss.ntt.co.jp
In reply to: Josh Berkus (#170)
#172Kevin Grittner
Kevin.Grittner@wicourts.gov
In reply to: Greg Smith (#166)
#173Robert Hodges
robert.hodges@continuent.com
In reply to: Kevin Grittner (#172)
#174Marko Kreen
markokr@gmail.com
In reply to: Robert Hodges (#173)
#175Robert Hodges
robert.hodges@continuent.com
In reply to: Marko Kreen (#174)
#176Chris Browne
cbbrowne@acm.org
In reply to: Kevin Grittner (#172)
#177Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#165)
#178Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Bruce Momjian (#177)
#179Bruce Momjian
bruce@momjian.us
In reply to: Alvaro Herrera (#178)
#180Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Bruce Momjian (#179)
#181Bruce Momjian
bruce@momjian.us
In reply to: Alvaro Herrera (#180)