mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Guard against zero vardata.rel->tuples in estimate_hash_bucketsize().
If the referenced rel was proven empty, we'd compute 0/0 here, which results in the function returning NaN. That's a bit more serious than the other zero-divide case. Still, it only seems to be possible in HEAD, so no back-patch. Per report from Piotr Stefaniak. I looked through the rest of selfuncs.c and found no other likely trouble spots.
This commit is contained in:
@ -3540,7 +3540,7 @@ estimate_hash_bucketsize(PlannerInfo *root, Node *hashkey, double nbuckets)
|
|||||||
* XXX Possibly better way, but much more expensive: multiply by
|
* XXX Possibly better way, but much more expensive: multiply by
|
||||||
* selectivity of rel's restriction clauses that mention the target Var.
|
* selectivity of rel's restriction clauses that mention the target Var.
|
||||||
*/
|
*/
|
||||||
if (vardata.rel)
|
if (vardata.rel && vardata.rel->tuples > 0)
|
||||||
{
|
{
|
||||||
ndistinct *= vardata.rel->rows / vardata.rel->tuples;
|
ndistinct *= vardata.rel->rows / vardata.rel->tuples;
|
||||||
ndistinct = clamp_row_est(ndistinct);
|
ndistinct = clamp_row_est(ndistinct);
|
||||||
|
Reference in New Issue
Block a user