forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitaac2c9b
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 parenta07e03f commitaac2c9b
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 | |
---|---|---|---|
| |||
40 | 40 |
| |
41 | 41 |
| |
42 | 42 |
| |
| 43 | + | |
| 44 | + | |
43 | 45 |
| |
44 | 46 |
| |
45 | 47 |
| |
| |||
57 | 59 |
| |
58 | 60 |
| |
59 | 61 |
| |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
60 | 68 |
| |
61 | 69 |
| |
62 | 70 |
| |
| |||
103 | 111 |
| |
104 | 112 |
| |
105 | 113 |
| |
| 114 | + | |
| 115 | + | |
106 | 116 |
| |
107 | 117 |
| |
108 | 118 |
| |
| |||
3189 | 3199 |
| |
3190 | 3200 |
| |
3191 | 3201 |
| |
| 3202 | + | |
| 3203 | + | |
| 3204 | + | |
| 3205 | + | |
3192 | 3206 |
| |
3193 | 3207 |
| |
3194 | 3208 |
| |
| |||
4053 | 4067 |
| |
4054 | 4068 |
| |
4055 | 4069 |
| |
| 4070 | + | |
| 4071 | + | |
| 4072 | + | |
| 4073 | + | |
| 4074 | + | |
| 4075 | + | |
| 4076 | + | |
| 4077 | + | |
| 4078 | + | |
| 4079 | + | |
| 4080 | + | |
| 4081 | + | |
| 4082 | + | |
| 4083 | + | |
| 4084 | + | |
| 4085 | + | |
| 4086 | + | |
| 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 | + | |
4056 | 4192 |
| |
4057 | 4193 |
| |
4058 | 4194 |
| |
| |||
6070 | 6206 |
| |
6071 | 6207 |
| |
6072 | 6208 |
| |
| 6209 | + | |
| 6210 | + | |
| 6211 | + | |
| 6212 | + | |
| 6213 | + | |
6073 | 6214 |
| |
6074 | 6215 |
| |
| 6216 | + | |
6075 | 6217 |
| |
6076 | 6218 |
| |
6077 | 6219 |
| |
6078 | 6220 |
| |
6079 | 6221 |
| |
6080 | 6222 |
| |
6081 |
| - | |
| 6223 | + | |
6082 | 6224 |
| |
6083 | 6225 |
| |
6084 | 6226 |
| |
| |||
6162 | 6304 |
| |
6163 | 6305 |
| |
6164 | 6306 |
| |
| 6307 | + | |
| 6308 | + | |
6165 | 6309 |
| |
| 6310 | + | |
6166 | 6311 |
| |
6167 | 6312 |
| |
6168 | 6313 |
| |
| |||
6171 | 6316 |
| |
6172 | 6317 |
| |
6173 | 6318 |
| |
| 6319 | + | |
| 6320 | + | |
6174 | 6321 |
| |
6175 | 6322 |
| |
6176 | 6323 |
| |
| |||
6254 | 6401 |
| |
6255 | 6402 |
| |
6256 | 6403 |
| |
| 6404 | + | |
6257 | 6405 |
| |
6258 | 6406 |
| |
6259 | 6407 |
| |
|
Lines changed: 3 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
765 | 765 |
| |
766 | 766 |
| |
767 | 767 |
| |
768 |
| - | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
769 | 771 |
| |
770 | 772 |
| |
771 | 773 |
| |
|
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)