*
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/adt/tsquery_op.c,v 1.3.2.1 2008/03/07 15:29:27 teodor Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/adt/tsquery_op.c,v 1.3.2.2 2008/03/09 10:42:48 teodor Exp $
  *
  *-------------------------------------------------------------------------
  */
 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