arrays as pl/perl input arguments [PATCH]

Started by Alexey Klyukinover 15 years ago79 messageshackers
Jump to latest
#1Alexey Klyukin
alexk@commandprompt.com

Hello,

Here's the patch that improves handling of arrays as pl/perl function input
arguments, converting postgres arrays of arbitrary dimensions into perl array
references. It includes regression tests and a documentation changes, and it
builds and runs successfully on my mac os x and linux boxes. To maintain
compatibility with existing pl/perl code a new variable,
plperl.convert_array_arguments (better name?), is introduced. Its default
value is false, when set to true it triggers the new behavior, i.e.

SET plperl.convert_array_arguments = true;
CREATE OR REPLACE FUNCTION test_array(text[]) RETURNS TEXT AS $$
my $arg = shift;
if (ref $arg eq 'ARRAY') {
return "array conversion is enabled";
} else {
return "array conversion is disabled";
}
$$ LANGUAGE plperl;

test=# select test_array('{1,2,3}');
test_array
-----------------------------
array conversion is enabled
(1 row)

You can find other, less trivial examples, by examining plperl_array
regression test.

The implementation detects whether the input argument of a perl function is an
array, and calls plperl_ref_from_pg_array if it is. The latter obtains a flat
array of Datums from deconstruct_array and, using information about array
dimensions, recursively creates perl array references in split_array. To pass
array information between recursive calls a new 'plperl_array_info' struct was
added. Arrays as members of composite types are also handled in
plperl_hash_from_tuple.

/A
--
Alexey Klyukin
The PostgreSQL Company - Command Prompt, Inc.

Attachments:

pg_to_perl_arrays.diffapplication/octet-stream; name=pg_to_perl_arrays.diffDownload+592-27
#2David E. Wheeler
david@kineticode.com
In reply to: Alexey Klyukin (#1)
Re: arrays as pl/perl input arguments [PATCH]

On Jan 11, 2011, at 2:25 PM, Alexey Klyukin wrote:

Hello,

Here's the patch that improves handling of arrays as pl/perl function input
arguments, converting postgres arrays of arbitrary dimensions into perl array
references.

Awesome! I've wanted this for *years*.

It includes regression tests and a documentation changes, and it
builds and runs successfully on my mac os x and linux boxes. To maintain
compatibility with existing pl/perl code a new variable,
plperl.convert_array_arguments (better name?), is introduced. Its default
value is false, when set to true it triggers the new behavior, i.e.

Have you considered instead passing an array-based object with is string overloading designed to return the pg array string format? That would make for nice, transparent compatibility without the need for a GUC.

Not my idea, BTW, but suggested by Tim Bunce.

Best,

David

#3Andrew Dunstan
andrew@dunslane.net
In reply to: David E. Wheeler (#2)
Re: arrays as pl/perl input arguments [PATCH]

On 01/11/2011 06:07 PM, David E. Wheeler wrote:

To maintain
compatibility with existing pl/perl code a new variable,
plperl.convert_array_arguments (better name?), is introduced. Its default
value is false, when set to true it triggers the new behavior, i.e.

Have you considered instead passing an array-based object with is string overloading designed to return the pg array string format? That would make for nice, transparent compatibility without the need for a GUC.

Not my idea, BTW, but suggested by Tim Bunce.

I think there's at least a danger of breaking legacy code doing that.
Say you have some code that does a ref test on the argument, for
example. The behavior would now be changed.

cheers

andrew

#4David E. Wheeler
david@kineticode.com
In reply to: Andrew Dunstan (#3)
Re: arrays as pl/perl input arguments [PATCH]

On Jan 11, 2011, at 3:44 PM, Andrew Dunstan wrote:

I think there's at least a danger of breaking legacy code doing that. Say you have some code that does a ref test on the argument, for example. The behavior would now be changed.

I think that'd be pretty rare.

David

#5Andrew Dunstan
andrew@dunslane.net
In reply to: David E. Wheeler (#4)
Re: arrays as pl/perl input arguments [PATCH]

On 01/11/2011 07:17 PM, David E. Wheeler wrote:

On Jan 11, 2011, at 3:44 PM, Andrew Dunstan wrote:

I think there's at least a danger of breaking legacy code doing that. Say you have some code that does a ref test on the argument, for example. The behavior would now be changed.

I think that'd be pretty rare.

Possibly it would. But we usually try pretty hard to avoid that sort of
breakage.

cheers

andrew

#6Robert Haas
robertmhaas@gmail.com
In reply to: Andrew Dunstan (#5)
Re: arrays as pl/perl input arguments [PATCH]

On Tue, Jan 11, 2011 at 7:55 PM, Andrew Dunstan <andrew@dunslane.net> wrote:

On 01/11/2011 07:17 PM, David E. Wheeler wrote:

On Jan 11, 2011, at 3:44 PM, Andrew Dunstan wrote:

I think there's at least a danger of breaking legacy code doing that. Say
you have some code that does a ref test on the argument, for example. The
behavior would now be changed.

I think that'd be pretty rare.

Possibly it would. But we usually try pretty hard to avoid that sort of
breakage.

By the same token, I'm not convinced it's a good idea for this
behavior to be off by default. Surely many people will altogether
fail to notice that it's an option? If we're going to have a
backward-compatibility GUC at all, ISTM that you ought to get the good
stuff unless you ask for the old way.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

#7Andrew Dunstan
andrew@dunslane.net
In reply to: Robert Haas (#6)
Re: arrays as pl/perl input arguments [PATCH]

On 01/11/2011 09:06 PM, Robert Haas wrote:

On Tue, Jan 11, 2011 at 7:55 PM, Andrew Dunstan<andrew@dunslane.net> wrote:

On 01/11/2011 07:17 PM, David E. Wheeler wrote:

On Jan 11, 2011, at 3:44 PM, Andrew Dunstan wrote:

I think there's at least a danger of breaking legacy code doing that. Say
you have some code that does a ref test on the argument, for example. The
behavior would now be changed.

I think that'd be pretty rare.

Possibly it would. But we usually try pretty hard to avoid that sort of
breakage.

By the same token, I'm not convinced it's a good idea for this
behavior to be off by default. Surely many people will altogether
fail to notice that it's an option? If we're going to have a
backward-compatibility GUC at all, ISTM that you ought to get the good
stuff unless you ask for the old way.

Sure, that seems reasonable.

cheers

andrew

#8Alexey Klyukin
alexk@commandprompt.com
In reply to: David E. Wheeler (#2)
Re: arrays as pl/perl input arguments [PATCH]

On Jan 12, 2011, at 1:07 AM, David E. Wheeler wrote:

On Jan 11, 2011, at 2:25 PM, Alexey Klyukin wrote:

Hello,

Here's the patch that improves handling of arrays as pl/perl function input
arguments, converting postgres arrays of arbitrary dimensions into perl array
references.

Awesome! I've wanted this for *years*.

It includes regression tests and a documentation changes, and it
builds and runs successfully on my mac os x and linux boxes. To maintain
compatibility with existing pl/perl code a new variable,
plperl.convert_array_arguments (better name?), is introduced. Its default
value is false, when set to true it triggers the new behavior, i.e.

Have you considered instead passing an array-based object with is string overloading designed to return the pg array string format? That would make for nice, transparent compatibility without the need for a GUC.

You mean packing both a string representation and a reference to a single SV * value?

I haven't considered that (lack of extensive perlgus-foo) although I think that's an interesting idea. One drawback would be that it would require both conversion to a string format and to a perl reference, performing unnecessary actions during every time arrays are passed to a pl/perl function. If there is a strong dislike of the proposed 'compatibility' GUC option - I think I can change the existing patch to incorporate array string representation into the reference-holding SV quite easily.

/A

--
Alexey Klyukin
The PostgreSQL Company - Command Prompt, Inc.

#9Alexey Klyukin
alexk@commandprompt.com
In reply to: Robert Haas (#6)
Re: arrays as pl/perl input arguments [PATCH]

On Jan 12, 2011, at 4:06 AM, Robert Haas wrote:

On Tue, Jan 11, 2011 at 7:55 PM, Andrew Dunstan <andrew@dunslane.net> wrote:

On 01/11/2011 07:17 PM, David E. Wheeler wrote:

On Jan 11, 2011, at 3:44 PM, Andrew Dunstan wrote:

I think there's at least a danger of breaking legacy code doing that. Say
you have some code that does a ref test on the argument, for example. The
behavior would now be changed.

I think that'd be pretty rare.

Possibly it would. But we usually try pretty hard to avoid that sort of
breakage.

By the same token, I'm not convinced it's a good idea for this
behavior to be off by default. Surely many people will altogether
fail to notice that it's an option? If we're going to have a
backward-compatibility GUC at all, ISTM that you ought to get the good
stuff unless you ask for the old way.

I think the number of people failing to notice the changes would be the same whenever we set the new or the old behavior by default. I decided to default to the the old behavior since it won't break the existing code as opposed to just hiding the good stuff, although it would slower the adoption of the new behavior.

/A

--
Alexey Klyukin
The PostgreSQL Company - Command Prompt, Inc.

#10David E. Wheeler
david@kineticode.com
In reply to: Alexey Klyukin (#8)
Re: arrays as pl/perl input arguments [PATCH]

On Jan 12, 2011, at 5:14 AM, Alexey Klyukin wrote:

You mean packing both a string representation and a reference to a single SV * value?

Dunno, I'm not a guts guy.

I haven't considered that (lack of extensive perlgus-foo) although I think that's an interesting idea. One drawback would be that it would require both conversion to a string format and to a perl reference, performing unnecessary actions during every time arrays are passed to a pl/perl function. If there is a strong dislike of the proposed 'compatibility' GUC option - I think I can change the existing patch to incorporate array string representation into the reference-holding SV quite easily.

Andrew's objections have merit. So perhaps just add this patch to the commit fest as is?

Best,

David

#11Alex Hunsaker
badalex@gmail.com
In reply to: Alexey Klyukin (#9)
Re: arrays as pl/perl input arguments [PATCH]

On Wed, Jan 12, 2011 at 06:34, Alexey Klyukin <alexk@commandprompt.com> wrote:

On Jan 12, 2011, at 4:06 AM, Robert Haas wrote:

By the same token, I'm not convinced it's a good idea for this
behavior to be off by default.  Surely many people will altogether
fail to notice that it's an option?  If we're going to have a
backward-compatibility GUC at all, ISTM that you ought to get the good
stuff unless you ask for the old way.

I think the number of people failing to notice the changes would be the same whenever we set the new or the old behavior by default. I decided to default to the the old behavior since it won't break the existing code as opposed to just hiding the good stuff, although it would slower the adoption of the new behavior.

Personally, I think the point of a compatibility GUC is that at some
point in the distant future we can get rid of it. If we default to
the old behavior thats going to be harder to do. +1 for defaulting to
the new behavior.

[ Id actually vote for _not_ having a compatibility option at all, we
change more major things than this IMHO every major release. (And even
then some major things in minor releases, for example the removal of
Safe.pm) ]

#12David E. Wheeler
david@kineticode.com
In reply to: Alex Hunsaker (#11)
Re: arrays as pl/perl input arguments [PATCH]

On Jan 12, 2011, at 11:22 AM, Alex Hunsaker wrote:

Personally, I think the point of a compatibility GUC is that at some
point in the distant future we can get rid of it. If we default to
the old behavior thats going to be harder to do. +1 for defaulting to
the new behavior.

+1

[ Id actually vote for _not_ having a compatibility option at all, we
change more major things than this IMHO every major release. (And even
then some major things in minor releases, for example the removal of
Safe.pm) ]

Yeah, but the removal of Safe.pm actually *improved* compatibility. This patch, without the GUC, would break it.

Best,

David

#13David Fetter
david@fetter.org
In reply to: Alex Hunsaker (#11)
Re: arrays as pl/perl input arguments [PATCH]

On Wed, Jan 12, 2011 at 12:22:55PM -0700, Alex Hunsaker wrote:

On Wed, Jan 12, 2011 at 06:34, Alexey Klyukin <alexk@commandprompt.com> wrote:

On Jan 12, 2011, at 4:06 AM, Robert Haas wrote:

By the same token, I'm not convinced it's a good idea for this
behavior to be off by default. �Surely many people will
altogether fail to notice that it's an option? �If we're going to
have a backward-compatibility GUC at all, ISTM that you ought to
get the good stuff unless you ask for the old way.

I think the number of people failing to notice the changes would
be the same whenever we set the new or the old behavior by
default. I decided to default to the the old behavior since it
won't break the existing code as opposed to just hiding the good
stuff, although it would slower the adoption of the new behavior.

Personally, I think the point of a compatibility GUC is that at some
point in the distant future we can get rid of it. If we default to
the old behavior thats going to be harder to do. +1 for defaulting
to the new behavior.

[ Id actually vote for _not_ having a compatibility option at all,
we change more major things than this IMHO every major release. (And
even then some major things in minor releases, for example the
removal of Safe.pm) ]

+1 for changing the behavior to something sane with loud, specific
warnings in the release notes about what will break and how.

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
iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics

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

#14Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Alex Hunsaker (#11)
Re: arrays as pl/perl input arguments [PATCH]

Excerpts from Alex Hunsaker's message of mié ene 12 16:22:55 -0300 2011:

[ Id actually vote for _not_ having a compatibility option at all, we
change more major things than this IMHO every major release. (And even
then some major things in minor releases, for example the removal of
Safe.pm) ]

I think the main question here is: how loudly is existing code going to
break? If the breakage is silent, it's going to be very problematic.
If functions fail to run at all, then we can live without the
compatibility option.

--
Álvaro Herrera <alvherre@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

#15David E. Wheeler
david@kineticode.com
In reply to: Alvaro Herrera (#14)
Re: arrays as pl/perl input arguments [PATCH]

On Jan 12, 2011, at 11:36 AM, Alvaro Herrera wrote:

[ Id actually vote for _not_ having a compatibility option at all, we
change more major things than this IMHO every major release. (And even
then some major things in minor releases, for example the removal of
Safe.pm) ]

I think the main question here is: how loudly is existing code going to
break? If the breakage is silent, it's going to be very problematic.
If functions fail to run at all, then we can live without the
compatibility option.

I suspect it'd be quiet, unfortunately, since there are a bazillion ad hoc implementations of a Perl SQL array parser, and many of them, I suspect, don't complain if the string doesn't look like an SQL array. They would just parse a string like "ARRAY(0x118ee2a0)" and return an empty array, or a NULL.

Best,

David

#16Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: David E. Wheeler (#15)
Re: arrays as pl/perl input arguments [PATCH]

Excerpts from David E. Wheeler's message of mié ene 12 16:39:56 -0300 2011:

On Jan 12, 2011, at 11:36 AM, Alvaro Herrera wrote:

[ Id actually vote for _not_ having a compatibility option at all, we
change more major things than this IMHO every major release. (And even
then some major things in minor releases, for example the removal of
Safe.pm) ]

I think the main question here is: how loudly is existing code going to
break? If the breakage is silent, it's going to be very problematic.
If functions fail to run at all, then we can live without the
compatibility option.

I suspect it'd be quiet, unfortunately, since there are a bazillion ad hoc implementations of a Perl SQL array parser, and many of them, I suspect, don't complain if the string doesn't look like an SQL array. They would just parse a string like "ARRAY(0x118ee2a0)" and return an empty array, or a NULL.

I kinda doubt that a function failing in that way would pass any
testing.

--
Álvaro Herrera <alvherre@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

#17David E. Wheeler
david@kineticode.com
In reply to: Alvaro Herrera (#16)
Re: arrays as pl/perl input arguments [PATCH]

On Jan 12, 2011, at 11:51 AM, Alvaro Herrera wrote:

I suspect it'd be quiet, unfortunately, since there are a bazillion ad hoc implementations of a Perl SQL array parser, and many of them, I suspect, don't complain if the string doesn't look like an SQL array. They would just parse a string like "ARRAY(0x118ee2a0)" and return an empty array, or a NULL.

I kinda doubt that a function failing in that way would pass any
testing.

What is this “testing” thing of which you speak?

David

#18Alexey Klyukin
alexk@commandprompt.com
In reply to: David E. Wheeler (#10)
Re: arrays as pl/perl input arguments [PATCH]

On Jan 12, 2011, at 8:52 PM, David E. Wheeler wrote:

On Jan 12, 2011, at 5:14 AM, Alexey Klyukin wrote:

You mean packing both a string representation and a reference to a single SV * value?

Dunno, I'm not a guts guy.

Well, neither me (I haven't used much of the guts api there).

I haven't considered that (lack of extensive perlgus-foo) although I think that's an interesting idea. One drawback would be that it would require both conversion to a string format and to a perl reference, performing unnecessary actions during every time arrays are passed to a pl/perl function. If there is a strong dislike of the proposed 'compatibility' GUC option - I think I can change the existing patch to incorporate array string representation into the reference-holding SV quite easily.

Andrew's objections have merit. So perhaps just add this patch to the commit fest as is?

Already done :)

/A

--
Alexey Klyukin
The PostgreSQL Company - Command Prompt, Inc.

#19Alexey Klyukin
alexk@commandprompt.com
In reply to: Alvaro Herrera (#14)
Re: arrays as pl/perl input arguments [PATCH]

On Jan 12, 2011, at 9:36 PM, Alvaro Herrera wrote:

Excerpts from Alex Hunsaker's message of mié ene 12 16:22:55 -0300 2011:

[ Id actually vote for _not_ having a compatibility option at all, we
change more major things than this IMHO every major release. (And even
then some major things in minor releases, for example the removal of
Safe.pm) ]

I think the main question here is: how loudly is existing code going to
break? If the breakage is silent, it's going to be very problematic.
If functions fail to run at all, then we can live without the
compatibility option.

Not really loud. Perl won't even complain when you try to interpret a
reference as a string.

Since almost everyone votes for making the new behavior a default option I'm
inclined to do that change, although I'm against throwing out the
compatibility option. There are many other reasons except for PL/Perl for
people to upgrade to 9.1, let's not force them to rewrite their Perl code
if they were not planning to do that.

/A

--
Alexey Klyukin
The PostgreSQL Company - Command Prompt, Inc.

#20Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: David E. Wheeler (#17)
Re: arrays as pl/perl input arguments [PATCH]

Excerpts from David E. Wheeler's message of mié ene 12 16:55:17 -0300 2011:

On Jan 12, 2011, at 11:51 AM, Alvaro Herrera wrote:

I suspect it'd be quiet, unfortunately, since there are a bazillion ad hoc implementations of a Perl SQL array parser, and many of them, I suspect, don't complain if the string doesn't look like an SQL array. They would just parse a string like "ARRAY(0x118ee2a0)" and return an empty array, or a NULL.

I kinda doubt that a function failing in that way would pass any
testing.

What is this “testing” thing of which you speak?

Ha ha ha :-(

I wonder if there's a way to overload the string representation of the
array so that it throws an error.

--
Álvaro Herrera <alvherre@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

#21Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alexey Klyukin (#19)
#22Andrew Dunstan
andrew@dunslane.net
In reply to: Tom Lane (#21)
#23Robert Haas
robertmhaas@gmail.com
In reply to: Andrew Dunstan (#22)
#24David E. Wheeler
david@kineticode.com
In reply to: Robert Haas (#23)
#25Tom Lane
tgl@sss.pgh.pa.us
In reply to: David E. Wheeler (#4)
#26Tom Lane
tgl@sss.pgh.pa.us
In reply to: David E. Wheeler (#10)
#27Alex Hunsaker
badalex@gmail.com
In reply to: Tom Lane (#26)
#28Alex Hunsaker
badalex@gmail.com
In reply to: Andrew Dunstan (#22)
#29Martijn van Oosterhout
kleptog@svana.org
In reply to: Alex Hunsaker (#27)
#30Alex Hunsaker
badalex@gmail.com
In reply to: Martijn van Oosterhout (#29)
#31Stephen J. Butler
stephen.butler@gmail.com
In reply to: Martijn van Oosterhout (#29)
#32David E. Wheeler
david@kineticode.com
In reply to: Stephen J. Butler (#31)
#33Alex Hunsaker
badalex@gmail.com
In reply to: Alexey Klyukin (#18)
#34Alex Hunsaker
badalex@gmail.com
In reply to: Alex Hunsaker (#33)
#35Alexey Klyukin
alexk@commandprompt.com
In reply to: Alex Hunsaker (#34)
#36Alex Hunsaker
badalex@gmail.com
In reply to: Alexey Klyukin (#35)
#37Alexey Klyukin
alexk@commandprompt.com
In reply to: Alex Hunsaker (#36)
#38Alex Hunsaker
badalex@gmail.com
In reply to: Alexey Klyukin (#37)
#39Alex Hunsaker
badalex@gmail.com
In reply to: Alexey Klyukin (#37)
#40Alexey Klyukin
alexk@commandprompt.com
In reply to: Alex Hunsaker (#39)
#41Alex Hunsaker
badalex@gmail.com
In reply to: Alexey Klyukin (#40)
#42Alexey Klyukin
alexk@commandprompt.com
In reply to: Alex Hunsaker (#41)
#43Alex Hunsaker
badalex@gmail.com
In reply to: Alexey Klyukin (#42)
#44Tim Bunce
Tim.Bunce@pobox.com
In reply to: Alexey Klyukin (#1)
#45Alexey Klyukin
alexk@commandprompt.com
In reply to: Tim Bunce (#44)
#46David E. Wheeler
david@kineticode.com
In reply to: Alexey Klyukin (#45)
#47Tim Bunce
Tim.Bunce@pobox.com
In reply to: Alexey Klyukin (#45)
#48Andrew Dunstan
andrew@dunslane.net
In reply to: Tim Bunce (#47)
#49Peter Eisentraut
peter_e@gmx.net
In reply to: Tim Bunce (#47)
#50Alex Hunsaker
badalex@gmail.com
In reply to: Alexey Klyukin (#45)
#51Alex Hunsaker
badalex@gmail.com
In reply to: Alexey Klyukin (#42)
#52Andrew Dunstan
andrew@dunslane.net
In reply to: Alex Hunsaker (#51)
#53Alex Hunsaker
badalex@gmail.com
In reply to: Andrew Dunstan (#52)
#54Alex Hunsaker
badalex@gmail.com
In reply to: Alex Hunsaker (#51)
#55Andrew Dunstan
andrew@dunslane.net
In reply to: Andrew Dunstan (#48)
#56Alexey Klyukin
alexk@commandprompt.com
In reply to: Alex Hunsaker (#54)
#57Alex Hunsaker
badalex@gmail.com
In reply to: Alexey Klyukin (#56)
#58Alex Hunsaker
badalex@gmail.com
In reply to: Alex Hunsaker (#57)
#59Alex Hunsaker
badalex@gmail.com
In reply to: Alex Hunsaker (#57)
#60Alexey Klyukin
alexk@commandprompt.com
In reply to: Alex Hunsaker (#59)
#61Tim Bunce
Tim.Bunce@pobox.com
In reply to: Andrew Dunstan (#55)
#62Alex Hunsaker
badalex@gmail.com
In reply to: Alexey Klyukin (#60)
#63Alexey Klyukin
alexk@commandprompt.com
In reply to: Alex Hunsaker (#62)
#64Andrew Dunstan
andrew@dunslane.net
In reply to: Alexey Klyukin (#63)
#65Alexey Klyukin
alexk@commandprompt.com
In reply to: Andrew Dunstan (#64)
#66Alexey Klyukin
alexk@commandprompt.com
In reply to: Alexey Klyukin (#65)
#67Alex Hunsaker
badalex@gmail.com
In reply to: Alexey Klyukin (#66)
#68Alexey Klyukin
alexk@commandprompt.com
In reply to: Alex Hunsaker (#67)
#69David E. Wheeler
david@kineticode.com
In reply to: Alexey Klyukin (#68)
#70Alexey Klyukin
alexk@commandprompt.com
In reply to: David E. Wheeler (#69)
#71David E. Wheeler
david@kineticode.com
In reply to: Alexey Klyukin (#70)
#72Tim Bunce
Tim.Bunce@pobox.com
In reply to: Alexey Klyukin (#66)
#73Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Tim Bunce (#72)
#74Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Alexey Klyukin (#68)
#75Andrew Dunstan
andrew@dunslane.net
In reply to: Alvaro Herrera (#74)
#76Alex Hunsaker
badalex@gmail.com
In reply to: Alvaro Herrera (#73)
#77Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Alex Hunsaker (#67)
#78Alex Hunsaker
badalex@gmail.com
In reply to: Alvaro Herrera (#77)
#79Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Alvaro Herrera (#74)