DBIO-PostgreSQL
view release on metacpan or search on metacpan
$dbh->do(
'INSERT INTO utf8_test (label, content) VALUES (?, ?)',
undef, $label, $str,
);
}
# --- Part 1: raw DBI SELECT ---
for my $pair (@strings) {
my ($label, $expected) = @$pair;
my ($got) = $dbh->selectrow_array(
'SELECT content FROM utf8_test WHERE label = ?', undef, $label,
);
ok defined $got, "DBI: row returned for: $label";
ok utf8::is_utf8($got), "DBI: utf8 flag set: $label";
is $got, $expected, "DBI: round-trip value correct: $label";
is length($got), length($expected),
"DBI: character length correct: $label";
}
# --- Part 2: DBIO ResultSet ---
my $rs = $schema->resultset('Utf8Test');
for my $pair (@strings) {
my ($label, $expected) = @$pair;
my $row = $rs->search({ label => $label })->first;
ok $row, "DBIO: row returned for: $label";
ok utf8::is_utf8($row->content), "DBIO: utf8 flag set: $label";
is $row->content, $expected, "DBIO: round-trip value correct: $label";
}
# --- Part 3: UPDATE round-trip via DBIO ---
{
my $new_val = "\x{1f680} updated \x{2665}";
my $row = $rs->search({ label => 'ASCII baseline' })->first;
$row->update({ content => $new_val });
$row->discard_changes;
ok utf8::is_utf8($row->content), 'DBIO UPDATE: utf8 flag set after reload';
is $row->content, $new_val, 'DBIO UPDATE: round-trip correct';
}
# --- Part 4: CREATE via DBIO ---
{
my $new_str = "DBIO \x{2665} PostgreSQL \x{1f418}";
my $new_row = $rs->create({ label => 'dbio_create', content => $new_str });
ok utf8::is_utf8($new_row->content), 'DBIO CREATE: utf8 flag set on fresh row';
is $new_row->content, $new_str, 'DBIO CREATE: content correct';
$new_row->discard_changes;
ok utf8::is_utf8($new_row->content), 'DBIO CREATE: utf8 flag after discard_changes';
is $new_row->content, $new_str, 'DBIO CREATE: content correct after reload';
}
# --- Part 5: LIKE search with unicode pattern ---
{
my $count = $rs->search({ content => { like => "%\x{1f600}%" } })->count;
cmp_ok $count, '>=', 1, 'LIKE search with unicode pattern returns results';
}
done_testing;
( run in 3.458 seconds using v1.01-cache-2.11-cpan-c966e8aa7e8 )