|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:
Marc G. Fournier 1996-08-19 01:52:36 +00:00
parent 9848d3655d
commit f796387b60
1 changed files with 11 additions and 1 deletions

View File

@ -7,7 +7,7 @@
*
*
* 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 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
* ------------------