From 283939a321bc492045d00c80146d52672cfc5378 Mon Sep 17 00:00:00 2001
From: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: Thu, 23 Apr 2009 07:19:09 +0000
Subject: [PATCH] varstr_cmp and any comparison function that piggybacks on it
 can return any negative or positive number, not just -1 or 1. Fix comment on
 varstr_cmp and citext test case accordingly.

As pointed out by Zdenek Kotala, and buildfarm member gothic moth.
---
 contrib/citext/expected/citext.out   | 8 ++++----
 contrib/citext/expected/citext_1.out | 8 ++++----
 contrib/citext/sql/citext.sql        | 2 +-
 src/backend/utils/adt/varlena.c      | 5 +++--
 4 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/contrib/citext/expected/citext.out b/contrib/citext/expected/citext.out
index 4d8f1ac0665..c3dfc95803e 100644
--- a/contrib/citext/expected/citext.out
+++ b/contrib/citext/expected/citext.out
@@ -213,10 +213,10 @@ SELECT citext_cmp('AARDVARK'::citext, 'AARDVARK'::citext) AS zero;
     0
 (1 row)
 
-SELECT citext_cmp('B'::citext, 'a'::citext) AS one;
- one 
------
-   1
+SELECT citext_cmp('B'::citext, 'a'::citext) > 0 AS true;
+ true 
+------
+    t
 (1 row)
 
 -- Do some tests using a table and index.
diff --git a/contrib/citext/expected/citext_1.out b/contrib/citext/expected/citext_1.out
index e9bb6124c80..49a6817aef3 100644
--- a/contrib/citext/expected/citext_1.out
+++ b/contrib/citext/expected/citext_1.out
@@ -213,10 +213,10 @@ SELECT citext_cmp('AARDVARK'::citext, 'AARDVARK'::citext) AS zero;
     0
 (1 row)
 
-SELECT citext_cmp('B'::citext, 'a'::citext) AS one;
- one 
------
-   1
+SELECT citext_cmp('B'::citext, 'a'::citext) > 0 AS true;
+ true 
+------
+    t
 (1 row)
 
 -- Do some tests using a table and index.
diff --git a/contrib/citext/sql/citext.sql b/contrib/citext/sql/citext.sql
index 379c0786f18..52999c2e634 100644
--- a/contrib/citext/sql/citext.sql
+++ b/contrib/citext/sql/citext.sql
@@ -90,7 +90,7 @@ SELECT 'aardvark'::citext = 'aardVark'::citext AS t;
 SELECT citext_cmp('aardvark'::citext, 'aardvark'::citext) AS zero;
 SELECT citext_cmp('aardvark'::citext, 'aardVark'::citext) AS zero;
 SELECT citext_cmp('AARDVARK'::citext, 'AARDVARK'::citext) AS zero;
-SELECT citext_cmp('B'::citext, 'a'::citext) AS one;
+SELECT citext_cmp('B'::citext, 'a'::citext) > 0 AS true;
 
 -- Do some tests using a table and index.
 
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c
index 5df6f05c337..052d0578ac7 100644
--- a/src/backend/utils/adt/varlena.c
+++ b/src/backend/utils/adt/varlena.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/adt/varlena.c,v 1.169 2009/01/01 17:23:50 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/adt/varlena.c,v 1.170 2009/04/23 07:19:09 heikki Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1138,7 +1138,8 @@ text_position_cleanup(TextPositionState *state)
  * Comparison function for text strings with given lengths.
  * Includes locale support, but must copy strings to temporary memory
  *	to allow null-termination for inputs to strcoll().
- * Returns -1, 0 or 1
+ * Returns an integer less than, equal to, or greater than zero, indicating
+ * whether arg1 is less than, equal to, or greater than arg2.
  */
 int
 varstr_cmp(char *arg1, int len1, char *arg2, int len2)
-- 
GitLab