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