mirror of
https://github.com/postgres/postgres.git
synced 2025-05-01 01:04:50 +03:00
Defend against brain-dead QNX implementation of qsort().
Per report from Bernd Tegge, 10-Nov-01.
This commit is contained in:
parent
c5c97318f9
commit
69a59150c2
@ -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)
|
|||||||
* 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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user