- Notifications
You must be signed in to change notification settings - Fork5
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 changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2396 | 2396 | | |
2397 | 2397 | | |
2398 | 2398 | | |
| 2399 | + | |
2399 | 2400 | | |
2400 | 2401 | | |
2401 | 2402 | | |
| |||
| 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 | | |
| 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 | | |
| |||
| 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 | | |
| |||
| 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 | | |
| |||
| 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 | | |
| |||
| 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)