mirror of
https://github.com/postgres/postgres.git
synced 2025-07-03 20:02:46 +03:00
Fixes:
'select distinct on' causes backend to crash submitted by: Chris Dunlop chris@onthe.net.au
This commit is contained in:
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/executor/nodeUnique.c,v 1.1.1.1 1996/07/09 06:21:27 scrappy Exp $
|
* $Header: /cvsroot/pgsql/src/backend/executor/nodeUnique.c,v 1.2 1996/07/19 06:27:59 scrappy Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -124,7 +124,7 @@ ExecUnique(Unique *node)
|
|||||||
|
|
||||||
if (uniqueAttr) {
|
if (uniqueAttr) {
|
||||||
tupDesc = ExecGetResultType(uniquestate);
|
tupDesc = ExecGetResultType(uniquestate);
|
||||||
typoutput = typtoout((Oid)tupDesc->attrs[uniqueAttrNum]->atttypid);
|
typoutput = typtoout((Oid)tupDesc->attrs[uniqueAttrNum-1]->atttypid);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
@ -174,8 +174,8 @@ ExecUnique(Unique *node)
|
|||||||
if (isNull1 == isNull2) {
|
if (isNull1 == isNull2) {
|
||||||
if (isNull1) /* both are null, they are equal */
|
if (isNull1) /* both are null, they are equal */
|
||||||
continue;
|
continue;
|
||||||
val1 = fmgr(typoutput, attr1, gettypelem(tupDesc->attrs[uniqueAttrNum]->atttypid));
|
val1 = fmgr(typoutput, attr1, gettypelem(tupDesc->attrs[uniqueAttrNum-1]->atttypid));
|
||||||
val2 = fmgr(typoutput, attr2, gettypelem(tupDesc->attrs[uniqueAttrNum]->atttypid));
|
val2 = fmgr(typoutput, attr2, gettypelem(tupDesc->attrs[uniqueAttrNum-1]->atttypid));
|
||||||
/* now, val1 and val2 are ascii representations so we can
|
/* now, val1 and val2 are ascii representations so we can
|
||||||
use strcmp for comparison */
|
use strcmp for comparison */
|
||||||
if (strcmp(val1,val2) == 0) /* they are equal */
|
if (strcmp(val1,val2) == 0) /* they are equal */
|
||||||
|
Reference in New Issue
Block a user