Repository navigation
Commit 1ebaf28
committed
Bound per-row memory in writable clauses
SET and REMOVE create EState-owned tuple slots for every updated entity and
run transient builders in an executor-lifetime memory context. DELETE RLS
slots have the same ownership problem, while MERGE SET shares the update
path. Large writable statements therefore retain slots and scratch until
executor shutdown.
Use standalone slots for per-row writes and RLS checks, release them
explicitly, and allocate update/delete scratch in the writable CustomScan's
per-tuple context. Reset that context before each input row while retaining
node-lifetime slots in the EState. Copy properties for paths retained by
MERGE's cross-row de-duplication state into the query-lifetime context.
Add eager multi-row MERGE coverage for ON CREATE SET and ON MATCH SET, plus
terminal and non-terminal repeated-path coverage across row-context resets.1 parent 8014174 commit 1ebaf28
5 files changed
Lines changed: 230 additions & 8 deletions
File tree
- regress
- expected
- sql
- src/backend/executor
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2231 | 2231 | | |
2232 | 2232 | | |
2233 | 2233 | | |
| 2234 | + | |
| 2235 | + | |
| 2236 | + | |
| 2237 | + | |
| 2238 | + | |
| 2239 | + | |
| 2240 | + | |
| 2241 | + | |
| 2242 | + | |
| 2243 | + | |
| 2244 | + | |
| 2245 | + | |
| 2246 | + | |
| 2247 | + | |
| 2248 | + | |
| 2249 | + | |
| 2250 | + | |
| 2251 | + | |
| 2252 | + | |
| 2253 | + | |
| 2254 | + | |
| 2255 | + | |
| 2256 | + | |
| 2257 | + | |
| 2258 | + | |
| 2259 | + | |
| 2260 | + | |
| 2261 | + | |
| 2262 | + | |
| 2263 | + | |
| 2264 | + | |
| 2265 | + | |
| 2266 | + | |
| 2267 | + | |
| 2268 | + | |
| 2269 | + | |
| 2270 | + | |
| 2271 | + | |
| 2272 | + | |
| 2273 | + | |
| 2274 | + | |
| 2275 | + | |
| 2276 | + | |
| 2277 | + | |
| 2278 | + | |
| 2279 | + | |
| 2280 | + | |
| 2281 | + | |
| 2282 | + | |
| 2283 | + | |
| 2284 | + | |
| 2285 | + | |
| 2286 | + | |
| 2287 | + | |
| 2288 | + | |
| 2289 | + | |
| 2290 | + | |
| 2291 | + | |
| 2292 | + | |
| 2293 | + | |
| 2294 | + | |
| 2295 | + | |
| 2296 | + | |
| 2297 | + | |
| 2298 | + | |
| 2299 | + | |
| 2300 | + | |
| 2301 | + | |
| 2302 | + | |
| 2303 | + | |
| 2304 | + | |
| 2305 | + | |
| 2306 | + | |
| 2307 | + | |
| 2308 | + | |
2234 | 2309 | | |
2235 | 2310 | | |
2236 | 2311 | | |
| |||
2241 | 2316 | | |
2242 | 2317 | | |
2243 | 2318 | | |
2244 | | - | |
| 2319 | + | |
2245 | 2320 | | |
2246 | 2321 | | |
2247 | 2322 | | |
2248 | 2323 | | |
2249 | 2324 | | |
| 2325 | + | |
| 2326 | + | |
2250 | 2327 | | |
2251 | 2328 | | |
2252 | 2329 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1085 | 1085 | | |
1086 | 1086 | | |
1087 | 1087 | | |
| 1088 | + | |
| 1089 | + | |
| 1090 | + | |
| 1091 | + | |
| 1092 | + | |
| 1093 | + | |
| 1094 | + | |
| 1095 | + | |
| 1096 | + | |
| 1097 | + | |
| 1098 | + | |
| 1099 | + | |
| 1100 | + | |
| 1101 | + | |
| 1102 | + | |
| 1103 | + | |
| 1104 | + | |
| 1105 | + | |
| 1106 | + | |
| 1107 | + | |
| 1108 | + | |
| 1109 | + | |
| 1110 | + | |
| 1111 | + | |
| 1112 | + | |
| 1113 | + | |
| 1114 | + | |
| 1115 | + | |
| 1116 | + | |
| 1117 | + | |
| 1118 | + | |
| 1119 | + | |
| 1120 | + | |
| 1121 | + | |
| 1122 | + | |
| 1123 | + | |
| 1124 | + | |
| 1125 | + | |
| 1126 | + | |
| 1127 | + | |
| 1128 | + | |
| 1129 | + | |
| 1130 | + | |
| 1131 | + | |
| 1132 | + | |
| 1133 | + | |
1088 | 1134 | | |
1089 | 1135 | | |
1090 | 1136 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
149 | 149 | | |
150 | 150 | | |
151 | 151 | | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
152 | 155 | | |
153 | 156 | | |
154 | 157 | | |
| |||
168 | 171 | | |
169 | 172 | | |
170 | 173 | | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
171 | 177 | | |
172 | 178 | | |
173 | 179 | | |
| |||
386 | 392 | | |
387 | 393 | | |
388 | 394 | | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
389 | 399 | | |
390 | 400 | | |
391 | 401 | | |
| |||
517 | 527 | | |
518 | 528 | | |
519 | 529 | | |
520 | | - | |
| 530 | + | |
| 531 | + | |
521 | 532 | | |
522 | 533 | | |
523 | 534 | | |
| |||
566 | 577 | | |
567 | 578 | | |
568 | 579 | | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
569 | 595 | | |
570 | 596 | | |
571 | 597 | | |
| 598 | + | |
| 599 | + | |
572 | 600 | | |
573 | 601 | | |
574 | 602 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
97 | 97 | | |
98 | 98 | | |
99 | 99 | | |
| 100 | + | |
| 101 | + | |
100 | 102 | | |
101 | 103 | | |
102 | 104 | | |
| |||
428 | 430 | | |
429 | 431 | | |
430 | 432 | | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
431 | 458 | | |
432 | 459 | | |
433 | 460 | | |
| |||
690 | 717 | | |
691 | 718 | | |
692 | 719 | | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
693 | 723 | | |
694 | 724 | | |
695 | 725 | | |
| |||
737 | 767 | | |
738 | 768 | | |
739 | 769 | | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
740 | 773 | | |
741 | 774 | | |
742 | 775 | | |
| |||
795 | 828 | | |
796 | 829 | | |
797 | 830 | | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
798 | 834 | | |
799 | 835 | | |
800 | 836 | | |
| |||
837 | 873 | | |
838 | 874 | | |
839 | 875 | | |
| 876 | + | |
| 877 | + | |
840 | 878 | | |
841 | 879 | | |
842 | 880 | | |
| |||
912 | 950 | | |
913 | 951 | | |
914 | 952 | | |
| 953 | + | |
915 | 954 | | |
916 | 955 | | |
917 | 956 | | |
| |||
0 commit comments