Regarding inter-data-type hash joins, would it make sense to make float
datatypes to hash to the same value as integral data types for integral
values?
Conveniently this would cover the existing special case of -0 and +0 hashing
to the same value. Something like this?
Datum
hashfloat4(PG_FUNCTION_ARGS)
{
float4 key = PG_GETARG_FLOAT4(0);
if (key == (int32)key)
PG_RETURN_UINT32(~(int32)key);
return hash_any((unsigned char *) &key, sizeof(key));
}
Incidentally, why do all the floatfoo functions invert the value? It doesn't
seem like that affects the quality of the hash at all.
--
greg