forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit51ff46d
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 parent63f0198 commit51ff46d
File tree
19 files changed
+488
-49
lines changed- src
- backend
- access
- heap
- index
- catalog
- commands
- executor
- utils/cache
- include
- nodes
- storage
- utils
- test/isolation
- expected
- specs
19 files changed
+488
-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 |
| |
| |||
79 | 81 |
| |
80 | 82 |
| |
81 | 83 |
| |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
82 | 90 |
| |
83 | 91 |
| |
84 | 92 |
| |
| |||
123 | 131 |
| |
124 | 132 |
| |
125 | 133 |
| |
| 134 | + | |
| 135 | + | |
126 | 136 |
| |
127 | 137 |
| |
128 | 138 |
| |
| |||
3051 | 3061 |
| |
3052 | 3062 |
| |
3053 | 3063 |
| |
| 3064 | + | |
| 3065 | + | |
| 3066 | + | |
| 3067 | + | |
3054 | 3068 |
| |
3055 | 3069 |
| |
3056 | 3070 |
| |
| |||
3915 | 3929 |
| |
3916 | 3930 |
| |
3917 | 3931 |
| |
| 3932 | + | |
| 3933 | + | |
| 3934 | + | |
| 3935 | + | |
| 3936 | + | |
| 3937 | + | |
| 3938 | + | |
| 3939 | + | |
| 3940 | + | |
| 3941 | + | |
| 3942 | + | |
| 3943 | + | |
| 3944 | + | |
| 3945 | + | |
| 3946 | + | |
| 3947 | + | |
| 3948 | + | |
| 3949 | + | |
| 3950 | + | |
| 3951 | + | |
| 3952 | + | |
| 3953 | + | |
| 3954 | + | |
| 3955 | + | |
| 3956 | + | |
| 3957 | + | |
| 3958 | + | |
| 3959 | + | |
| 3960 | + | |
| 3961 | + | |
| 3962 | + | |
| 3963 | + | |
| 3964 | + | |
| 3965 | + | |
| 3966 | + | |
| 3967 | + | |
| 3968 | + | |
| 3969 | + | |
| 3970 | + | |
| 3971 | + | |
| 3972 | + | |
| 3973 | + | |
| 3974 | + | |
| 3975 | + | |
| 3976 | + | |
| 3977 | + | |
| 3978 | + | |
| 3979 | + | |
| 3980 | + | |
| 3981 | + | |
| 3982 | + | |
| 3983 | + | |
| 3984 | + | |
| 3985 | + | |
| 3986 | + | |
| 3987 | + | |
| 3988 | + | |
| 3989 | + | |
| 3990 | + | |
| 3991 | + | |
| 3992 | + | |
| 3993 | + | |
| 3994 | + | |
| 3995 | + | |
| 3996 | + | |
| 3997 | + | |
| 3998 | + | |
| 3999 | + | |
| 4000 | + | |
| 4001 | + | |
| 4002 | + | |
| 4003 | + | |
| 4004 | + | |
| 4005 | + | |
| 4006 | + | |
| 4007 | + | |
| 4008 | + | |
| 4009 | + | |
| 4010 | + | |
| 4011 | + | |
| 4012 | + | |
| 4013 | + | |
| 4014 | + | |
| 4015 | + | |
| 4016 | + | |
| 4017 | + | |
| 4018 | + | |
| 4019 | + | |
| 4020 | + | |
| 4021 | + | |
| 4022 | + | |
| 4023 | + | |
| 4024 | + | |
| 4025 | + | |
| 4026 | + | |
| 4027 | + | |
| 4028 | + | |
| 4029 | + | |
| 4030 | + | |
| 4031 | + | |
| 4032 | + | |
| 4033 | + | |
| 4034 | + | |
| 4035 | + | |
| 4036 | + | |
| 4037 | + | |
| 4038 | + | |
| 4039 | + | |
| 4040 | + | |
| 4041 | + | |
| 4042 | + | |
| 4043 | + | |
| 4044 | + | |
| 4045 | + | |
| 4046 | + | |
| 4047 | + | |
| 4048 | + | |
| 4049 | + | |
| 4050 | + | |
| 4051 | + | |
| 4052 | + | |
| 4053 | + | |
3918 | 4054 |
| |
3919 | 4055 |
| |
3920 | 4056 |
| |
| |||
5928 | 6064 |
| |
5929 | 6065 |
| |
5930 | 6066 |
| |
| 6067 | + | |
| 6068 | + | |
| 6069 | + | |
| 6070 | + | |
| 6071 | + | |
5931 | 6072 |
| |
5932 | 6073 |
| |
| 6074 | + | |
5933 | 6075 |
| |
5934 | 6076 |
| |
5935 | 6077 |
| |
5936 | 6078 |
| |
5937 | 6079 |
| |
5938 | 6080 |
| |
5939 |
| - | |
| 6081 | + | |
5940 | 6082 |
| |
5941 | 6083 |
| |
5942 | 6084 |
| |
| |||
6020 | 6162 |
| |
6021 | 6163 |
| |
6022 | 6164 |
| |
| 6165 | + | |
| 6166 | + | |
6023 | 6167 |
| |
| 6168 | + | |
6024 | 6169 |
| |
6025 | 6170 |
| |
6026 | 6171 |
| |
| |||
6029 | 6174 |
| |
6030 | 6175 |
| |
6031 | 6176 |
| |
| 6177 | + | |
| 6178 | + | |
6032 | 6179 |
| |
6033 | 6180 |
| |
6034 | 6181 |
| |
| |||
6112 | 6259 |
| |
6113 | 6260 |
| |
6114 | 6261 |
| |
| 6262 | + | |
6115 | 6263 |
| |
6116 | 6264 |
| |
6117 | 6265 |
| |
|
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 | |
---|---|---|---|
| |||
71 | 71 |
| |
72 | 72 |
| |
73 | 73 |
| |
| 74 | + | |
74 | 75 |
| |
75 | 76 |
| |
76 | 77 |
| |
| |||
1827 | 1828 |
| |
1828 | 1829 |
| |
1829 | 1830 |
| |
1830 |
| - | |
| 1831 | + | |
1831 | 1832 |
| |
1832 | 1833 |
| |
1833 | 1834 |
| |
| |||
2039 | 2040 |
| |
2040 | 2041 |
| |
2041 | 2042 |
| |
| 2043 | + | |
2042 | 2044 |
| |
2043 | 2045 |
| |
2044 | 2046 |
| |
| |||
2051 | 2053 |
| |
2052 | 2054 |
| |
2053 | 2055 |
| |
| 2056 | + | |
| 2057 | + | |
2054 | 2058 |
| |
2055 | 2059 |
| |
2056 | 2060 |
| |
| |||
2164 | 2168 |
| |
2165 | 2169 |
| |
2166 | 2170 |
| |
2167 |
| - | |
| 2171 | + | |
2168 | 2172 |
| |
2169 | 2173 |
| |
2170 | 2174 |
| |
| |||
2240 | 2244 |
| |
2241 | 2245 |
| |
2242 | 2246 |
| |
| 2247 | + | |
2243 | 2248 |
| |
2244 | 2249 |
| |
2245 | 2250 |
| |
|
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)