forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit14c57cb
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 parenta8ad192 commit14c57cb
File tree
17 files changed
+423
-34
lines changed- src
- backend
- access
- heap
- index
- catalog
- commands
- executor
- utils/cache
- include
- storage
- utils
- test/isolation
- expected
- specs
17 files changed
+423
-34
lines changed| 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 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
| 54 | + | |
| 55 | + | |
54 | 56 | | |
55 | 57 | | |
56 | 58 | | |
| |||
76 | 78 | | |
77 | 79 | | |
78 | 80 | | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
79 | 87 | | |
80 | 88 | | |
81 | 89 | | |
| |||
115 | 123 | | |
116 | 124 | | |
117 | 125 | | |
| 126 | + | |
| 127 | + | |
118 | 128 | | |
119 | 129 | | |
120 | 130 | | |
| |||
2975 | 2985 | | |
2976 | 2986 | | |
2977 | 2987 | | |
| 2988 | + | |
| 2989 | + | |
| 2990 | + | |
| 2991 | + | |
2978 | 2992 | | |
2979 | 2993 | | |
2980 | 2994 | | |
| |||
3821 | 3835 | | |
3822 | 3836 | | |
3823 | 3837 | | |
| 3838 | + | |
| 3839 | + | |
| 3840 | + | |
| 3841 | + | |
| 3842 | + | |
| 3843 | + | |
| 3844 | + | |
| 3845 | + | |
| 3846 | + | |
| 3847 | + | |
| 3848 | + | |
| 3849 | + | |
| 3850 | + | |
| 3851 | + | |
| 3852 | + | |
| 3853 | + | |
| 3854 | + | |
| 3855 | + | |
| 3856 | + | |
| 3857 | + | |
| 3858 | + | |
| 3859 | + | |
| 3860 | + | |
| 3861 | + | |
| 3862 | + | |
| 3863 | + | |
| 3864 | + | |
| 3865 | + | |
| 3866 | + | |
| 3867 | + | |
| 3868 | + | |
| 3869 | + | |
| 3870 | + | |
| 3871 | + | |
| 3872 | + | |
| 3873 | + | |
| 3874 | + | |
| 3875 | + | |
| 3876 | + | |
| 3877 | + | |
| 3878 | + | |
| 3879 | + | |
| 3880 | + | |
| 3881 | + | |
| 3882 | + | |
| 3883 | + | |
| 3884 | + | |
| 3885 | + | |
| 3886 | + | |
| 3887 | + | |
| 3888 | + | |
| 3889 | + | |
| 3890 | + | |
| 3891 | + | |
| 3892 | + | |
| 3893 | + | |
| 3894 | + | |
| 3895 | + | |
| 3896 | + | |
| 3897 | + | |
| 3898 | + | |
| 3899 | + | |
| 3900 | + | |
| 3901 | + | |
| 3902 | + | |
| 3903 | + | |
| 3904 | + | |
| 3905 | + | |
| 3906 | + | |
| 3907 | + | |
| 3908 | + | |
| 3909 | + | |
| 3910 | + | |
| 3911 | + | |
| 3912 | + | |
| 3913 | + | |
| 3914 | + | |
| 3915 | + | |
| 3916 | + | |
| 3917 | + | |
| 3918 | + | |
| 3919 | + | |
| 3920 | + | |
| 3921 | + | |
| 3922 | + | |
| 3923 | + | |
| 3924 | + | |
| 3925 | + | |
| 3926 | + | |
| 3927 | + | |
| 3928 | + | |
| 3929 | + | |
| 3930 | + | |
| 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 | + | |
3824 | 3960 | | |
3825 | 3961 | | |
3826 | 3962 | | |
| |||
5848 | 5984 | | |
5849 | 5985 | | |
5850 | 5986 | | |
| 5987 | + | |
| 5988 | + | |
| 5989 | + | |
| 5990 | + | |
| 5991 | + | |
5851 | 5992 | | |
5852 | 5993 | | |
| 5994 | + | |
5853 | 5995 | | |
5854 | 5996 | | |
5855 | 5997 | | |
5856 | 5998 | | |
5857 | 5999 | | |
5858 | 6000 | | |
5859 | | - | |
| 6001 | + | |
5860 | 6002 | | |
5861 | 6003 | | |
5862 | 6004 | | |
| |||
5940 | 6082 | | |
5941 | 6083 | | |
5942 | 6084 | | |
| 6085 | + | |
| 6086 | + | |
5943 | 6087 | | |
| 6088 | + | |
5944 | 6089 | | |
5945 | 6090 | | |
5946 | 6091 | | |
| |||
5949 | 6094 | | |
5950 | 6095 | | |
5951 | 6096 | | |
| 6097 | + | |
| 6098 | + | |
5952 | 6099 | | |
5953 | 6100 | | |
5954 | 6101 | | |
| |||
6032 | 6179 | | |
6033 | 6180 | | |
6034 | 6181 | | |
| 6182 | + | |
6035 | 6183 | | |
6036 | 6184 | | |
6037 | 6185 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
674 | 674 | | |
675 | 675 | | |
676 | 676 | | |
677 | | - | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
678 | 680 | | |
679 | 681 | | |
680 | 682 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
| 71 | + | |
71 | 72 | | |
72 | 73 | | |
73 | 74 | | |
| |||
1796 | 1797 | | |
1797 | 1798 | | |
1798 | 1799 | | |
1799 | | - | |
| 1800 | + | |
1800 | 1801 | | |
1801 | 1802 | | |
1802 | 1803 | | |
| |||
2012 | 2013 | | |
2013 | 2014 | | |
2014 | 2015 | | |
| 2016 | + | |
2015 | 2017 | | |
2016 | 2018 | | |
2017 | 2019 | | |
| |||
2024 | 2026 | | |
2025 | 2027 | | |
2026 | 2028 | | |
| 2029 | + | |
| 2030 | + | |
2027 | 2031 | | |
2028 | 2032 | | |
2029 | 2033 | | |
| |||
2133 | 2137 | | |
2134 | 2138 | | |
2135 | 2139 | | |
2136 | | - | |
| 2140 | + | |
2137 | 2141 | | |
2138 | 2142 | | |
2139 | 2143 | | |
| |||
2202 | 2206 | | |
2203 | 2207 | | |
2204 | 2208 | | |
| 2209 | + | |
2205 | 2210 | | |
2206 | 2211 | | |
2207 | 2212 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
133 | 133 | | |
134 | 134 | | |
135 | 135 | | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
136 | 145 | | |
137 | 146 | | |
138 | 147 | | |
| |||
0 commit comments
Comments
(0)