use Class::C3;
use Carp::Clan qw/^DBIx::Class/;
-our $VERSION = '0.04999_14';
+our $VERSION = '0.05003';
=head1 NAME
my $dbh = $self->schema->storage->dbh;
my @tables = $dbh->tables(undef, $self->db_schema, $table, $type);
- my $qt = qr/\Q$self->{_quoter}\E/;
+ my $qt = qr/[\Q$self->{_quoter}\E"'`\[\]]/;
- if ($self->{_quoter} && $tables[0] =~ /$qt/) {
+ my $all_tables_quoted = (grep /$qt/, @tables) == @tables;
+
+ if ($self->{_quoter} && $all_tables_quoted) {
s/.* $qt (?= .* $qt)//xg for @tables;
} else {
s/^.*\Q$self->{_namesep}\E// for @tables;
eval {
my $sth = $dbh->column_info( undef, $self->db_schema, $table, '%' );
while ( my $info = $sth->fetchrow_hashref() ){
- my %column_info;
- $column_info{data_type} = $info->{TYPE_NAME};
- $column_info{size} = $info->{COLUMN_SIZE};
- $column_info{is_nullable} = $info->{NULLABLE} ? 1 : 0;
- $column_info{default_value} = $info->{COLUMN_DEF};
+ my $column_info = {};
+ $column_info->{data_type} = $info->{TYPE_NAME};
+ $column_info->{size} = $info->{COLUMN_SIZE};
+ $column_info->{is_nullable} = $info->{NULLABLE} ? 1 : 0;
+ $column_info->{default_value} = $info->{COLUMN_DEF};
my $col_name = $info->{COLUMN_NAME};
$col_name =~ s/^\"(.*)\"$/$1/;
my $extra_info = $self->_extra_column_info($info) || {};
+ $column_info = { %$column_info, %$extra_info };
- $result{$col_name} = { %column_info, %$extra_info };
+ $result{$col_name} = $column_info;
}
$sth->finish;
};
$sth->execute;
my @columns = @{$sth->{NAME_lc}};
for my $i ( 0 .. $#columns ){
- my %column_info;
- $column_info{data_type} = $sth->{TYPE}->[$i];
- $column_info{size} = $sth->{PRECISION}->[$i];
- $column_info{is_nullable} = $sth->{NULLABLE}->[$i] ? 1 : 0;
-
- if ($column_info{data_type} =~ m/^(.*?)\((.*?)\)$/) {
- $column_info{data_type} = $1;
- $column_info{size} = $2;
+ my $column_info = {};
+ $column_info->{data_type} = $sth->{TYPE}->[$i];
+ $column_info->{size} = $sth->{PRECISION}->[$i];
+ $column_info->{is_nullable} = $sth->{NULLABLE}->[$i] ? 1 : 0;
+
+ if ($column_info->{data_type} =~ m/^(.*?)\((.*?)\)$/) {
+ $column_info->{data_type} = $1;
+ $column_info->{size} = $2;
}
my $extra_info = $self->_extra_column_info($table, $columns[$i], $sth, $i) || {};
+ $column_info = { %$column_info, %$extra_info };
- $result{$columns[$i]} = { %column_info, %$extra_info };
+ $result{$columns[$i]} = $column_info;
}
$sth->finish;