forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit3b7a689
committed
For inplace update durability, make heap_update() callers wait.
The previous commit fixed some ways of losing an inplace update. Itremained possible to lose one when a backend working toward aheap_update() copied a tuple into memory just before inplace update ofthat tuple. In catalogs eligible for inplace update, use LOCKTAG_TUPLEto govern admission to the steps of copying an old tuple, modifying it,and issuing heap_update(). This includes MERGE commands. To avoidchanging most of the pg_class DDL, don't require LOCKTAG_TUPLE whenholding a relation lock sufficient to exclude inplace updaters.Back-patch to v12 (all supported versions). In v13 and v12, "UPDATEpg_class" or "UPDATE pg_database" can still lose an inplace update. Thev14+ UPDATE fix needs commit86dc900,and it wasn't worth reimplementing that fix without such infrastructure.Reviewed by Nitin Motiani and (in earlier versions) Heikki Linnakangas.Discussion:https://postgr.es/m/20231027214946.79.nmisch@google.com1 parentfd27b87 commit3b7a689
File tree
20 files changed
+498
-57
lines changed- src
- backend
- access
- heap
- index
- catalog
- commands
- executor
- utils/cache
- include
- nodes
- storage
- utils
- test/isolation
- expected
- specs
20 files changed
+498
-57
lines changedLines changed: 42 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
154 | 154 |
| |
155 | 155 |
| |
156 | 156 |
| |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
157 | 199 |
| |
158 | 200 |
| |
159 | 201 |
| |
|
Lines changed: 149 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
51 | 51 |
| |
52 | 52 |
| |
53 | 53 |
| |
| 54 | + | |
| 55 | + | |
54 | 56 |
| |
55 | 57 |
| |
56 | 58 |
| |
| |||
75 | 77 |
| |
76 | 78 |
| |
77 | 79 |
| |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
78 | 86 |
| |
79 | 87 |
| |
80 | 88 |
| |
| |||
121 | 129 |
| |
122 | 130 |
| |
123 | 131 |
| |
| 132 | + | |
| 133 | + | |
124 | 134 |
| |
125 | 135 |
| |
126 | 136 |
| |
| |||
3207 | 3217 |
| |
3208 | 3218 |
| |
3209 | 3219 |
| |
| 3220 | + | |
| 3221 | + | |
| 3222 | + | |
| 3223 | + | |
3210 | 3224 |
| |
3211 | 3225 |
| |
3212 | 3226 |
| |
| |||
4071 | 4085 |
| |
4072 | 4086 |
| |
4073 | 4087 |
| |
| 4088 | + | |
| 4089 | + | |
| 4090 | + | |
| 4091 | + | |
| 4092 | + | |
| 4093 | + | |
| 4094 | + | |
| 4095 | + | |
| 4096 | + | |
| 4097 | + | |
| 4098 | + | |
| 4099 | + | |
| 4100 | + | |
| 4101 | + | |
| 4102 | + | |
| 4103 | + | |
| 4104 | + | |
| 4105 | + | |
| 4106 | + | |
| 4107 | + | |
| 4108 | + | |
| 4109 | + | |
| 4110 | + | |
| 4111 | + | |
| 4112 | + | |
| 4113 | + | |
| 4114 | + | |
| 4115 | + | |
| 4116 | + | |
| 4117 | + | |
| 4118 | + | |
| 4119 | + | |
| 4120 | + | |
| 4121 | + | |
| 4122 | + | |
| 4123 | + | |
| 4124 | + | |
| 4125 | + | |
| 4126 | + | |
| 4127 | + | |
| 4128 | + | |
| 4129 | + | |
| 4130 | + | |
| 4131 | + | |
| 4132 | + | |
| 4133 | + | |
| 4134 | + | |
| 4135 | + | |
| 4136 | + | |
| 4137 | + | |
| 4138 | + | |
| 4139 | + | |
| 4140 | + | |
| 4141 | + | |
| 4142 | + | |
| 4143 | + | |
| 4144 | + | |
| 4145 | + | |
| 4146 | + | |
| 4147 | + | |
| 4148 | + | |
| 4149 | + | |
| 4150 | + | |
| 4151 | + | |
| 4152 | + | |
| 4153 | + | |
| 4154 | + | |
| 4155 | + | |
| 4156 | + | |
| 4157 | + | |
| 4158 | + | |
| 4159 | + | |
| 4160 | + | |
| 4161 | + | |
| 4162 | + | |
| 4163 | + | |
| 4164 | + | |
| 4165 | + | |
| 4166 | + | |
| 4167 | + | |
| 4168 | + | |
| 4169 | + | |
| 4170 | + | |
| 4171 | + | |
| 4172 | + | |
| 4173 | + | |
| 4174 | + | |
| 4175 | + | |
| 4176 | + | |
| 4177 | + | |
| 4178 | + | |
| 4179 | + | |
| 4180 | + | |
| 4181 | + | |
| 4182 | + | |
| 4183 | + | |
| 4184 | + | |
| 4185 | + | |
| 4186 | + | |
| 4187 | + | |
| 4188 | + | |
| 4189 | + | |
| 4190 | + | |
| 4191 | + | |
| 4192 | + | |
| 4193 | + | |
| 4194 | + | |
| 4195 | + | |
| 4196 | + | |
| 4197 | + | |
| 4198 | + | |
| 4199 | + | |
| 4200 | + | |
| 4201 | + | |
| 4202 | + | |
| 4203 | + | |
| 4204 | + | |
| 4205 | + | |
| 4206 | + | |
| 4207 | + | |
| 4208 | + | |
| 4209 | + | |
4074 | 4210 |
| |
4075 | 4211 |
| |
4076 | 4212 |
| |
| |||
6088 | 6224 |
| |
6089 | 6225 |
| |
6090 | 6226 |
| |
| 6227 | + | |
| 6228 | + | |
| 6229 | + | |
| 6230 | + | |
| 6231 | + | |
6091 | 6232 |
| |
6092 | 6233 |
| |
| 6234 | + | |
6093 | 6235 |
| |
6094 | 6236 |
| |
6095 | 6237 |
| |
6096 | 6238 |
| |
6097 | 6239 |
| |
6098 | 6240 |
| |
6099 |
| - | |
| 6241 | + | |
6100 | 6242 |
| |
6101 | 6243 |
| |
6102 | 6244 |
| |
| |||
6180 | 6322 |
| |
6181 | 6323 |
| |
6182 | 6324 |
| |
| 6325 | + | |
| 6326 | + | |
6183 | 6327 |
| |
| 6328 | + | |
6184 | 6329 |
| |
6185 | 6330 |
| |
6186 | 6331 |
| |
| |||
6189 | 6334 |
| |
6190 | 6335 |
| |
6191 | 6336 |
| |
| 6337 | + | |
| 6338 | + | |
6192 | 6339 |
| |
6193 | 6340 |
| |
6194 | 6341 |
| |
| |||
6272 | 6419 |
| |
6273 | 6420 |
| |
6274 | 6421 |
| |
| 6422 | + | |
6275 | 6423 |
| |
6276 | 6424 |
| |
6277 | 6425 |
| |
|
Lines changed: 3 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
754 | 754 |
| |
755 | 755 |
| |
756 | 756 |
| |
757 |
| - | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
758 | 760 |
| |
759 | 761 |
| |
760 | 762 |
| |
|
Lines changed: 7 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
75 | 75 |
| |
76 | 76 |
| |
77 | 77 |
| |
| 78 | + | |
78 | 79 |
| |
79 | 80 |
| |
80 | 81 |
| |
| |||
1848 | 1849 |
| |
1849 | 1850 |
| |
1850 | 1851 |
| |
1851 |
| - | |
| 1852 | + | |
1852 | 1853 |
| |
1853 | 1854 |
| |
1854 | 1855 |
| |
| |||
2060 | 2061 |
| |
2061 | 2062 |
| |
2062 | 2063 |
| |
| 2064 | + | |
2063 | 2065 |
| |
2064 | 2066 |
| |
2065 | 2067 |
| |
| |||
2072 | 2074 |
| |
2073 | 2075 |
| |
2074 | 2076 |
| |
| 2077 | + | |
| 2078 | + | |
2075 | 2079 |
| |
2076 | 2080 |
| |
2077 | 2081 |
| |
| |||
2185 | 2189 |
| |
2186 | 2190 |
| |
2187 | 2191 |
| |
2188 |
| - | |
| 2192 | + | |
2189 | 2193 |
| |
2190 | 2194 |
| |
2191 | 2195 |
| |
| |||
2261 | 2265 |
| |
2262 | 2266 |
| |
2263 | 2267 |
| |
| 2268 | + | |
2264 | 2269 |
| |
2265 | 2270 |
| |
2266 | 2271 |
| |
|
Lines changed: 9 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
138 | 138 |
| |
139 | 139 |
| |
140 | 140 |
| |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
141 | 150 |
| |
142 | 151 |
| |
143 | 152 |
| |
|
0 commit comments
Comments
(0)