Hi there,
I am trying to get the databases from a running PostgreSQL database.
However, this piece of code gives nothing:
my @dbs=DBI->data_sources("Pg)";
I tried to trace the situation and ended up here in DBI module:

DBD::Pg::dr::data_sources(/home/salmonix/perl5/lib/perl5/x86_64-linux-thread-multi/DBD/Pg.pm:189):
189: my $SQL = 'SELECT pg_catalog.quote_ident(datname) FROM
pg_catalog.pg_database ORDER BY 1';
190: my $sth = $dbh->prepare($SQL);
191: $sth->execute() or die $DBI::errstr;
192: $attr and $attr = ";$attr";
193: my @sources = map { "dbi:Pg:dbname=$_->[0]$attr" }
@{$sth->fetchall_arrayref()};
(happens 6 times)
194: $dbh->disconnect;
195: return @sources;

At this point I check @sources, if that returns what is expected:
  DB<2> x \...@sources
0  ARRAY(0x3167a68)
   0  'dbi:Pg:dbname=postgres'
   1  'dbi:Pg:dbname=template0'
   2  'dbi:Pg:dbname=template1'
   3  'dbi:Pg:dbname=test'

So far so good. Step on.

  DB<3> s
DBI::data_sources(/home/salmonix/perl5/lib/perl5/x86_64-linux-thread-multi/DBI.pm:1043):
1043:    return @ds;
  DB<3> v
1040:    my ($class, $driver, @other) = @_;
1041:    my $drh = $class->install_driver($driver);
1042:    my @ds = $drh->data_sources(@other);
1043==>    return @ds;
1044 }

Check @ds:

  DB<3> x \...@ds
0  ARRAY(0x20cd0e8)
     empty array
  DB<4>

And this empty array is returned to my programline. ?????????????
Could anyone give me any idea why?

Installation is in users local folder, with

export MODULEBUILDRC="/home/salmonix/perl5/.modulebuildrc"
export PERL_MM_OPT="INSTALL_BASE=/home/salmonix/perl5"
export
PERL5LIB="/home/salmonix/perl5/lib/perl5/x86_64-linux-thread-multi:/home/salmonix/perl5/lib/perl5"
export PATH="/home/salmonix/perl5/bin:$PATH"
export MANPATH="/home/salmonix/perl5/man:$MANPATH"
export INSTALL_BASE="/home/salmonix/perl5"

in .bashrc.
User 'user' - the owner of the script - has right to connect to the
PostgreSQL database, create database etc.
Using Perl 5.12. on Gentoo amd64.

Thanx!
Laslo

Reply via email to