Revert changes of CompareTSQ: it affects existing btree indexes.
authorTeodor Sigaev <teodor@sigaev.ru>
Sun, 9 Mar 2008 10:42:48 +0000 (10:42 +0000)
committerTeodor Sigaev <teodor@sigaev.ru>
Sun, 9 Mar 2008 10:42:48 +0000 (10:42 +0000)
src/backend/utils/adt/tsquery_op.c

index 34889c4b00a775d7f343c0c49843aee4b19602fb..0af69964e8f413f4dc41cf3cb0a8c14415ca1c36 100644 (file)
@@ -141,14 +141,27 @@ tsquery_not(PG_FUNCTION_ARGS)
 static int
 CompareTSQ(TSQuery a, TSQuery b)
 {
-       QTNode     *an = QT2QTN(GETQUERY(a), GETOPERAND(a));
-       QTNode     *bn = QT2QTN(GETQUERY(b), GETOPERAND(b));
-       int                     res = QTNodeCompare(an, bn);
+       if (a->size != b->size)
+       {
+               return (a->size < b->size) ? -1 : 1;
+       }
+       else if (VARSIZE(a) != VARSIZE(b))
+       {
+               return (VARSIZE(a) < VARSIZE(b)) ? -1 : 1;
+       }
+       else
+       {
+               QTNode     *an = QT2QTN(GETQUERY(a), GETOPERAND(a));
+               QTNode     *bn = QT2QTN(GETQUERY(b), GETOPERAND(b));
+               int                     res = QTNodeCompare(an, bn);
 
-       QTNFree(an);
-       QTNFree(bn);
+               QTNFree(an);
+               QTNFree(bn);
 
-       return res;
+               return res;
+       }
+
+       return 0;
 }
 
 Datum