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=9f18fcc16950b05243b390afad91cf4ac7790b23;hb=dc783fab900d073db1fb0e86b709cbb65bd364b7;hp=239ad44fc3e7ba63683b5472a6964675d8a56bac;hpb=4e793de74348432fc7d185641bac24a47005e01e;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 239ad44..9f18fcc 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.07004'; +our $VERSION = '0.07045'; =head1 NAME @@ -22,15 +21,44 @@ Proxy for L when using L See L for usage information. +=cut + +# 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_type_name { + my ($self, $type_num) = @_; + + my $dbh = $self->schema->storage->dbh; + + local $dbh->{LongReadLen} = 100_000; + local $dbh->{LongTruncOk} = 1; + + 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 L, L, L, L -=head1 AUTHOR +=head1 AUTHORS -See L and L. +See L. =head1 LICENSE