DB-Object
view release on metacpan or search on metacpan
lib/DB/Object/Postgres.pm view on Meta::CPAN
my $ver = $sth->fetchrow;
$sth->finish;
# e.g.:
# 12.1 (Ubuntu 12.1-1.pgdg16.04+1)
# 10.4
$ver =~ s/^(\d+(?:\.\S+)?).*?$/$1/;
# We cache it
$self->{_db_version} = version->parse( $ver );
return( $ver );
}
sub _check_connect_param
{
my $self = shift( @_ );
my $param = $self->SUPER::_check_connect_param( @_ ) || return( $self->pass_error );
# This is also what the psql command line tool does
$param->{login} = ( getpwuid( $> ) )[0] if( !$param->{login} );
$param->{database} = 'postgres' if( !$param->{database} );
# By default
$param->{port} = 5432 if( !CORE::exists( $param->{port} ) );
return( $param );
}
# Called from connect once all check was done to see if there are default to set
sub _check_default_option
{
my $self = shift( @_ );
my $opts = $self->_get_args_as_hash( @_ );
return( $self->error( "Provided option is not a hash reference." ) ) if( !$self->_is_hash( $opts => 'strict' ) );
$opts->{client_encoding} = 'utf8' if( !CORE::exists( $opts->{client_encoding} ) );
# Enabled but with auto-guess
$opts->{pg_enable_utf8} = -1 if( !CORE::exists( $opts->{pg_enable_utf8} ) && ( $opts->{client_encoding} eq 'utf8' || $opts->{client_encoding} eq 'utf-8' ) );
return( $opts );
}
# Called by _check_connect_param
sub _connection_options
{
my $self = shift( @_ );
my $param = shift( @_ );
my @pg_params = grep( /^pg_/, keys( %$param ) );
my $opt = $self->SUPER::_connection_options( $param ) || return( $self->pass_error );
@$opt{ @pg_params } = @$param{ @pg_params };
return( $opt );
}
# NOTE: sub _connection_params2hash_driver is not necessary here. We use our parent's one.
# Called by _check_connect_param
sub _connection_parameters
{
my $self = shift( @_ );
my $param = shift( @_ );
my $core = [qw(
db login passwd host port driver database schema server opt uri debug
cache_connections cache_dir cache_query cache_table connect_via unknown_field
use_cache
)];
my @pg_params = grep( /^pg_/, keys( %$param ) );
# See DBD::mysql for the list of valid parameters
# E.g.: mysql_client_found_rows, mysql_compression mysql_connect_timeout mysql_write_timeout mysql_read_timeout mysql_init_command mysql_skip_secure_auth mysql_read_default_file mysql_read_default_group mysql_socket mysql_ssl mysql_ssl_client_key...
push( @$core, @pg_params );
return( $core );
}
sub _dsn
{
my $self = shift( @_ );
my @params = ();
# See pg_service.conf
if( $self->{service} )
{
@params = ( sprintf( 'dbi:%s:%s', @$self{ qw( driver service ) } ) );
}
else
{
# It ends with ':'
@params = ( sprintf( 'dbi:%s:', $self->{driver} ) );
}
push( @params, sprintf( 'dbname=%s', $self->{database} ) ) if( $self->{database} );
push( @params, sprintf( 'host=%s', $self->{host} ) ) if( $self->{host} );
push( @params, sprintf( 'port=%d', $self->{port} ) ) if( $self->{port} );
# push( @params, "options=$options" ) if( length( $options ) );
return( join( ';', @params ) );
}
# NOTE: _cache_this -> See DB::Object
# sub _cache_this
# NOTE _clean_statement -> DB::Object
# sub _clean_statement
# NOTE _cleanup -> DB::Object
# sub _cleanup
# NOTE _dbi_connect -> DB::Object
# sub _dbi_connect
# NOTE _make_sth -> DB::Object
# sub _make_sth
sub _placeholder_regexp { return( $PLACEHOLDER_REGEXP ) }
# Moved to DB::Object::Postgres::Query
# sub _query_components
# See DB::Object. The meat of it is really in DB::Object::Query
# sub _reset_query
# See DB::Object
# sub _save_bind
# See DB::Object
# sub _value2bind
# AUTOLOAD is inherited
# AUTOLOAD
# NOTE: DESTROY
DESTROY
{
( run in 0.885 second using v1.01-cache-2.11-cpan-5a3173703d6 )