Re: Postgres perl module namespace

Noah Misch <noah@leadboat.com>

From: Noah Misch <noah@leadboat.com>
To: Andrew Dunstan <andrew@dunslane.net>
Cc: Robert Haas <robertmhaas@gmail.com>, Michael Paquier <michael@paquier.xyz>, Tom Lane <tgl@sss.pgh.pa.us>, Alvaro Herrera <alvherre@alvh.no-ip.org>, Mark Dilger <mark.dilger@enterprisedb.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-09-04T06:19:49Z
Lists: pgsql-hackers
On Fri, Sep 03, 2021 at 03:34:24PM -0400, Andrew Dunstan wrote:
> On 8/25/21 10:08 AM, Robert Haas wrote:
> > On Wed, Aug 25, 2021 at 1:48 AM Michael Paquier <michael@paquier.xyz> wrote:
> >> On Mon, Aug 23, 2021 at 03:39:15PM -0400, Robert Haas wrote:
> >>> On Mon, Aug 23, 2021 at 3:03 PM Andrew Dunstan <andrew@dunslane.net> wrote:
> >>>> OK, I count 3 in favor of changing to PgTest::Cluster, 1 against,
> >>>> remainder don't care.
> >>> I'd have gone with something starting with Postgres:: ... but I don't care much.
> >> PgTest seems like a better choice to me, as "Postgres" could be used
> >> for other purposes than a testing framework, and the argument that
> >> multiple paths makes things annoying for hackers is sensible.
> > I mean, it's a hierarchical namespace. The idea is you do
> > Postgres::Test or Postgres::<whatever> and other people using the
> > Postgres database can use other parts of it. But again, not really
> > worth arguing about.
> 
> I think I have come around to this POV. Here's a patch. The worst of it
> is changes like this:
> 
> -   my $node2 = PostgresNode->new('replica');
> +   my $node2 = Postgres::Test::Cluster->new('replica');
> ...
> -   TestLib::system_or_bail($tar, 'xf', $tblspc_tars[0], '-C', $repTsDir);
> +   Postgres::Test::Utils::system_or_bail($tar, 'xf', $tblspc_tars[0], '-C', $repTsDir);

plperl uses PostgreSQL:: as the first component of its Perl module namespace.
We shouldn't use both PostgreSQL:: and Postgres:: in the same source tree, so
this change should not use Postgres::.



Commits

  1. Fix PostgreSQL::Test aliasing for Perl v5.10.1.

  2. For PostgreSQL::Test compatibility, alias entire package symbol tables.

  3. Make PostgresNode easily subclassable