forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit8f889b1
committed
Implement UPDATE tab SET (col1,col2,...) = (SELECT ...), ...
This SQL-standard feature allows a sub-SELECT yielding multiple columns(but only one row) to be used to compute the new values of several columnsto be updated. While the same results can be had with an independentsub-SELECT per column, such a workaround can require a great deal ofduplicated computation.The standard actually says that the source for a multi-column assignmentcould be any row-valued expression. The implementation used here istightly tied to our existing sub-SELECT support and can't handle othercases; the Bison grammar would have some issues with them too. However,I don't feel too bad about this since other cases can be converted intosub-SELECTs. For instance, "SET (a,b,c) = row_valued_function(x)" couldbe written "SET (a,b,c) = (SELECT * FROM row_valued_function(x))".1 parent230ba02 commit8f889b1
File tree
31 files changed
+805
-122
lines changed- contrib/pg_stat_statements
- doc/src/sgml
- ref
- src
- backend
- executor
- nodes
- optimizer
- plan
- prep
- util
- parser
- rewrite
- utils/adt
- include
- catalog
- nodes
- optimizer
- parser
- test/regress
- expected
- sql
31 files changed
+805
-122
lines changedLines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2396 | 2396 |
| |
2397 | 2397 |
| |
2398 | 2398 |
| |
| 2399 | + | |
2399 | 2400 |
| |
2400 | 2401 |
| |
2401 | 2402 |
| |
|
Lines changed: 60 additions & 14 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
24 | 24 |
| |
25 | 25 |
| |
26 | 26 |
| |
27 |
| - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
28 | 30 |
| |
29 | 31 |
| |
30 | 32 |
| |
| |||
146 | 148 |
| |
147 | 149 |
| |
148 | 150 |
| |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
149 | 166 |
| |
150 | 167 |
| |
151 | 168 |
| |
| |||
324 | 341 |
| |
325 | 342 |
| |
326 | 343 |
| |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
327 | 376 |
| |
328 | 377 |
| |
329 | 378 |
| |
| |||
361 | 410 |
| |
362 | 411 |
| |
363 | 412 |
| |
364 |
| - | |
365 |
| - | |
366 |
| - | |
367 |
| - | |
368 |
| - | |
369 |
| - | |
370 |
| - | |
371 |
| - | |
372 |
| - | |
373 |
| - | |
374 |
| - | |
375 |
| - | |
376 |
| - | |
377 | 413 |
| |
378 | 414 |
| |
379 | 415 |
| |
380 | 416 |
| |
381 | 417 |
| |
382 | 418 |
| |
383 | 419 |
| |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
384 | 430 |
| |
385 | 431 |
|
Lines changed: 21 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1164 | 1164 |
| |
1165 | 1165 |
| |
1166 | 1166 |
| |
| 1167 | + | |
| 1168 | + | |
| 1169 | + | |
| 1170 | + | |
| 1171 | + | |
| 1172 | + | |
| 1173 | + | |
| 1174 | + | |
| 1175 | + | |
| 1176 | + | |
| 1177 | + | |
| 1178 | + | |
| 1179 | + | |
| 1180 | + | |
| 1181 | + | |
| 1182 | + | |
| 1183 | + | |
| 1184 | + | |
| 1185 | + | |
| 1186 | + | |
| 1187 | + | |
1167 | 1188 |
| |
1168 | 1189 |
| |
1169 | 1190 |
| |
|
Lines changed: 72 additions & 8 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1 | 1 |
| |
2 | 2 |
| |
3 | 3 |
| |
4 |
| - | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
5 | 13 |
| |
6 | 14 |
| |
7 | 15 |
| |
| |||
54 | 62 |
| |
55 | 63 |
| |
56 | 64 |
| |
| 65 | + | |
| 66 | + | |
57 | 67 |
| |
58 | 68 |
| |
59 | 69 |
| |
| |||
72 | 82 |
| |
73 | 83 |
| |
74 | 84 |
| |
75 |
| - | |
| 85 | + | |
76 | 86 |
| |
77 | 87 |
| |
78 | 88 |
| |
| |||
223 | 233 |
| |
224 | 234 |
| |
225 | 235 |
| |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
226 | 262 |
| |
227 | 263 |
| |
228 | 264 |
| |
| |||
667 | 703 |
| |
668 | 704 |
| |
669 | 705 |
| |
| 706 | + | |
| 707 | + | |
| 708 | + | |
670 | 709 |
| |
671 | 710 |
| |
672 | 711 |
| |
| |||
690 | 729 |
| |
691 | 730 |
| |
692 | 731 |
| |
693 |
| - | |
694 |
| - | |
| 732 | + | |
| 733 | + | |
| 734 | + | |
| 735 | + | |
695 | 736 |
| |
696 | 737 |
| |
697 | 738 |
| |
698 | 739 |
| |
699 |
| - | |
700 |
| - | |
701 |
| - | |
| 740 | + | |
| 741 | + | |
702 | 742 |
| |
703 | 743 |
| |
704 | 744 |
| |
| |||
890 | 930 |
| |
891 | 931 |
| |
892 | 932 |
| |
893 |
| - | |
| 933 | + | |
894 | 934 |
| |
895 | 935 |
| |
896 | 936 |
| |
| |||
908 | 948 |
| |
909 | 949 |
| |
910 | 950 |
| |
| 951 | + | |
911 | 952 |
| |
912 | 953 |
| |
913 | 954 |
| |
| |||
923 | 964 |
| |
924 | 965 |
| |
925 | 966 |
| |
| 967 | + | |
| 968 | + | |
| 969 | + | |
| 970 | + | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
| 987 | + | |
926 | 988 |
| |
927 | 989 |
| |
928 | 990 |
| |
| |||
964 | 1026 |
| |
965 | 1027 |
| |
966 | 1028 |
| |
| 1029 | + | |
967 | 1030 |
| |
968 | 1031 |
| |
969 | 1032 |
| |
| |||
1035 | 1098 |
| |
1036 | 1099 |
| |
1037 | 1100 |
| |
| 1101 | + | |
1038 | 1102 |
| |
1039 | 1103 |
| |
1040 | 1104 |
| |
|
Lines changed: 16 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1327 | 1327 |
| |
1328 | 1328 |
| |
1329 | 1329 |
| |
| 1330 | + | |
1330 | 1331 |
| |
1331 | 1332 |
| |
1332 | 1333 |
| |
| |||
2247 | 2248 |
| |
2248 | 2249 |
| |
2249 | 2250 |
| |
| 2251 | + | |
| 2252 | + | |
| 2253 | + | |
| 2254 | + | |
| 2255 | + | |
| 2256 | + | |
| 2257 | + | |
| 2258 | + | |
| 2259 | + | |
| 2260 | + | |
| 2261 | + | |
| 2262 | + | |
2250 | 2263 |
| |
2251 | 2264 |
| |
2252 | 2265 |
| |
| |||
4561 | 4574 |
| |
4562 | 4575 |
| |
4563 | 4576 |
| |
| 4577 | + | |
| 4578 | + | |
| 4579 | + | |
4564 | 4580 |
| |
4565 | 4581 |
| |
4566 | 4582 |
| |
|
Lines changed: 14 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
382 | 382 |
| |
383 | 383 |
| |
384 | 384 |
| |
| 385 | + | |
385 | 386 |
| |
386 | 387 |
| |
387 | 388 |
| |
| |||
2094 | 2095 |
| |
2095 | 2096 |
| |
2096 | 2097 |
| |
| 2098 | + | |
| 2099 | + | |
| 2100 | + | |
| 2101 | + | |
| 2102 | + | |
| 2103 | + | |
| 2104 | + | |
| 2105 | + | |
| 2106 | + | |
| 2107 | + | |
2097 | 2108 |
| |
2098 | 2109 |
| |
2099 | 2110 |
| |
| |||
3029 | 3040 |
| |
3030 | 3041 |
| |
3031 | 3042 |
| |
| 3043 | + | |
| 3044 | + | |
| 3045 | + | |
3032 | 3046 |
| |
3033 | 3047 |
| |
3034 | 3048 |
| |
|
Lines changed: 1 addition & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
385 | 385 |
| |
386 | 386 |
| |
387 | 387 |
| |
388 |
| - | |
| 388 | + | |
389 | 389 |
| |
390 | 390 |
| |
391 | 391 |
| |
|
0 commit comments
Comments
(0)