diff options
author | Marc G. Fournier <scrappy@hub.org> | 1996-08-19 01:07:43 +0000 |
---|---|---|
committer | Marc G. Fournier <scrappy@hub.org> | 1996-08-19 01:07:43 +0000 |
commit | e38de384e2c529540f79032a589c367e6b2688b3 (patch) | |
tree | 014a1d8a64947b6fa9f53d38061fe79dd01e2a43 | |
parent | f46246a27967945253ea996450e66da2b4f398cf (diff) |
|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?
|
Submitted by: Dan McGuirk <mcguirk@indirect.com>
-rw-r--r-- | src/backend/executor/nodeHash.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c index 9ea00ed2371..8bc0dd23323 100644 --- a/src/backend/executor/nodeHash.c +++ b/src/backend/executor/nodeHash.c @@ -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.3.2.1 1996/08/19 01:07:43 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 * ------------------ |