*** pgsql/src/backend/utils/adt/xid.c 2009/01/01 17:23:50 1.12 --- pgsql/src/backend/utils/adt/xid.c 2009/12/19 01:32:36 1.13 *************** *** 8,14 **** * * * IDENTIFICATION ! * $PostgreSQL: pgsql/src/backend/utils/adt/xid.c,v 1.11 2008/01/01 19:45:53 momjian Exp $ * *------------------------------------------------------------------------- */ --- 8,14 ---- * * * IDENTIFICATION ! * $PostgreSQL: pgsql/src/backend/utils/adt/xid.c,v 1.12 2009/01/01 17:23:50 momjian Exp $ * *------------------------------------------------------------------------- */ *************** xid_age(PG_FUNCTION_ARGS) *** 102,107 **** --- 102,126 ---- PG_RETURN_INT32((int32) (now - xid)); } + /* + * xidComparator + * qsort comparison function for XIDs + * + * We can't use wraparound comparison for XIDs because that does not respect + * the triangle inequality! Any old sort order will do. + */ + int + xidComparator(const void *arg1, const void *arg2) + { + TransactionId xid1 = *(const TransactionId *) arg1; + TransactionId xid2 = *(const TransactionId *) arg2; + + if (xid1 > xid2) + return 1; + if (xid1 < xid2) + return -1; + return 0; + } /***************************************************************************** * COMMAND IDENTIFIER ROUTINES *