- Notifications
You must be signed in to change notification settings - Fork5
Commit255f66e
committed
Fix bug with WITH RECURSIVE immediately inside WITH RECURSIVE. 99% of the
code was already okay with this, but the hack that obtained the outputcolumn types of a recursive union in advance of doing real parse analysisof the recursive union forgot to handle the case where there was an innerWITH clause available to the non-recursive term. Best fix seems to be torefactor so that we don't need the "throwaway" parse analysis step at all.Instead, teach the transformSetOperationStmt code to set up the CTE's outputcolumn information after it's processed the non-recursive term normally.Per report from David Fetter.1 parentd69a419 commit255f66e
File tree
9 files changed
+203
-44
lines changed- src
- backend/parser
- include/parser
- test/regress
- expected
- sql
9 files changed
+203
-44
lines changedOriginal file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
17 | 17 |
| |
18 | 18 |
| |
19 | 19 |
| |
20 |
| - | |
| 20 | + | |
21 | 21 |
| |
22 | 22 |
| |
23 | 23 |
| |
| |||
50 | 50 |
| |
51 | 51 |
| |
52 | 52 |
| |
53 |
| - | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
54 | 56 |
| |
55 | 57 |
| |
56 | 58 |
| |
| |||
135 | 137 |
| |
136 | 138 |
| |
137 | 139 |
| |
138 |
| - | |
| 140 | + | |
| 141 | + | |
139 | 142 |
| |
140 | 143 |
| |
141 | 144 |
| |
142 | 145 |
| |
| 146 | + | |
| 147 | + | |
143 | 148 |
| |
144 | 149 |
| |
145 | 150 |
| |
| |||
1199 | 1204 |
| |
1200 | 1205 |
| |
1201 | 1206 |
| |
| 1207 | + | |
1202 | 1208 |
| |
1203 | 1209 |
| |
1204 | 1210 |
| |
| |||
1359 | 1365 |
| |
1360 | 1366 |
| |
1361 | 1367 |
| |
1362 |
| - | |
| 1368 | + | |
1363 | 1369 |
| |
1364 | 1370 |
| |
1365 | 1371 |
| |
| |||
1418 | 1424 |
| |
1419 | 1425 |
| |
1420 | 1426 |
| |
1421 |
| - | |
| 1427 | + | |
1422 | 1428 |
| |
1423 | 1429 |
| |
1424 | 1430 |
| |
| |||
1485 | 1491 |
| |
1486 | 1492 |
| |
1487 | 1493 |
| |
1488 |
| - | |
| 1494 | + | |
1489 | 1495 |
| |
1490 | 1496 |
| |
| 1497 | + | |
1491 | 1498 |
| |
| 1499 | + | |
| 1500 | + | |
| 1501 | + | |
| 1502 | + | |
| 1503 | + | |
| 1504 | + | |
| 1505 | + | |
| 1506 | + | |
| 1507 | + | |
| 1508 | + | |
| 1509 | + | |
| 1510 | + | |
| 1511 | + | |
| 1512 | + | |
| 1513 | + | |
1492 | 1514 |
| |
| 1515 | + | |
1493 | 1516 |
| |
1494 | 1517 |
| |
1495 | 1518 |
| |
| |||
1584 | 1607 |
| |
1585 | 1608 |
| |
1586 | 1609 |
| |
| 1610 | + | |
| 1611 | + | |
| 1612 | + | |
| 1613 | + | |
| 1614 | + | |
| 1615 | + | |
| 1616 | + | |
| 1617 | + | |
| 1618 | + | |
| 1619 | + | |
| 1620 | + | |
| 1621 | + | |
| 1622 | + | |
| 1623 | + | |
| 1624 | + | |
| 1625 | + | |
| 1626 | + | |
| 1627 | + | |
| 1628 | + | |
| 1629 | + | |
| 1630 | + | |
| 1631 | + | |
| 1632 | + | |
| 1633 | + | |
| 1634 | + | |
| 1635 | + | |
| 1636 | + | |
| 1637 | + | |
| 1638 | + | |
| 1639 | + | |
| 1640 | + | |
| 1641 | + | |
| 1642 | + | |
| 1643 | + | |
| 1644 | + | |
| 1645 | + | |
| 1646 | + | |
| 1647 | + | |
| 1648 | + | |
| 1649 | + | |
| 1650 | + | |
| 1651 | + | |
| 1652 | + | |
| 1653 | + | |
| 1654 | + | |
| 1655 | + | |
| 1656 | + | |
| 1657 | + | |
| 1658 | + | |
| 1659 | + | |
| 1660 | + | |
| 1661 | + | |
| 1662 | + | |
| 1663 | + | |
| 1664 | + | |
1587 | 1665 |
| |
1588 | 1666 |
| |
1589 | 1667 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
479 | 479 |
| |
480 | 480 |
| |
481 | 481 |
| |
482 |
| - | |
| 482 | + | |
483 | 483 |
| |
484 | 484 |
| |
485 | 485 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
58 | 58 |
| |
59 | 59 |
| |
60 | 60 |
| |
61 |
| - | |
62 |
| - | |
63 | 61 |
| |
64 | 62 |
| |
65 | 63 |
| |
| |||
80 | 78 |
| |
81 | 79 |
| |
82 | 80 |
| |
83 |
| - | |
84 | 81 |
| |
85 | 82 |
| |
86 | 83 |
| |
| |||
191 | 188 |
| |
192 | 189 |
| |
193 | 190 |
| |
194 |
| - | |
195 |
| - | |
196 |
| - | |
197 |
| - | |
198 |
| - | |
199 |
| - | |
200 |
| - | |
201 |
| - | |
202 |
| - | |
203 |
| - | |
204 |
| - | |
205 |
| - | |
206 |
| - | |
207 |
| - | |
208 |
| - | |
209 |
| - | |
210 |
| - | |
211 |
| - | |
212 |
| - | |
213 | 191 |
| |
214 | 192 |
| |
215 | 193 |
| |
| |||
251 | 229 |
| |
252 | 230 |
| |
253 | 231 |
| |
254 |
| - | |
| 232 | + | |
255 | 233 |
| |
256 | 234 |
| |
257 | 235 |
| |
| |||
325 | 303 |
| |
326 | 304 |
| |
327 | 305 |
| |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
328 | 315 |
| |
329 |
| - | |
| 316 | + | |
330 | 317 |
| |
331 | 318 |
| |
332 | 319 |
| |
333 | 320 |
| |
334 | 321 |
| |
335 | 322 |
| |
| 323 | + | |
| 324 | + | |
| 325 | + | |
336 | 326 |
| |
337 | 327 |
| |
338 | 328 |
| |
| |||
668 | 658 |
| |
669 | 659 |
| |
670 | 660 |
| |
671 |
| - | |
672 |
| - | |
673 |
| - | |
674 |
| - | |
675 |
| - | |
676 | 661 |
| |
677 | 662 |
| |
678 | 663 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
1251 | 1251 |
| |
1252 | 1252 |
| |
1253 | 1253 |
| |
1254 |
| - | |
| 1254 | + | |
1255 | 1255 |
| |
1256 | 1256 |
| |
1257 | 1257 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
7 | 7 |
| |
8 | 8 |
| |
9 | 9 |
| |
10 |
| - | |
| 10 | + | |
11 | 11 |
| |
12 | 12 |
| |
13 | 13 |
| |
| |||
22 | 22 |
| |
23 | 23 |
| |
24 | 24 |
| |
25 |
| - | |
| 25 | + | |
| 26 | + | |
26 | 27 |
| |
27 | 28 |
| |
28 | 29 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
7 | 7 |
| |
8 | 8 |
| |
9 | 9 |
| |
10 |
| - | |
| 10 | + | |
11 | 11 |
| |
12 | 12 |
| |
13 | 13 |
| |
| |||
18 | 18 |
| |
19 | 19 |
| |
20 | 20 |
| |
| 21 | + | |
| 22 | + | |
| 23 | + | |
21 | 24 |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
7 | 7 |
| |
8 | 8 |
| |
9 | 9 |
| |
10 |
| - | |
| 10 | + | |
11 | 11 |
| |
12 | 12 |
| |
13 | 13 |
| |
| |||
61 | 61 |
| |
62 | 62 |
| |
63 | 63 |
| |
| 64 | + | |
| 65 | + | |
| 66 | + | |
64 | 67 |
| |
65 | 68 |
| |
66 | 69 |
| |
| |||
88 | 91 |
| |
89 | 92 |
| |
90 | 93 |
| |
| 94 | + | |
91 | 95 |
| |
92 | 96 |
| |
93 | 97 |
| |
|
0 commit comments
Comments
(0)