]> granicus.if.org Git - postgresql/commitdiff
Fix sample INSTR function to return 0 if third arg is 0.
authorRobert Haas <rhaas@postgresql.org>
Wed, 4 Jul 2012 21:19:23 +0000 (17:19 -0400)
committerRobert Haas <rhaas@postgresql.org>
Wed, 4 Jul 2012 21:19:23 +0000 (17:19 -0400)
Albe Laurenz, per a report by Greg Smith that our sample function
doesn't quite match Oracle's behavior.

doc/src/sgml/plpgsql.sgml

index ba2c57b687124c4f649b156deb66082de6d66e4f..4840f6ea9c6019d479eb6ec11a3afaf41eca8509 100644 (file)
@@ -5115,7 +5115,7 @@ BEGIN
         ELSE
             RETURN pos + beg_index - 1;
         END IF;
-    ELSE
+    ELSIF beg_index &lt; 0 THEN
         ss_length := char_length(string_to_search);
         length := char_length(string);
         beg := length + beg_index - ss_length + 2;
@@ -5131,6 +5131,8 @@ BEGIN
             beg := beg - 1;
         END LOOP;
 
+        RETURN 0;
+    ELSE
         RETURN 0;
     END IF;
 END;
@@ -5170,7 +5172,7 @@ BEGIN
         ELSE
             RETURN beg;
         END IF;
-    ELSE
+    ELSIF beg_index &lt; 0 THEN
         ss_length := char_length(string_to_search);
         length := char_length(string);
         beg := length + beg_index - ss_length + 2;
@@ -5190,6 +5192,8 @@ BEGIN
             beg := beg - 1;
         END LOOP;
 
+        RETURN 0;
+    ELSE
         RETURN 0;
     END IF;
 END;