|From: Dan McGuirk <mcguirk@indirect.com>
| |This patch fixes a backend crash that happens sometimes when you try to |join on a field that contains NULL in some rows. Postgres tries to |compute a hash value of the field you're joining on, but when the field |is NULL, the pointer it thinks is pointing to the data is really just |pointing to random memory. This forces the hash value of NULL to be 0. | |It seems that nothing matches NULL on joins, even other NULL's (with or |without this patch). Is that what's supposed to happen? |
This commit is contained in:
parent
9848d3655d
commit
f796387b60
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/executor/nodeHash.c,v 1.3 1996/07/26 20:03:21 scrappy Exp $
|
* $Header: /cvsroot/pgsql/src/backend/executor/nodeHash.c,v 1.4 1996/08/19 01:52:36 scrappy Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -527,6 +527,16 @@ ExecHashGetBucket(HashJoinTable hashtable,
|
|||||||
*/
|
*/
|
||||||
keyval = ExecEvalVar(hashkey, econtext, &isNull);
|
keyval = ExecEvalVar(hashkey, econtext, &isNull);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* keyval could be null, so we better point it to something
|
||||||
|
* valid before trying to run hashFunc on it. --djm 8/17/96
|
||||||
|
*/
|
||||||
|
if(isNull) {
|
||||||
|
execConstByVal = 0;
|
||||||
|
execConstLen = 0;
|
||||||
|
keyval = (Datum)"";
|
||||||
|
}
|
||||||
|
|
||||||
/* ------------------
|
/* ------------------
|
||||||
* compute the hash function
|
* compute the hash function
|
||||||
* ------------------
|
* ------------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user