summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormkanat%bugzilla.org <>2006-12-30 08:16:22 +0100
committermkanat%bugzilla.org <>2006-12-30 08:16:22 +0100
commit0ee02c0279517257feecad7ae787b9c49d8710da (patch)
tree7745328e17a9c6cb7c0d6860b725ed28d24c7241
parentc712d457006fbf7c29bd621549db7a732131ecb8 (diff)
downloadbugzilla-0ee02c0279517257feecad7ae787b9c49d8710da.tar.gz
bugzilla-0ee02c0279517257feecad7ae787b9c49d8710da.tar.xz
Bug 363371: It is hard to determine which row has a failed encoding, with recode.pl --guess
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=justdave, a=justdave
-rwxr-xr-xcontrib/recode.pl13
1 files changed, 11 insertions, 2 deletions
diff --git a/contrib/recode.pl b/contrib/recode.pl
index 741c62e2a..49e824f6d 100755
--- a/contrib/recode.pl
+++ b/contrib/recode.pl
@@ -251,6 +251,13 @@ foreach my $table ($dbh->bz_table_list_real) {
my $data = shift @result;
my $digest = md5_base64($data);
+ my @primary_keys = reverse split(',', $pk);
+ # We copy the array so that we can pop things from it without
+ # affecting the original.
+ my @pk_data = @result;
+ my $pk_line = join (', ',
+ map { "$_ = " . pop @pk_data } @primary_keys);
+
my $encoding;
if ($switch{'guess'}) {
$encoding = do_guess($data);
@@ -261,7 +268,8 @@ foreach my $table ($dbh->bz_table_list_real) {
&& !is_valid_utf8($data))
{
my $truncated = trunc($data);
- print "Failed to guess: Key: $digest",
+ print "Row: [$pk_line]\n",
+ "Failed to guess: Key: $digest",
" DATA: $truncated\n";
}
@@ -283,7 +291,8 @@ foreach my $table ($dbh->bz_table_list_real) {
if ($encoding && !grep($_ eq $encoding, IGNORE_ENCODINGS)) {
my $decoded = encode('utf8', decode($encoding, $data));
if ($switch{'dry-run'} && $data ne $decoded) {
- print "From: [" . trunc($data) . "] Key: $digest\n",
+ print "Row: [$pk_line]\n",
+ "From: [" . trunc($data) . "] Key: $digest\n",
"To: [" . trunc($decoded) . "]",
" Encoding : $encoding\n";
}