Revision c4c2f760
Von Moritz Bunkus vor mehr als 17 Jahren hinzugefügt
SL/LXDebug.pm | ||
---|---|---|
143 | 143 |
$self->message($level, "dumping ${name}:\n" . YAML::Dump($variable)); |
144 | 144 |
} |
145 | 145 |
|
146 |
sub dump_sql_result { |
|
147 |
my ($self, $level, $prefix, $results) = @_; |
|
148 |
|
|
149 |
if (!$results || !scalar @{ $results }) { |
|
150 |
$self->message($level, "Empty result set"); |
|
151 |
return; |
|
152 |
} |
|
153 |
|
|
154 |
my %column_lengths; |
|
155 |
my $first_row = 1; |
|
156 |
|
|
157 |
foreach my $row (@{ $results }) { |
|
158 |
if ($first_row) { |
|
159 |
map { $column_lengths{$_} = length $_ } keys %{ $row }; |
|
160 |
$first_row = 0; |
|
161 |
} |
|
162 |
|
|
163 |
map { $column_lengths{$_} = length $row->{$_} if (length $row->{$_} > $column_lengths{$_}) } keys %{ $row }; |
|
164 |
} |
|
165 |
|
|
166 |
my @sorted_names = sort keys %column_lengths; |
|
167 |
my $format = join '|', map { '%' . $column_lengths{$_} . 's' } @sorted_names; |
|
168 |
|
|
169 |
$prefix =~ s|\s*$||; |
|
170 |
$prefix .= ' ' if $prefix; |
|
171 |
|
|
172 |
$self->message($level, $prefix . sprintf($format, @sorted_names)); |
|
173 |
$self->message($level, $prefix . join('+', map { '-' x $column_lengths{$_} } @sorted_names)); |
|
174 |
|
|
175 |
foreach my $row (@{ $results }) { |
|
176 |
$self->message($level, $prefix . sprintf($format, map { $row->{$_} } @sorted_names)); |
|
177 |
} |
|
178 |
$self->message($level, $prefix . sprintf('(%d row%s)', scalar @{ $results }, scalar @{ $results } > 1 ? 's' : '')); |
|
179 |
} |
|
180 |
|
|
146 | 181 |
sub enable_sub_tracing { |
147 | 182 |
my ($self) = @_; |
148 | 183 |
$self->{level} | TRACE; |
Auch abrufbar als: Unified diff
Eine Funktion zum tabellarischen Ausgeben von SQL-Ergebnissen (erwartet eine Referenz auf ein Array mit Hashreferenzen) hinzugefügt.