forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit61e5328
committed
Make FOR UPDATE/SHARE in the primary query not propagate into WITH queries;
for example in WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATEthe FOR UPDATE will now affect bar but not foo. This is more useful andconsistent than the original 8.4 behavior, which tried to propagate FOR UPDATEinto the WITH query but always failed due to assorted implementationrestrictions. Even though we are in process of removing those restrictions,it seems correct on philosophical grounds to not let the outer query'sFOR UPDATE affect the WITH query.In passing, fix isLockedRel which frequently got things wrong innested-subquery cases: "FOR UPDATE OF foo" applies to an alias foo in thecurrent query level, not subqueries. This has been broken for a long time,but it doesn't seem worth back-patching further than 8.4 because the actualconsequences are minimal. At worst the parser would sometimes getRowShareLock on a relation when it should be AccessShareLock or vice versa.That would only make a difference if someone were using ExclusiveLockconcurrently, which no standard operation does, and anyway FOR UPDATEdoesn't result in visible changes so it's not clear that the someone wouldnotice any problem. Between that and the fact that FOR UPDATE barely workswith subqueries at all in existing releases, I'm not excited about worryingabout it.1 parentb091b97 commit61e5328
File tree
10 files changed
+65
-121
lines changed- doc/src/sgml/ref
- src
- backend
- parser
- rewrite
- include/parser
10 files changed
+65
-121
lines changedLines changed: 6 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1 | 1 |
| |
2 |
| - | |
| 2 | + | |
3 | 3 |
| |
4 | 4 |
| |
5 | 5 |
| |
| |||
1127 | 1127 |
| |
1128 | 1128 |
| |
1129 | 1129 |
| |
| 1130 | + | |
| 1131 | + | |
| 1132 | + | |
| 1133 | + | |
| 1134 | + | |
1130 | 1135 |
| |
1131 | 1136 |
| |
1132 | 1137 |
| |
|
Lines changed: 11 additions & 53 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
17 | 17 |
| |
18 | 18 |
| |
19 | 19 |
| |
20 |
| - | |
| 20 | + | |
21 | 21 |
| |
22 | 22 |
| |
23 | 23 |
| |
| |||
138 | 138 |
| |
139 | 139 |
| |
140 | 140 |
| |
141 |
| - | |
| 141 | + | |
| 142 | + | |
142 | 143 |
| |
143 | 144 |
| |
144 | 145 |
| |
145 | 146 |
| |
146 | 147 |
| |
| 148 | + | |
147 | 149 |
| |
148 | 150 |
| |
149 | 151 |
| |
| |||
1424 | 1426 |
| |
1425 | 1427 |
| |
1426 | 1428 |
| |
1427 |
| - | |
| 1429 | + | |
1428 | 1430 |
| |
1429 | 1431 |
| |
1430 | 1432 |
| |
| |||
2051 | 2053 |
| |
2052 | 2054 |
| |
2053 | 2055 |
| |
2054 |
| - | |
| 2056 | + | |
2055 | 2057 |
| |
2056 | 2058 |
| |
2057 | 2059 |
| |
| |||
2093 | 2095 |
| |
2094 | 2096 |
| |
2095 | 2097 |
| |
2096 |
| - | |
2097 |
| - | |
2098 |
| - | |
2099 |
| - | |
2100 |
| - | |
2101 |
| - | |
2102 |
| - | |
2103 |
| - | |
2104 |
| - | |
2105 |
| - | |
2106 |
| - | |
2107 |
| - | |
2108 |
| - | |
2109 |
| - | |
2110 |
| - | |
2111 |
| - | |
2112 |
| - | |
2113 |
| - | |
2114 |
| - | |
2115 |
| - | |
2116 |
| - | |
2117 |
| - | |
2118 |
| - | |
2119 |
| - | |
2120 | 2098 |
| |
2121 |
| - | |
| 2099 | + | |
2122 | 2100 |
| |
2123 | 2101 |
| |
2124 | 2102 |
| |
| |||
2185 | 2163 |
| |
2186 | 2164 |
| |
2187 | 2165 |
| |
2188 |
| - | |
2189 |
| - | |
2190 |
| - | |
2191 |
| - | |
2192 |
| - | |
2193 |
| - | |
2194 |
| - | |
2195 |
| - | |
2196 |
| - | |
2197 |
| - | |
2198 |
| - | |
2199 |
| - | |
2200 |
| - | |
2201 |
| - | |
2202 |
| - | |
2203 |
| - | |
2204 |
| - | |
2205 |
| - | |
2206 |
| - | |
2207 |
| - | |
2208 |
| - | |
2209 |
| - | |
2210 |
| - | |
2211 |
| - | |
| 2166 | + | |
| 2167 | + | |
| 2168 | + | |
| 2169 | + | |
2212 | 2170 |
| |
2213 | 2171 |
| |
2214 | 2172 |
| |
|
Lines changed: 3 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
479 | 479 |
| |
480 | 480 |
| |
481 | 481 |
| |
482 |
| - | |
| 482 | + | |
| 483 | + | |
483 | 484 |
| |
484 | 485 |
| |
485 | 486 |
| |
|
Lines changed: 2 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
229 | 229 |
| |
230 | 230 |
| |
231 | 231 |
| |
232 |
| - | |
| 232 | + | |
233 | 233 |
| |
234 | 234 |
| |
235 | 235 |
| |
|
Lines changed: 2 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
1259 | 1259 |
| |
1260 | 1260 |
| |
1261 | 1261 |
| |
1262 |
| - | |
| 1262 | + | |
1263 | 1263 |
| |
1264 | 1264 |
| |
1265 | 1265 |
| |
|
Lines changed: 32 additions & 27 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
38 | 38 |
| |
39 | 39 |
| |
40 | 40 |
| |
41 |
| - | |
42 | 41 |
| |
43 | 42 |
| |
44 | 43 |
| |
| |||
909 | 908 |
| |
910 | 909 |
| |
911 | 910 |
| |
912 |
| - | |
| 911 | + | |
913 | 912 |
| |
914 | 913 |
| |
915 | 914 |
| |
| |||
1454 | 1453 |
| |
1455 | 1454 |
| |
1456 | 1455 |
| |
1457 |
| - | |
| 1456 | + | |
| 1457 | + | |
| 1458 | + | |
| 1459 | + | |
| 1460 | + | |
1458 | 1461 |
| |
1459 |
| - | |
1460 |
| - | |
| 1462 | + | |
| 1463 | + | |
1461 | 1464 |
| |
1462 |
| - | |
1463 |
| - | |
| 1465 | + | |
| 1466 | + | |
| 1467 | + | |
| 1468 | + | |
| 1469 | + | |
| 1470 | + | |
| 1471 | + | |
| 1472 | + | |
| 1473 | + | |
| 1474 | + | |
1464 | 1475 |
| |
1465 |
| - | |
| 1476 | + | |
1466 | 1477 |
| |
1467 |
| - | |
| 1478 | + | |
1468 | 1479 |
| |
1469 |
| - | |
| 1480 | + | |
| 1481 | + | |
| 1482 | + | |
| 1483 | + | |
| 1484 | + | |
| 1485 | + | |
| 1486 | + | |
1470 | 1487 |
| |
1471 |
| - | |
1472 |
| - | |
1473 |
| - | |
1474 |
| - | |
1475 |
| - | |
1476 |
| - | |
| 1488 | + | |
1477 | 1489 |
| |
1478 |
| - | |
1479 |
| - | |
1480 |
| - | |
1481 |
| - | |
1482 |
| - | |
1483 |
| - | |
| 1490 | + | |
1484 | 1491 |
| |
1485 |
| - | |
1486 |
| - | |
1487 |
| - | |
| 1492 | + | |
| 1493 | + | |
1488 | 1494 |
| |
1489 | 1495 |
| |
1490 |
| - | |
1491 | 1496 |
| |
1492 | 1497 |
| |
1493 | 1498 |
| |
|
Lines changed: 2 additions & 30 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
7 | 7 |
| |
8 | 8 |
| |
9 | 9 |
| |
10 |
| - | |
| 10 | + | |
11 | 11 |
| |
12 | 12 |
| |
13 | 13 |
| |
| |||
1242 | 1242 |
| |
1243 | 1243 |
| |
1244 | 1244 |
| |
1245 |
| - | |
1246 |
| - | |
1247 |
| - | |
1248 |
| - | |
1249 |
| - | |
1250 |
| - | |
1251 |
| - | |
1252 |
| - | |
1253 |
| - | |
1254 |
| - | |
1255 |
| - | |
1256 |
| - | |
1257 |
| - | |
1258 |
| - | |
1259 |
| - | |
1260 |
| - | |
1261 |
| - | |
1262 |
| - | |
1263 |
| - | |
1264 |
| - | |
1265 |
| - | |
1266 |
| - | |
1267 |
| - | |
1268 |
| - | |
1269 |
| - | |
1270 |
| - | |
1271 |
| - | |
1272 |
| - | |
1273 |
| - | |
| 1245 | + | |
1274 | 1246 |
| |
1275 | 1247 |
| |
1276 | 1248 |
| |
|
Lines changed: 3 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
7 | 7 |
| |
8 | 8 |
| |
9 | 9 |
| |
10 |
| - | |
| 10 | + | |
11 | 11 |
| |
12 | 12 |
| |
13 | 13 |
| |
| |||
23 | 23 |
| |
24 | 24 |
| |
25 | 25 |
| |
26 |
| - | |
| 26 | + | |
| 27 | + | |
27 | 28 |
| |
28 | 29 |
| |
29 | 30 |
| |
|
Lines changed: 2 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
7 | 7 |
| |
8 | 8 |
| |
9 | 9 |
| |
10 |
| - | |
| 10 | + | |
11 | 11 |
| |
12 | 12 |
| |
13 | 13 |
| |
| |||
103 | 103 |
| |
104 | 104 |
| |
105 | 105 |
| |
| 106 | + | |
106 | 107 |
| |
107 | 108 |
| |
108 | 109 |
| |
|
Lines changed: 2 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
7 | 7 |
| |
8 | 8 |
| |
9 | 9 |
| |
10 |
| - | |
| 10 | + | |
11 | 11 |
| |
12 | 12 |
| |
13 | 13 |
| |
| |||
81 | 81 |
| |
82 | 82 |
| |
83 | 83 |
| |
| 84 | + | |
84 | 85 |
| |
85 | 86 |
| |
86 | 87 |
| |
|
0 commit comments
Comments
(0)