- Notifications
You must be signed in to change notification settings - Fork5
Commitc1ca3a1
committed
Fix bug around assignment expressions containing indirections.
Handling of assigned-to expressions with indirection (e.g. set f1[1] =3) was broken for ON CONFLICT DO UPDATE. The problem was thatParseState was consulted to determine if an INSERT-appropriate orUPDATE-appropriate behavior should be used when transforming expressionswith indirections. When the wrong path was taken the old row wassubstituted with NULL, leading to wrong results..To fix remove p_is_update and only use p_is_insert to decide how totransform the assignment expression, and uset p_is_insert while parsingthe on conflict statement. This isn't particularly pretty, but it's notany worse than before.Author: Peter Geoghegan, slightly edited by meDiscussion: CAM3SWZS8RPvA=KFxADZWw3wAHnnbxMxDzkEC6fNaFc7zSm411w@mail.gmail.comBackpatch: 9.5, where the feature was introduced1 parent16c33c5 commitc1ca3a1
File tree
4 files changed
+41
-2
lines changed- src
- backend/parser
- include/parser
- test/regress
- expected
- sql
4 files changed
+41
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
891 | 891 | | |
892 | 892 | | |
893 | 893 | | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
894 | 900 | | |
895 | 901 | | |
896 | 902 | | |
| |||
1999 | 2005 | | |
2000 | 2006 | | |
2001 | 2007 | | |
2002 | | - | |
| 2008 | + | |
2003 | 2009 | | |
2004 | 2010 | | |
2005 | 2011 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
152 | 152 | | |
153 | 153 | | |
154 | 154 | | |
155 | | - | |
156 | 155 | | |
157 | 156 | | |
158 | 157 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1116 | 1116 | | |
1117 | 1117 | | |
1118 | 1118 | | |
| 1119 | + | |
| 1120 | + | |
| 1121 | + | |
| 1122 | + | |
| 1123 | + | |
| 1124 | + | |
| 1125 | + | |
| 1126 | + | |
| 1127 | + | |
| 1128 | + | |
| 1129 | + | |
| 1130 | + | |
| 1131 | + | |
| 1132 | + | |
| 1133 | + | |
| 1134 | + | |
| 1135 | + | |
| 1136 | + | |
| 1137 | + | |
| 1138 | + | |
| 1139 | + | |
1119 | 1140 | | |
1120 | 1141 | | |
1121 | 1142 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
306 | 306 | | |
307 | 307 | | |
308 | 308 | | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
309 | 322 | | |
310 | 323 | | |
311 | 324 | | |
| |||
0 commit comments
Comments
(0)