Commit 69a59150 authored by Tom Lane's avatar Tom Lane

Defend against brain-dead QNX implementation of qsort().

Per report from Bernd Tegge, 10-Nov-01.
parent c5c97318
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/sort/tuplesort.c,v 1.20 2001/10/28 06:25:57 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/utils/sort/tuplesort.c,v 1.21 2001/11/11 22:00:25 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -1881,8 +1881,13 @@ comparetup_index(Tuplesortstate *state, const void *a, const void *b) ...@@ -1881,8 +1881,13 @@ comparetup_index(Tuplesortstate *state, const void *a, const void *b)
* equal they *must* get compared at some stage of the sort --- * equal they *must* get compared at some stage of the sort ---
* otherwise the sort algorithm wouldn't have checked whether one must * otherwise the sort algorithm wouldn't have checked whether one must
* appear before the other. * appear before the other.
*
* Some rather brain-dead implementations of qsort will sometimes
* call the comparison routine to compare a value to itself. (At this
* writing only QNX 4 is known to do such silly things.) Don't raise
* a bogus error in that case.
*/ */
if (state->enforceUnique && !equal_hasnull) if (state->enforceUnique && !equal_hasnull && tuple1 != tuple2)
elog(ERROR, "Cannot create unique index. Table contains non-unique values"); elog(ERROR, "Cannot create unique index. Table contains non-unique values");
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment