mirror of
https://github.com/postgres/postgres.git
synced 2025-07-05 07:21:24 +03:00
Fix tsmatchsel() to account properly for null rows.
ts_typanalyze.c computes MCE statistics as fractions of the non-null rows, which seems fairly reasonable, and anyway changing it in released versions wouldn't be a good idea. But then ts_selfuncs.c has to account for that. Failure to do so results in overestimates in columns with a significant fraction of null documents. Back-patch to 8.4 where this stuff was introduced. Jesper Krogh
This commit is contained in:
@ -189,11 +189,17 @@ tsquerysel(VariableStatData *vardata, Datum constval)
|
||||
/* No most-common-elements info, so do without */
|
||||
selec = tsquery_opr_selec_no_stats(query);
|
||||
}
|
||||
|
||||
/*
|
||||
* MCE stats count only non-null rows, so adjust for null rows.
|
||||
*/
|
||||
selec *= (1.0 - stats->stanullfrac);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* No stats at all, so do without */
|
||||
selec = tsquery_opr_selec_no_stats(query);
|
||||
/* we assume no nulls here, so no stanullfrac correction */
|
||||
}
|
||||
|
||||
return selec;
|
||||
|
Reference in New Issue
Block a user