From 793c103590ff0742b6163dca25cfc6250c68f803 Mon Sep 17 00:00:00 2001 From: "mkanat%bugzilla.org" <> Date: Fri, 18 Jan 2008 21:56:53 +0000 Subject: Bug 408172: [Oracle] Bug lists longer than 1000 bugs fail Patch By Xiaoou Wu r=mkanat, a=mkanat --- Bugzilla/DB/Oracle.pm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'Bugzilla/DB/Oracle.pm') diff --git a/Bugzilla/DB/Oracle.pm b/Bugzilla/DB/Oracle.pm index f89a72ab0..169550087 100644 --- a/Bugzilla/DB/Oracle.pm +++ b/Bugzilla/DB/Oracle.pm @@ -165,6 +165,22 @@ sub sql_position { my ($self, $fragment, $text) = @_; return "INSTR($text, $fragment)"; } + +sub sql_in { + my ($self, $column_name, $in_list_ref) = @_; + my @in_list = @$in_list_ref; + return $self->SUPER::sql_in($column_name, $in_list_ref) if $#in_list < 1000; + my @in_str; + while (@in_list) { + my $length = $#in_list + 1; + my $splice = $length > 1000 ? 1000 : $length; + my @sub_in_list = splice(@in_list, 0, $splice); + push(@in_str, + $self->SUPER::sql_in($column_name, \@sub_in_list)); + } + return "( " . join(" OR ", @in_str) . " )"; +} + sub _fix_empty { my ($string) = @_; $string = '' if $string eq EMPTY_STRING; -- cgit v1.2.3-24-g4f1b