}
sub _get_server_version {
- shift->_get_dbh->get_info(18);
+ shift->_dbh_get_info(18);
+}
+
+sub _dbh_get_info {
+ my ($self, $info) = @_;
+
+ return try { $self->_get_dbh->get_info($info) } || undef;
}
sub _determine_driver {
# get the schema/table separator:
# '.' when SQL naming is active
# '/' when system naming is active
- my $sep = $dbh->get_info(41);
+ my $sep = $self->_dbh_get_info(41);
my $sth = $dbh->prepare_cached(
"SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM${sep}SYSDUMMY1", {}, 3);
$sth->execute();
return {
limit_dialect => 'FetchFirst',
- name_sep => $dbh->get_info(41)
+ name_sep => $self->_dbh_get_info(41)
};
});
}
$dsn = '' if ref $dsn eq 'CODE';
- my $dbh = $self->_get_dbh;
-
return 1 if $dsn =~ /driver=FreeTDS/i
- || (try { $dbh->get_info(6) }||'') =~ /tdsodbc/i;
+ || ($self->_dbh_get_info(6)||'') =~ /tdsodbc/i;
return 0;
}
get_dbms_capability
set_dbms_capability
_dbh_details
+ _dbh_get_info
sql_limit_dialect
sql_quote_char
_inner_join_to_node
_group_over_selection
- _prefetch_autovalues
_extract_order_criteria
+
+ _prefetch_autovalues
+
_max_column_bytesize
_is_lob_type
);
my $maker = $self->next::method (@_);
# mysql 3 does not understand a bare JOIN
- my $mysql_ver = $self->_get_dbh->get_info(18);
+ my $mysql_ver = $self->_dbh_get_info(18);
$maker->{_default_jointype} = 'INNER' if $mysql_ver =~ /^3/;
}