forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitc29a9c3
committed
Fix UPDATE/DELETE WHERE CURRENT OF to support repeated update and update-
then-delete on the current cursor row. The basic fix is that nodeTidscan.chas to apply heap_get_latest_tid() to the current-scan-TID obtained from thecursor query; this ensures we get the latest row version to work with.However, since that only works if the query plan is a TID scan, we also haveto hack the planner to make sure only that type of plan will be selected.(Formerly, the planner might decide to apply a seqscan if the table is verysmall. This change is probably a Good Thing anyway, since it's hard to seehow a seqscan could really win.) That means the execQual.c code to supportCurrentOfExpr as a regular expression type is dead code, so replace it withjust an elog(). Also, add regression tests covering these cases. Notethat the added tests expose the fact that re-fetching an updated rowmisbehaves if the cursor used FOR UPDATE. That's an independent bug thatshould be fixed later. Per report from Dharmendra Goyal.1 parent9226ba8 commitc29a9c3
File tree
6 files changed
+225
-43
lines changed- src
- backend
- executor
- optimizer/path
- include/nodes
- test/regress
- expected
- sql
6 files changed
+225
-43
lines changedLines changed: 6 additions & 34 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 |
| |
| |||
3694 | 3694 |
| |
3695 | 3695 |
| |
3696 | 3696 |
| |
3697 |
| - | |
3698 |
| - | |
| 3697 | + | |
| 3698 | + | |
| 3699 | + | |
3699 | 3700 |
| |
3700 | 3701 |
| |
3701 | 3702 |
| |
3702 | 3703 |
| |
3703 | 3704 |
| |
3704 | 3705 |
| |
3705 |
| - | |
3706 |
| - | |
3707 |
| - | |
3708 |
| - | |
3709 |
| - | |
3710 |
| - | |
3711 |
| - | |
3712 |
| - | |
3713 |
| - | |
3714 |
| - | |
3715 |
| - | |
3716 |
| - | |
3717 |
| - | |
3718 |
| - | |
3719 |
| - | |
3720 |
| - | |
3721 |
| - | |
3722 |
| - | |
3723 |
| - | |
3724 |
| - | |
3725 |
| - | |
3726 |
| - | |
3727 |
| - | |
3728 |
| - | |
3729 |
| - | |
3730 |
| - | |
3731 |
| - | |
3732 |
| - | |
3733 |
| - | |
3734 |
| - | |
3735 |
| - | |
| 3706 | + | |
| 3707 | + | |
3736 | 3708 |
| |
3737 | 3709 |
| |
3738 | 3710 |
| |
|
Lines changed: 17 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 |
| |
| |||
68 | 68 |
| |
69 | 69 |
| |
70 | 70 |
| |
| 71 | + | |
71 | 72 |
| |
72 | 73 |
| |
73 | 74 |
| |
| |||
165 | 166 |
| |
166 | 167 |
| |
167 | 168 |
| |
| 169 | + | |
168 | 170 |
| |
169 | 171 |
| |
170 | 172 |
| |
| |||
182 | 184 |
| |
183 | 185 |
| |
184 | 186 |
| |
| 187 | + | |
| 188 | + | |
| 189 | + | |
185 | 190 |
| |
186 | 191 |
| |
187 | 192 |
| |
| |||
269 | 274 |
| |
270 | 275 |
| |
271 | 276 |
| |
272 |
| - | |
| 277 | + | |
| 278 | + | |
273 | 279 |
| |
274 | 280 |
| |
275 | 281 |
| |
| |||
319 | 325 |
| |
320 | 326 |
| |
321 | 327 |
| |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
322 | 337 |
| |
323 | 338 |
| |
324 | 339 |
| |
|
Lines changed: 26 additions & 6 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
54 | 54 |
| |
55 | 55 |
| |
56 | 56 |
| |
57 |
| - | |
| 57 | + | |
58 | 58 |
| |
59 | 59 |
| |
60 | 60 |
| |
| |||
769 | 769 |
| |
770 | 770 |
| |
771 | 771 |
| |
| 772 | + | |
772 | 773 |
| |
773 | 774 |
| |
774 | 775 |
| |
| |||
778 | 779 |
| |
779 | 780 |
| |
780 | 781 |
| |
781 |
| - | |
782 |
| - | |
783 |
| - | |
784 | 782 |
| |
785 | 783 |
| |
786 | 784 |
| |
| |||
793 | 791 |
| |
794 | 792 |
| |
795 | 793 |
| |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
796 | 800 |
| |
797 | 801 |
| |
798 | 802 |
| |
799 | 803 |
| |
800 | 804 |
| |
801 | 805 |
| |
802 | 806 |
| |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
803 | 823 |
| |
804 | 824 |
| |
805 | 825 |
| |
| |||
2002 | 2022 |
| |
2003 | 2023 |
| |
2004 | 2024 |
| |
2005 |
| - | |
2006 |
| - | |
| 2025 | + | |
| 2026 | + | |
2007 | 2027 |
| |
2008 | 2028 |
| |
2009 | 2029 |
| |
|
Lines changed: 3 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 |
| |
| |||
1087 | 1087 |
| |
1088 | 1088 |
| |
1089 | 1089 |
| |
| 1090 | + | |
1090 | 1091 |
| |
1091 | 1092 |
| |
1092 | 1093 |
| |
| |||
1096 | 1097 |
| |
1097 | 1098 |
| |
1098 | 1099 |
| |
| 1100 | + | |
1099 | 1101 |
| |
1100 | 1102 |
| |
1101 | 1103 |
| |
|
Lines changed: 133 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
982 | 982 |
| |
983 | 983 |
| |
984 | 984 |
| |
| 985 | + | |
| 986 | + | |
| 987 | + | |
| 988 | + | |
| 989 | + | |
| 990 | + | |
| 991 | + | |
| 992 | + | |
| 993 | + | |
| 994 | + | |
| 995 | + | |
| 996 | + | |
| 997 | + | |
| 998 | + | |
| 999 | + | |
| 1000 | + | |
| 1001 | + | |
| 1002 | + | |
| 1003 | + | |
| 1004 | + | |
| 1005 | + | |
| 1006 | + | |
| 1007 | + | |
| 1008 | + | |
| 1009 | + | |
| 1010 | + | |
| 1011 | + | |
| 1012 | + | |
| 1013 | + | |
| 1014 | + | |
| 1015 | + | |
| 1016 | + | |
| 1017 | + | |
| 1018 | + | |
| 1019 | + | |
| 1020 | + | |
| 1021 | + | |
| 1022 | + | |
| 1023 | + | |
| 1024 | + | |
| 1025 | + | |
| 1026 | + | |
| 1027 | + | |
| 1028 | + | |
| 1029 | + | |
| 1030 | + | |
| 1031 | + | |
| 1032 | + | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
| 1042 | + | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
| 1055 | + | |
| 1056 | + | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
| 1065 | + | |
| 1066 | + | |
| 1067 | + | |
| 1068 | + | |
| 1069 | + | |
| 1070 | + | |
| 1071 | + | |
| 1072 | + | |
| 1073 | + | |
| 1074 | + | |
| 1075 | + | |
| 1076 | + | |
| 1077 | + | |
| 1078 | + | |
| 1079 | + | |
| 1080 | + | |
| 1081 | + | |
| 1082 | + | |
| 1083 | + | |
| 1084 | + | |
| 1085 | + | |
| 1086 | + | |
| 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 | + | |
985 | 1118 |
| |
986 | 1119 |
| |
987 | 1120 |
| |
|
0 commit comments
Comments
(0)