summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrédéric Buclin <LpSolit@gmail.com>2012-08-03 12:20:19 +0200
committerFrédéric Buclin <LpSolit@gmail.com>2012-08-03 12:20:19 +0200
commit7c098954938807062a27d72f52d3f2a8dbd06bfd (patch)
tree675dc927d1a818b6d7a44a3d22ec0106b46e01c1
parent2cab4974d0ee9c1958769c76f7437b848fef332a (diff)
downloadbugzilla-7c098954938807062a27d72f52d3f2a8dbd06bfd.tar.gz
bugzilla-7c098954938807062a27d72f52d3f2a8dbd06bfd.tar.xz
Bug 780028: Oracle crashes if a column listed in ORDER BY appears twice in SELECT
r=glob a=LpSolit
-rw-r--r--Bugzilla/Search.pm17
1 files changed, 13 insertions, 4 deletions
diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm
index da37a9638..9cab49ab8 100644
--- a/Bugzilla/Search.pm
+++ b/Bugzilla/Search.pm
@@ -824,10 +824,19 @@ sub _add_extra_column {
# These are the columns that we're going to be actually SELECTing.
sub _display_columns {
my ($self) = @_;
- # Do not alter the list specified here at all, even if they are duplicated.
- # Those are passed by the caller, and the caller expects to get them back
- # in the exact same order.
- $self->{display_columns} ||= [$self->_input_columns, $self->_extra_columns];
+ return @{ $self->{display_columns} } if $self->{display_columns};
+
+ # Do not alter the list from _input_columns at all, even if there are
+ # duplicated columns. Those are passed by the caller, and the caller
+ # expects to get them back in the exact same order.
+ my @columns = $self->_input_columns;
+
+ # Only add columns which are not already listed.
+ my %list = map { $_ => 1 } @columns;
+ foreach my $column ($self->_extra_columns) {
+ push(@columns, $column) unless $list{$column}++;
+ }
+ $self->{display_columns} = \@columns;
return @{ $self->{display_columns} };
}