]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 616981: Make whine.pl work with PostgreSQL 8.4+ by fixing sql_string_until
authorSam Morris <sam@robots.org.uk>
Mon, 14 Feb 2011 20:11:44 +0000 (12:11 -0800)
committerMax Kanat-Alexander <mkanat@bugzilla.org>
Mon, 14 Feb 2011 20:11:44 +0000 (12:11 -0800)
r=mkanat, a=mkanat

Bugzilla/DB/Pg.pm

index 9c785e580a0d7c7f595713ee57ed7a46098097a5..123040f739bfdbd09734c7ba73dab3f03b10b516 100644 (file)
@@ -184,6 +184,18 @@ sub sql_string_concat {
     return '(CAST(' . join(' AS text) || CAST(', @params) . ' AS text))';
 }
 
+sub sql_string_until {
+    my ($self, $string, $substring) = @_;
+
+    # PostgreSQL does not permit a negative substring length; therefore we
+    # use CASE to only perform the SUBSTRING operation when $substring can
+    # be found withing $string.
+    return "CASE WHEN " . $self->sql_position($substring, $string)
+                        . " != 0 THEN SUBSTRING($string FROM 1 FOR "
+                        . $self->sql_position($substring, $string) . " - 1)"
+                       . " ELSE $string END";
+}
+
 # Tell us whether or not a particular sequence exists in the DB.
 sub bz_sequence_exists {
     my ($self, $seq_name) = @_;