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=f5325e7047a1b5c3fdec7cc48f4036cb7f5448a4;hb=900628605efdbced5dcfdbbab0022b204aa93e14;hp=aeed566d8a2fbe28250e31cdd26719abb6c08cc4;hpb=6b1d4f76b756e4b4119153a1f1e8a7bd59ad4e87;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 aeed566..f5325e7 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 Class::C3; +use mro 'c3'; -our $VERSION = '0.07001'; +our $VERSION = '0.07044'; =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