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=ea092eec933f035f276cc60f801a5b8237684cb8;hb=46564a42215c5309753f3e0609ae1adddf68d083;hp=3837cebf77195f2bc7bbab8c0968d119c9845127;hpb=3bdcf490c99abda52aea5346fddb6f9f6c43bb2c;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 3837ceb..ea092ee 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.07008'; +our $VERSION = '0.07048_01'; =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