forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit46e3a16
committed
When FOR UPDATE/SHARE is used with LIMIT, put the LockRows plan node
underneath the Limit node, not atop it. This fixes the old problem that sucha query might unexpectedly return fewer rows than the LIMIT says, due toLockRows discarding updated rows.There is a related problem that LockRows might destroy the sort orderingproduced by earlier steps; but fixing that by pushing LockRows below Sortwould create serious performance problems that are unjustified in manyreal-world applications, as well as potential deadlock problems from lockingmany more rows than expected. Instead, keep the present semantics of applyingFOR UPDATE after ORDER BY within a single query level; but allow the user tospecify the other way by writing FOR UPDATE in a sub-select. To make thatwork, track whether FOR UPDATE appeared explicitly in sub-selects or gotpushed down from the parent, and don't flatten a sub-select that contained anexplicit FOR UPDATE.1 parent44956c5 commit46e3a16
File tree
13 files changed
+225
-126
lines changed- doc/src/sgml/ref
- src
- backend
- nodes
- optimizer
- plan
- prep
- parser
- rewrite
- utils/adt
- include
- catalog
- nodes
- parser
13 files changed
+225
-126
lines changedLines changed: 83 additions & 41 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1 | 1 |
| |
2 |
| - | |
| 2 | + | |
3 | 3 |
| |
4 | 4 |
| |
5 | 5 |
| |
| |||
1092 | 1092 |
| |
1093 | 1093 |
| |
1094 | 1094 |
| |
1095 |
| - | |
| 1095 | + | |
| 1096 | + | |
| 1097 | + | |
1096 | 1098 |
| |
1097 | 1099 |
| |
1098 | 1100 |
| |
1099 |
| - | |
1100 |
| - | |
1101 |
| - | |
1102 |
| - | |
1103 |
| - | |
1104 |
| - | |
1105 |
| - | |
1106 |
| - | |
1107 |
| - | |
1108 |
| - | |
1109 |
| - | |
1110 |
| - | |
1111 | 1101 |
| |
1112 | 1102 |
| |
1113 | 1103 |
| |
| |||
1117 | 1107 |
| |
1118 | 1108 |
| |
1119 | 1109 |
| |
| 1110 | + | |
| 1111 | + | |
| 1112 | + | |
| 1113 | + | |
| 1114 | + | |
| 1115 | + | |
| 1116 | + | |
| 1117 | + | |
| 1118 | + | |
| 1119 | + | |
| 1120 | + | |
| 1121 | + | |
| 1122 | + | |
1120 | 1123 |
| |
1121 | 1124 |
| |
1122 | 1125 |
| |
1123 | 1126 |
| |
1124 | 1127 |
| |
1125 | 1128 |
| |
1126 |
| - | |
| 1129 | + | |
1127 | 1130 |
| |
1128 | 1131 |
| |
1129 | 1132 |
| |
| |||
1151 | 1154 |
| |
1152 | 1155 |
| |
1153 | 1156 |
| |
| 1157 | + | |
| 1158 | + | |
| 1159 | + | |
| 1160 | + | |
| 1161 | + | |
| 1162 | + | |
| 1163 | + | |
| 1164 | + | |
| 1165 | + | |
| 1166 | + | |
| 1167 | + | |
| 1168 | + | |
| 1169 | + | |
| 1170 | + | |
| 1171 | + | |
| 1172 | + | |
| 1173 | + | |
| 1174 | + | |
| 1175 | + | |
| 1176 | + | |
| 1177 | + | |
| 1178 | + | |
| 1179 | + | |
| 1180 | + | |
| 1181 | + | |
| 1182 | + | |
| 1183 | + | |
| 1184 | + | |
| 1185 | + | |
| 1186 | + | |
1154 | 1187 |
| |
1155 | 1188 |
| |
1156 | 1189 |
| |
| |||
1177 | 1210 |
| |
1178 | 1211 |
| |
1179 | 1212 |
| |
1180 |
| - | |
1181 |
| - | |
1182 |
| - | |
1183 |
| - | |
1184 |
| - | |
1185 |
| - | |
1186 |
| - | |
1187 |
| - | |
1188 |
| - | |
1189 |
| - | |
1190 |
| - | |
1191 |
| - | |
1192 |
| - | |
1193 |
| - | |
1194 |
| - | |
1195 |
| - | |
1196 |
| - | |
1197 |
| - | |
1198 |
| - | |
1199 |
| - | |
1200 |
| - | |
1201 |
| - | |
1202 |
| - | |
1203 |
| - | |
| 1213 | + | |
| 1214 | + | |
| 1215 | + | |
| 1216 | + | |
| 1217 | + | |
| 1218 | + | |
| 1219 | + | |
| 1220 | + | |
| 1221 | + | |
| 1222 | + | |
| 1223 | + | |
| 1224 | + | |
| 1225 | + | |
| 1226 | + | |
| 1227 | + | |
| 1228 | + | |
| 1229 | + | |
| 1230 | + | |
| 1231 | + | |
| 1232 | + | |
1204 | 1233 |
| |
1205 | 1234 |
| |
1206 | 1235 |
| |
| |||
1541 | 1570 |
| |
1542 | 1571 |
| |
1543 | 1572 |
| |
1544 |
| - | |
| 1573 | + | |
1545 | 1574 |
| |
1546 | 1575 |
| |
1547 | 1576 |
| |
1548 |
| - | |
| 1577 | + | |
1549 | 1578 |
| |
1550 | 1579 |
| |
1551 | 1580 |
| |
1552 | 1581 |
| |
| 1582 | + | |
| 1583 | + | |
| 1584 | + | |
| 1585 | + | |
| 1586 | + | |
| 1587 | + | |
| 1588 | + | |
| 1589 | + | |
| 1590 | + | |
| 1591 | + | |
| 1592 | + | |
| 1593 | + | |
| 1594 | + | |
1553 | 1595 |
| |
1554 | 1596 |
| |
1555 | 1597 |
| |
|
Lines changed: 3 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
15 | 15 |
| |
16 | 16 |
| |
17 | 17 |
| |
18 |
| - | |
| 18 | + | |
19 | 19 |
| |
20 | 20 |
| |
21 | 21 |
| |
| |||
1859 | 1859 |
| |
1860 | 1860 |
| |
1861 | 1861 |
| |
| 1862 | + | |
1862 | 1863 |
| |
1863 | 1864 |
| |
1864 | 1865 |
| |
| |||
2223 | 2224 |
| |
2224 | 2225 |
| |
2225 | 2226 |
| |
| 2227 | + | |
2226 | 2228 |
| |
2227 | 2229 |
| |
2228 | 2230 |
| |
|
Lines changed: 3 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
22 | 22 |
| |
23 | 23 |
| |
24 | 24 |
| |
25 |
| - | |
| 25 | + | |
26 | 26 |
| |
27 | 27 |
| |
28 | 28 |
| |
| |||
860 | 860 |
| |
861 | 861 |
| |
862 | 862 |
| |
| 863 | + | |
863 | 864 |
| |
864 | 865 |
| |
865 | 866 |
| |
| |||
2198 | 2199 |
| |
2199 | 2200 |
| |
2200 | 2201 |
| |
| 2202 | + | |
2201 | 2203 |
| |
2202 | 2204 |
| |
2203 | 2205 |
| |
|
Lines changed: 3 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
1987 | 1987 |
| |
1988 | 1988 |
| |
1989 | 1989 |
| |
| 1990 | + | |
1990 | 1991 |
| |
1991 | 1992 |
| |
1992 | 1993 |
| |
| |||
2036 | 2037 |
| |
2037 | 2038 |
| |
2038 | 2039 |
| |
| 2040 | + | |
2039 | 2041 |
| |
2040 | 2042 |
| |
2041 | 2043 |
| |
|
Lines changed: 3 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
203 | 203 |
| |
204 | 204 |
| |
205 | 205 |
| |
| 206 | + | |
206 | 207 |
| |
207 | 208 |
| |
208 | 209 |
| |
| |||
295 | 296 |
| |
296 | 297 |
| |
297 | 298 |
| |
| 299 | + | |
298 | 300 |
| |
299 | 301 |
| |
300 | 302 |
| |
|
Lines changed: 37 additions & 20 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 |
| |
| |||
1638 | 1638 |
| |
1639 | 1639 |
| |
1640 | 1640 |
| |
1641 |
| - | |
1642 |
| - | |
1643 |
| - | |
1644 |
| - | |
1645 |
| - | |
1646 |
| - | |
1647 |
| - | |
1648 |
| - | |
1649 |
| - | |
1650 |
| - | |
1651 |
| - | |
1652 |
| - | |
1653 |
| - | |
| 1641 | + | |
1654 | 1642 |
| |
1655 | 1643 |
| |
1656 | 1644 |
| |
| |||
1660 | 1648 |
| |
1661 | 1649 |
| |
1662 | 1650 |
| |
| 1651 | + | |
| 1652 | + | |
| 1653 | + | |
| 1654 | + | |
| 1655 | + | |
| 1656 | + | |
| 1657 | + | |
| 1658 | + | |
| 1659 | + | |
| 1660 | + | |
| 1661 | + | |
| 1662 | + | |
| 1663 | + | |
| 1664 | + | |
| 1665 | + | |
| 1666 | + | |
| 1667 | + | |
1663 | 1668 |
| |
1664 | 1669 |
| |
1665 | 1670 |
| |
| |||
1795 | 1800 |
| |
1796 | 1801 |
| |
1797 | 1802 |
| |
1798 |
| - | |
1799 |
| - | |
1800 |
| - | |
1801 |
| - | |
1802 | 1803 |
| |
1803 | 1804 |
| |
1804 | 1805 |
| |
1805 | 1806 |
| |
1806 | 1807 |
| |
1807 |
| - | |
| 1808 | + | |
| 1809 | + | |
1808 | 1810 |
| |
| 1811 | + | |
| 1812 | + | |
| 1813 | + | |
| 1814 | + | |
| 1815 | + | |
1809 | 1816 |
| |
| 1817 | + | |
| 1818 | + | |
| 1819 | + | |
| 1820 | + | |
| 1821 | + | |
| 1822 | + | |
| 1823 | + | |
| 1824 | + | |
| 1825 | + | |
| 1826 | + | |
1810 | 1827 |
| |
1811 | 1828 |
| |
| 1829 | + | |
1812 | 1830 |
| |
1813 | 1831 |
| |
1814 | 1832 |
| |
| |||
1838 | 1856 |
| |
1839 | 1857 |
| |
1840 | 1858 |
| |
1841 |
| - | |
1842 | 1859 |
| |
1843 | 1860 |
| |
1844 | 1861 |
| |
|
0 commit comments
Comments
(0)