- Notifications
You must be signed in to change notification settings - Fork28
Commit3afd75e
committed
Remove dubious micro-optimization in ckpt_buforder_comparator().
It seems incorrect to assume that the list of CkptSortItems can nevercontain duplicate page numbers: concurrent activity could result in somepage getting dropped from a low-numbered buffer and later loaded into ahigh-numbered buffer while BufferSync is scanning the buffer pool.If that happened, the comparator would give self-inconsistent results,potentially confusing qsort(). Saving one comparison step is not worthpossibly getting the sort wrong.So far as I can tell, nothing would actually go wrong given our currentimplementation of qsort(). It might get a bit slower than expectedif there were a large number of duplicates of one value, but that'ssurely a probability-epsilon case. Still, the comment is wrong,and if we ever switched to another sort implementation it might beless forgiving.In passing, avoid casting away const-ness of the argument pointers;I've not seen any compiler complaints from that, but it seems likelythat some compilers would not like it.Back-patch to 9.6 where this code came in, just in case I've underestimatedthe possible consequences.Discussion:https://postgr.es/m/18437.1515607610@sss.pgh.pa.us1 parent2fd5809 commit3afd75e
1 file changed
+7
-5
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4064 | 4064 | | |
4065 | 4065 | | |
4066 | 4066 | | |
4067 | | - | |
4068 | | - | |
| 4067 | + | |
| 4068 | + | |
4069 | 4069 | | |
4070 | 4070 | | |
4071 | 4071 | | |
| |||
4174 | 4174 | | |
4175 | 4175 | | |
4176 | 4176 | | |
4177 | | - | |
4178 | | - | |
| 4177 | + | |
| 4178 | + | |
4179 | 4179 | | |
4180 | 4180 | | |
4181 | 4181 | | |
| |||
4195 | 4195 | | |
4196 | 4196 | | |
4197 | 4197 | | |
4198 | | - | |
| 4198 | + | |
4199 | 4199 | | |
| 4200 | + | |
| 4201 | + | |
4200 | 4202 | | |
4201 | 4203 | | |
4202 | 4204 | | |
| |||
0 commit comments
Comments
(0)