X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FDBI%2FODBC%2FFirebird.pm;h=069621cde947dd4776a52fdcebe9c38eb4667f5b;hb=7c2059da9f662c629f53eca5cef10f66380f77b5;hp=ccabbaabf24ee92f66bde415096b432c2bf73ea9;hpb=23024b3ffa5040853f6772b80590f26343dfece7;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/lib/DBIx/Class/Schema/Loader/DBI/ODBC/Firebird.pm b/lib/DBIx/Class/Schema/Loader/DBI/ODBC/Firebird.pm index ccabbaa..069621c 100644 --- a/lib/DBIx/Class/Schema/Loader/DBI/ODBC/Firebird.pm +++ b/lib/DBIx/Class/Schema/Loader/DBI/ODBC/Firebird.pm @@ -6,10 +6,9 @@ use base qw/ DBIx::Class::Schema::Loader::DBI::ODBC DBIx::Class::Schema::Loader::DBI::InterBase /; -use Carp::Clan qw/^DBIx::Class/; use mro 'c3'; -our $VERSION = '0.07010'; +our $VERSION = '0.07022'; =head1 NAME @@ -26,7 +25,7 @@ See L for usage information. # Some (current) versions of the ODBC driver have a bug where ->type_info breaks # with "data truncated". This "fixes" it, but some type names are truncated. -sub _dbh_type_info { +sub _dbh_type_info_type_name { my ($self, $type_num) = @_; my $dbh = $self->schema->storage->dbh; @@ -34,7 +33,21 @@ sub _dbh_type_info { local $dbh->{LongReadLen} = 100_000; local $dbh->{LongTruncOk} = 1; - return $dbh->type_info($type_num); + my $type_info = $dbh->type_info($type_num); + + return undef if not $type_info; + + my $type_name = $type_info->{TYPE_NAME}; + + # fix up truncated type names + if ($type_name eq "VARCHAR(x) CHARACTER SET UNICODE_\0") { + return 'VARCHAR(x) CHARACTER SET UNICODE_FSS'; + } + elsif ($type_name eq "BLOB SUB_TYPE TEXT CHARACTER SET \0") { + return 'BLOB SUB_TYPE TEXT CHARACTER SET UNICODE_FSS'; + } + + return $type_name; } =head1 SEE ALSO