forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitf58b230
committed
Cache if PathTarget and RestrictInfos contain volatile functions
Here we aim to reduce duplicate work done by contain_volatile_functions()by caching whether PathTargets and RestrictInfos contain any volatilefunctions the first time contain_volatile_functions() is called for them.Any future calls for these nodes just use the cached value rather thangoing to the trouble of recursively checking the sub-node all over again.Thanks to Tom Lane for the idea.Any locations in the code which make changes to a PathTarget orRestrictInfo which could change the outcome of the volatility check mustchange the cached value back to VOLATILITY_UNKNOWN again.contain_volatile_functions() is the only code in charge of setting thecache value to either VOLATILITY_VOLATILE or VOLATILITY_NOVOLATILE.Some existing code does benefit from this additional caching, however,this change is mainly aimed at an upcoming patch that must check forvolatility during the join search. Repeated volatility checks in thatcase can become very expensive when the join search contains more than afew relations.Author: David RowleyDiscussion:https://postgr.es/m/3795226.1614059027@sss.pgh.pa.us1 parentb64654d commitf58b230
File tree
8 files changed
+134
-20
lines changed- src
- backend
- nodes
- optimizer
- path
- plan
- util
- include/nodes
8 files changed
+134
-20
lines changedLines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2309 | 2309 |
| |
2310 | 2310 |
| |
2311 | 2311 |
| |
| 2312 | + | |
2312 | 2313 |
| |
2313 | 2314 |
| |
2314 | 2315 |
| |
|
Lines changed: 2 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2471 | 2471 |
| |
2472 | 2472 |
| |
2473 | 2473 |
| |
| 2474 | + | |
2474 | 2475 |
| |
2475 | 2476 |
| |
2476 | 2477 |
| |
| |||
2495 | 2496 |
| |
2496 | 2497 |
| |
2497 | 2498 |
| |
| 2499 | + | |
2498 | 2500 |
| |
2499 | 2501 |
| |
2500 | 2502 |
| |
|
Lines changed: 22 additions & 18 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
134 | 134 |
| |
135 | 135 |
| |
136 | 136 |
| |
137 |
| - | |
| 137 | + | |
| 138 | + | |
138 | 139 |
| |
139 | 140 |
| |
140 | 141 |
| |
| |||
2177 | 2178 |
| |
2178 | 2179 |
| |
2179 | 2180 |
| |
2180 |
| - | |
2181 | 2181 |
| |
2182 | 2182 |
| |
2183 |
| - | |
| 2183 | + | |
2184 | 2184 |
| |
| 2185 | + | |
| 2186 | + | |
2185 | 2187 |
| |
2186 | 2188 |
| |
2187 | 2189 |
| |
| |||
3390 | 3392 |
| |
3391 | 3393 |
| |
3392 | 3394 |
| |
3393 |
| - | |
| 3395 | + | |
3394 | 3396 |
| |
3395 |
| - | |
| 3397 | + | |
3396 | 3398 |
| |
3397 | 3399 |
| |
3398 | 3400 |
| |
3399 | 3401 |
| |
3400 |
| - | |
3401 |
| - | |
3402 |
| - | |
3403 |
| - | |
3404 |
| - | |
| 3402 | + | |
| 3403 | + | |
| 3404 | + | |
| 3405 | + | |
| 3406 | + | |
| 3407 | + | |
3405 | 3408 |
| |
3406 |
| - | |
| 3409 | + | |
3407 | 3410 |
| |
3408 | 3411 |
| |
3409 |
| - | |
3410 |
| - | |
3411 |
| - | |
| 3412 | + | |
| 3413 | + | |
| 3414 | + | |
3412 | 3415 |
| |
3413 |
| - | |
| 3416 | + | |
3414 | 3417 |
| |
3415 | 3418 |
| |
3416 |
| - | |
| 3419 | + | |
3417 | 3420 |
| |
3418 | 3421 |
| |
3419 | 3422 |
| |
3420 |
| - | |
| 3423 | + | |
3421 | 3424 |
| |
3422 | 3425 |
| |
3423 | 3426 |
| |
| 3427 | + | |
3424 | 3428 |
| |
3425 | 3429 |
| |
3426 | 3430 |
| |
| |||
3430 | 3434 |
| |
3431 | 3435 |
| |
3432 | 3436 |
| |
3433 |
| - | |
| 3437 | + | |
3434 | 3438 |
| |
3435 | 3439 |
| |
3436 | 3440 |
| |
|
Lines changed: 2 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2657 | 2657 |
| |
2658 | 2658 |
| |
2659 | 2659 |
| |
2660 |
| - | |
| 2660 | + | |
2661 | 2661 |
| |
2662 | 2662 |
| |
2663 | 2663 |
| |
| |||
2694 | 2694 |
| |
2695 | 2695 |
| |
2696 | 2696 |
| |
2697 |
| - | |
| 2697 | + | |
2698 | 2698 |
| |
2699 | 2699 |
|
Lines changed: 67 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
432 | 432 |
| |
433 | 433 |
| |
434 | 434 |
| |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
435 | 445 |
| |
436 | 446 |
| |
437 | 447 |
| |
| |||
461 | 471 |
| |
462 | 472 |
| |
463 | 473 |
| |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
464 | 531 |
| |
465 | 532 |
| |
466 | 533 |
| |
|
Lines changed: 7 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
137 | 137 |
| |
138 | 138 |
| |
139 | 139 |
| |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
140 | 147 |
| |
141 | 148 |
| |
142 | 149 |
| |
|
Lines changed: 17 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
623 | 623 |
| |
624 | 624 |
| |
625 | 625 |
| |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
626 | 633 |
| |
627 | 634 |
| |
628 | 635 |
| |
| |||
724 | 731 |
| |
725 | 732 |
| |
726 | 733 |
| |
| 734 | + | |
| 735 | + | |
| 736 | + | |
| 737 | + | |
| 738 | + | |
| 739 | + | |
| 740 | + | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
727 | 744 |
| |
728 | 745 |
| |
729 | 746 |
| |
|
Lines changed: 16 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1055 | 1055 |
| |
1056 | 1056 |
| |
1057 | 1057 |
| |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
| 1065 | + | |
| 1066 | + | |
| 1067 | + | |
| 1068 | + | |
1058 | 1069 |
| |
1059 | 1070 |
| |
1060 | 1071 |
| |
| |||
1086 | 1097 |
| |
1087 | 1098 |
| |
1088 | 1099 |
| |
| 1100 | + | |
| 1101 | + | |
1089 | 1102 |
| |
1090 | 1103 |
| |
1091 | 1104 |
| |
| |||
2016 | 2029 |
| |
2017 | 2030 |
| |
2018 | 2031 |
| |
| 2032 | + | |
| 2033 | + | |
| 2034 | + | |
2019 | 2035 |
| |
2020 | 2036 |
| |
2021 | 2037 |
| |
|
0 commit comments
Comments
(0)