aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeodor Sigaev <teodor@sigaev.ru>2008-03-09 10:42:48 +0000
committerTeodor Sigaev <teodor@sigaev.ru>2008-03-09 10:42:48 +0000
commitd19d35431bf05508bbfb59732222133f862a5d36 (patch)
treef728ebe3f94a3fb1452e6a1d06882adc3a87b47c
parentf647ed438a65580564d34a69b28bc2d31cc0c687 (diff)
downloadpostgresql-d19d35431bf05508bbfb59732222133f862a5d36.tar.gz
postgresql-d19d35431bf05508bbfb59732222133f862a5d36.zip
Revert changes of CompareTSQ: it affects existing btree indexes.
-rw-r--r--src/backend/utils/adt/tsquery_op.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/src/backend/utils/adt/tsquery_op.c b/src/backend/utils/adt/tsquery_op.c
index 3e5b8d30057..a0b103984dd 100644
--- a/src/backend/utils/adt/tsquery_op.c
+++ b/src/backend/utils/adt/tsquery_op.c
@@ -7,7 +7,7 @@
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
@@ -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