The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Silki::Role::Schema::DebugUTF8;
{
  $Silki::Role::Schema::DebugUTF8::VERSION = '0.29';
}

use namespace::autoclean;

use Moose::Role;
use Encode ();

before new => sub {
    warn "new\n";
    shift->_debug_utf8(@_);
};

sub _get_column_values {
    my $self   = shift;
    my $select = shift;
    my $bind   = shift;

    my $dbh = $self->_dbh($select);

    my $sth = $dbh->prepare( $select->sql($dbh) );

    $sth->execute( @{$bind} );

    my %col_values;
    $sth->bind_columns( \( @col_values{ @{ $sth->{NAME} } } ) );

    my $fetched = $sth->fetch();

    $sth->finish();

    return unless $fetched;

    warn "_get_column_values\n";
    $self->_debug_utf8(%col_values);

    $self->_set_column_values_from_hashref( \%col_values );

    return \%col_values;
}

sub _debug_utf8 {
    my $inv = shift;

    my %data = ref $_[0] ? %{ $_[0] } : @_;

    my $class = ref $inv || $inv;
    warn "$class\n";

    for my $k ( sort keys %data ) {
        next if $k eq 'cached_content';
        warn "    $k => $data{$k} - ",
            ( Encode::is_utf8( $data{$k} ) || 0 ), "\n";
    }
    warn "\n\n";
}

1;