From:
"Stephen J(dot) Butler" <stephen(dot)butler(at)gmail(dot)com>
To:
Martijn van Oosterhout <kleptog(at)svana(dot)org>
Cc:
Alex Hunsaker <badalex(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "David E(dot) Wheeler" <david(at)kineticode(dot)com>, Alexey Klyukin <alexk(at)commandprompt(dot)com>, pgsql-hackers(at)postgresql(dot)org, Andrew Dunstan <andrew(at)dunslane(dot)net>
Subject:
Re: arrays as pl/perl input arguments [PATCH]
Date:
2011-01-14 00:15:29
Message-ID:
AANLkTi=9Urg4gaRfk14Morm+fO5qZQjiiOGZMAt0g9LL@mail.gmail.com (view raw or flat )
Thread:
2011-01-11 22:25:35 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-01-11 23:07:53 from "David E(dot) Wheeler" <david(at)kineticode(dot)com>
2011-01-11 23:44:53 from Andrew Dunstan <andrew(at)dunslane(dot)net>
2011-01-12 00:17:05 from "David E(dot) Wheeler" <david(at)kineticode(dot)com>
2011-01-12 00:55:49 from Andrew Dunstan <andrew(at)dunslane(dot)net>
2011-01-12 02:06:09 from Robert Haas <robertmhaas(at)gmail(dot)com>
2011-01-12 04:45:51 from Andrew Dunstan <andrew(at)dunslane(dot)net>
2011-01-12 13:34:06 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-01-12 19:22:55 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-01-12 19:27:05 from "David E(dot) Wheeler" <david(at)kineticode(dot)com>
2011-01-12 19:27:46 from David Fetter <david(at)fetter(dot)org>
2011-01-12 19:36:17 from Alvaro Herrera <alvherre(at)commandprompt(dot)com>
2011-01-12 19:39:56 from "David E(dot) Wheeler" <david(at)kineticode(dot)com>
2011-01-12 19:51:43 from Alvaro Herrera <alvherre(at)commandprompt(dot)com>
2011-01-12 19:55:17 from "David E(dot) Wheeler" <david(at)kineticode(dot)com>
2011-01-12 20:17:08 from Alvaro Herrera <alvherre(at)commandprompt(dot)com>
2011-01-12 20:13:25 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-01-12 21:22:03 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2011-01-12 21:45:05 from Andrew Dunstan <andrew(at)dunslane(dot)net>
2011-01-12 23:29:28 from Robert Haas <robertmhaas(at)gmail(dot)com>
2011-01-12 23:37:34 from "David E(dot) Wheeler" <david(at)kineticode(dot)com>
2011-01-13 07:28:54 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-01-13 04:57:20 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2011-01-12 13:14:17 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-01-12 18:52:42 from "David E(dot) Wheeler" <david(at)kineticode(dot)com>
2011-01-12 20:04:56 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-01-15 22:48:28 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-01-26 18:45:52 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-01-26 19:44:26 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-01-26 20:08:03 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-01-26 20:35:06 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-01-26 22:44:05 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-01-27 07:31:47 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-01-27 10:38:53 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-01-28 22:27:06 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-01-31 08:34:23 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-02-01 17:04:47 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-02-04 01:29:59 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-02-04 17:29:59 from Andrew Dunstan <andrew(at)dunslane(dot)net>
2011-02-04 18:43:34 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-02-06 07:43:51 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-02-08 15:18:22 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-02-08 17:33:37 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-02-08 18:31:25 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-02-09 01:44:00 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-02-09 15:24:23 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-02-09 19:28:21 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-02-10 13:15:59 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-02-10 19:44:09 from Andrew Dunstan <andrew(at)dunslane(dot)net>
2011-02-10 21:26:58 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-02-12 00:17:12 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-02-12 07:53:14 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-02-15 14:39:07 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-02-15 17:45:22 from "David E(dot) Wheeler" <david(at)kineticode(dot)com>
2011-02-15 17:49:17 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-02-15 17:52:26 from "David E(dot) Wheeler" <david(at)kineticode(dot)com>
2011-02-16 22:54:07 from Alvaro Herrera <alvherre(at)commandprompt(dot)com>
2011-02-16 22:57:13 from Andrew Dunstan <andrew(at)dunslane(dot)net>
2011-02-18 02:12:29 from Alvaro Herrera <alvherre(at)commandprompt(dot)com>
2011-02-17 23:18:27 from Alvaro Herrera <alvherre(at)commandprompt(dot)com>
2011-02-18 00:36:45 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-02-16 17:08:11 from Tim Bunce <Tim(dot)Bunce(at)pobox(dot)com>
2011-02-16 19:21:58 from Alvaro Herrera <alvherre(at)commandprompt(dot)com>
2011-02-17 06:12:46 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-01-13 05:12:47 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2011-01-13 07:06:33 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-01-13 08:06:45 from Martijn van Oosterhout <kleptog(at)svana(dot)org>
2011-01-13 16:55:44 from Alex Hunsaker <badalex(at)gmail(dot)com>
2011-01-14 00:15:29 from "Stephen J(dot) Butler" <stephen(dot)butler(at)gmail(dot)com>
2011-01-14 00:22:31 from "David E(dot) Wheeler" <david(at)kineticode(dot)com>
2011-02-02 17:16:00 from Tim Bunce <Tim(dot)Bunce(at)pobox(dot)com>
2011-02-03 12:23:32 from Alexey Klyukin <alexk(at)commandprompt(dot)com>
2011-02-03 16:52:50 from "David E(dot) Wheeler" <david(at)kineticode(dot)com>
2011-02-03 18:01:16 from Tim Bunce <Tim(dot)Bunce(at)pobox(dot)com>
2011-02-03 18:20:48 from Andrew Dunstan <andrew(at)dunslane(dot)net>
2011-02-08 14:40:38 from Andrew Dunstan <andrew(at)dunslane(dot)net>
2011-02-09 19:16:35 from Tim Bunce <Tim(dot)Bunce(at)pobox(dot)com>
2011-02-03 18:24:47 from Peter Eisentraut <peter_e(at)gmx(dot)net>
2011-02-03 20:21:42 from Alex Hunsaker <badalex(at)gmail(dot)com>
Lists:
pgsql-hackers
On Thu, Jan 13, 2011 at 2:06 AM, Martijn van Oosterhout
<kleptog(at)svana(dot)org> wrote:
> I played with this a little and it is fairly easy to make a variable
> such that $a is the string representation and $a[0] the first value of
> the array. The problem is that you can't pass such a variable into a
> subroutine.
I played with this too:
#!/usr/bin/perl -w
use strict;
package Pg::ArrayArg;
use overload
'""' => \&as_s,
'@{}' => \&as_a;
sub new {
my $proto = shift;
my $class = ref $proto || $proto;
bless {
string => shift,
array => shift
}, $class;
}
sub as_s {
shift->{ 'string' };
}
sub as_a {
shift->{ 'array' };
}
package main;
my $aa = Pg::ArrayArg->new( '{1,2}', [ 1, 2 ] );
printf "ref = %s\n", ref $aa;
print "string = $aa\n";
printf "string = %s\n", $aa;
printf "array index = (%s, %s)\n", $aa->[ 0 ], $aa->[ 1 ];
printf "array_ref = %s\n", scalar @$aa;
print "regexp test = ";
if ($aa =~ /^{(.*)}$/) {
print "looks like array\n";
printf "join of split = %s\n", join ';', split /,/, $1;
} else {
print "doesn't look like array\n";
}
Suppose one of these compatibility objects is passed into legacy code
as $_[0]. The problem is that 'ref $_[0]' will return 'Pg::ArrayArg'
instead of what it used to, '' (empty string). Other than that, I
think it performs as people would expect.
You could even change 'as_s' to generate the string on the fly as
requested instead of generating both representations at instantiation.
Just my $0.02.
In response to
Responses
pgsql-hackers by date
Next :From: Kevin GrittnerDate: 2011-01-14 00:21:43
Subject : Re: SSI patch version 8
Previous :From : Tom LaneDate : 2011-01-14 00:15:07
Subject : Re: Error code for "terminating connection due to conflict with recovery"