forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit5c837f8
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 parent8590c94 commit5c837f8
File tree
19 files changed
+490
-49
lines changed- src
- backend
- access
- heap
- index
- catalog
- commands
- executor
- utils/cache
- include
- nodes
- storage
- utils
- test/isolation
- expected
- specs
19 files changed
+490
-49
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 | |
---|---|---|---|
| |||
52 | 52 |
| |
53 | 53 |
| |
54 | 54 |
| |
| 55 | + | |
| 56 | + | |
55 | 57 |
| |
56 | 58 |
| |
57 | 59 |
| |
| |||
78 | 80 |
| |
79 | 81 |
| |
80 | 82 |
| |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
81 | 89 |
| |
82 | 90 |
| |
83 | 91 |
| |
| |||
119 | 127 |
| |
120 | 128 |
| |
121 | 129 |
| |
| 130 | + | |
| 131 | + | |
122 | 132 |
| |
123 | 133 |
| |
124 | 134 |
| |
| |||
3187 | 3197 |
| |
3188 | 3198 |
| |
3189 | 3199 |
| |
| 3200 | + | |
| 3201 | + | |
| 3202 | + | |
| 3203 | + | |
3190 | 3204 |
| |
3191 | 3205 |
| |
3192 | 3206 |
| |
| |||
4014 | 4028 |
| |
4015 | 4029 |
| |
4016 | 4030 |
| |
| 4031 | + | |
| 4032 | + | |
| 4033 | + | |
| 4034 | + | |
| 4035 | + | |
| 4036 | + | |
| 4037 | + | |
| 4038 | + | |
| 4039 | + | |
| 4040 | + | |
| 4041 | + | |
| 4042 | + | |
| 4043 | + | |
| 4044 | + | |
| 4045 | + | |
| 4046 | + | |
| 4047 | + | |
| 4048 | + | |
| 4049 | + | |
| 4050 | + | |
| 4051 | + | |
| 4052 | + | |
| 4053 | + | |
| 4054 | + | |
| 4055 | + | |
| 4056 | + | |
| 4057 | + | |
| 4058 | + | |
| 4059 | + | |
| 4060 | + | |
| 4061 | + | |
| 4062 | + | |
| 4063 | + | |
| 4064 | + | |
| 4065 | + | |
| 4066 | + | |
| 4067 | + | |
| 4068 | + | |
| 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 | + | |
4017 | 4153 |
| |
4018 | 4154 |
| |
4019 | 4155 |
| |
| |||
6039 | 6175 |
| |
6040 | 6176 |
| |
6041 | 6177 |
| |
| 6178 | + | |
| 6179 | + | |
| 6180 | + | |
| 6181 | + | |
| 6182 | + | |
6042 | 6183 |
| |
6043 | 6184 |
| |
| 6185 | + | |
6044 | 6186 |
| |
6045 | 6187 |
| |
6046 | 6188 |
| |
6047 | 6189 |
| |
6048 | 6190 |
| |
6049 | 6191 |
| |
6050 |
| - | |
| 6192 | + | |
6051 | 6193 |
| |
6052 | 6194 |
| |
6053 | 6195 |
| |
| |||
6131 | 6273 |
| |
6132 | 6274 |
| |
6133 | 6275 |
| |
| 6276 | + | |
| 6277 | + | |
6134 | 6278 |
| |
| 6279 | + | |
6135 | 6280 |
| |
6136 | 6281 |
| |
6137 | 6282 |
| |
| |||
6140 | 6285 |
| |
6141 | 6286 |
| |
6142 | 6287 |
| |
| 6288 | + | |
| 6289 | + | |
6143 | 6290 |
| |
6144 | 6291 |
| |
6145 | 6292 |
| |
| |||
6223 | 6370 |
| |
6224 | 6371 |
| |
6225 | 6372 |
| |
| 6373 | + | |
6226 | 6374 |
| |
6227 | 6375 |
| |
6228 | 6376 |
| |
|
Lines changed: 3 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
755 | 755 |
| |
756 | 756 |
| |
757 | 757 |
| |
758 |
| - | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
759 | 761 |
| |
760 | 762 |
| |
761 | 763 |
| |
|
Lines changed: 7 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
70 | 70 |
| |
71 | 71 |
| |
72 | 72 |
| |
| 73 | + | |
73 | 74 |
| |
74 | 75 |
| |
75 | 76 |
| |
| |||
1822 | 1823 |
| |
1823 | 1824 |
| |
1824 | 1825 |
| |
1825 |
| - | |
| 1826 | + | |
1826 | 1827 |
| |
1827 | 1828 |
| |
1828 | 1829 |
| |
| |||
2038 | 2039 |
| |
2039 | 2040 |
| |
2040 | 2041 |
| |
| 2042 | + | |
2041 | 2043 |
| |
2042 | 2044 |
| |
2043 | 2045 |
| |
| |||
2050 | 2052 |
| |
2051 | 2053 |
| |
2052 | 2054 |
| |
| 2055 | + | |
| 2056 | + | |
2053 | 2057 |
| |
2054 | 2058 |
| |
2055 | 2059 |
| |
| |||
2159 | 2163 |
| |
2160 | 2164 |
| |
2161 | 2165 |
| |
2162 |
| - | |
| 2166 | + | |
2163 | 2167 |
| |
2164 | 2168 |
| |
2165 | 2169 |
| |
| |||
2228 | 2232 |
| |
2229 | 2233 |
| |
2230 | 2234 |
| |
| 2235 | + | |
2231 | 2236 |
| |
2232 | 2237 |
| |
2233 | 2238 |
| |
|
Lines changed: 9 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
140 | 140 |
| |
141 | 141 |
| |
142 | 142 |
| |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
143 | 152 |
| |
144 | 153 |
| |
145 | 154 |
| |
|
0 commit comments
Comments
(0)