http://www.perlmonks.org?node_id=497618

srdst13 has asked for the wisdom of the Perl Monks concerning the following question:

I have a rather large postgres database with multiple schemas in it. I would like to use Class::DBI::Loader to autogenerate the Class::DBI classes, but only for a single schema. Under DBI, I would typically do something like:
$dbh->do("set search_path to $SCHEMA")
to limit access to a given schema. Is there a way to do this with Class::DBI::Loader?

Thanks,
Sean

Replies are listed 'Best First'.
Re: Class::DBI::Loader and Postgres schemas
by ides (Deacon) on Oct 05, 2005 at 15:39 UTC
    Not currently, but it appears you can hack it to work. In Class::DBI::Loader::Pg.pm there is a line:
    return $dbh->tables( undef, "public", "", "table", { noprefix => 1, pg_noprefix => 1 } );
    Replace the "public" with the name of your schema and it should work as you want.

    UPDATE: I've sent a patch off to the maintainer for this so hopefully it will be in the next release for you.

    Frank Wiles <frank@wiles.org>
    http://www.wiles.org

      Always good to hack. Thanks for sending off the patch. I guess it should also be possible to override db_main using another base class (?), but I haven't tried that yet.

      Sean