forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit9387f4e
committed
Fix compute_scalar_stats() for case that all values exceed WIDTH_THRESHOLD.
The standard typanalyze functions skip over values whose detoasted sizeexceeds WIDTH_THRESHOLD (1024 bytes), so as to limit memory bloat duringANALYZE. However, we (I think I, actually :-() failed to consider thepossibility that *every* non-null value in a column is too wide. Whilecompute_minimal_stats() seems to behave reasonably anyway in such a case,compute_scalar_stats() just fell through and generated no pg_statisticentry at all. That's unnecessarily pessimistic: we can still producevalid stanullfrac and stawidth values in such cases, since we do includetoo-wide values in the average-width calculation. Furthermore, since thegeneral assumption in this code is that too-wide values are probably alldistinct from each other, it seems reasonable to set stadistinct to -1("all distinct").Per complaint from Kadri Raudsepp. This has been like this since roughlyneolithic times, so back-patch to all supported branches.1 parent9f5b3a1 commit9387f4e
1 file changed
+15
-1
lines changedLines changed: 15 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2669 | 2669 |
| |
2670 | 2670 |
| |
2671 | 2671 |
| |
2672 |
| - | |
| 2672 | + | |
| 2673 | + | |
| 2674 | + | |
| 2675 | + | |
| 2676 | + | |
| 2677 | + | |
| 2678 | + | |
| 2679 | + | |
| 2680 | + | |
| 2681 | + | |
| 2682 | + | |
| 2683 | + | |
| 2684 | + | |
| 2685 | + | |
| 2686 | + | |
2673 | 2687 |
| |
2674 | 2688 |
| |
2675 | 2689 |
| |
|
0 commit comments
Comments
(0)