|
|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?
|
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
*/
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
* ------------------