forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitd26559d
committed
Teach tuplesort.c about "top N" sorting, in which only the first N tuples
need be returned. We keep a heap of the current best N tuples and sift-upnew tuples into it as we scan the input. For M input tuples this meansonly about M*log(N) comparisons instead of M*log(M), not to mention a lotless workspace when N is small --- avoiding spill-to-disk for large Mis actually the most attractive thing about it. Patch includes plannerand executor support for invoking this facility in ORDER BY ... LIMITqueries. Greg Stark, with some editorialization by moi.1 parent0fef38d commitd26559d
File tree
13 files changed
+464
-58
lines changed- src
- backend
- executor
- optimizer
- path
- plan
- util
- utils
- misc
- sort
- include
- nodes
- optimizer
- utils
13 files changed
+464
-58
lines changedLines changed: 32 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
280 | 280 |
| |
281 | 281 |
| |
282 | 282 |
| |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
283 | 314 |
| |
284 | 315 |
| |
285 | 316 |
| |
|
Lines changed: 10 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 |
| |
| |||
89 | 89 |
| |
90 | 90 |
| |
91 | 91 |
| |
| 92 | + | |
| 93 | + | |
92 | 94 |
| |
93 | 95 |
| |
94 | 96 |
| |
| |||
119 | 121 |
| |
120 | 122 |
| |
121 | 123 |
| |
| 124 | + | |
| 125 | + | |
122 | 126 |
| |
123 | 127 |
| |
124 | 128 |
| |
| |||
167 | 171 |
| |
168 | 172 |
| |
169 | 173 |
| |
| 174 | + | |
170 | 175 |
| |
171 | 176 |
| |
172 | 177 |
| |
| |||
307 | 312 |
| |
308 | 313 |
| |
309 | 314 |
| |
310 |
| - | |
| 315 | + | |
| 316 | + | |
311 | 317 |
| |
312 | 318 |
| |
313 | 319 |
| |
314 | 320 |
| |
| 321 | + | |
| 322 | + | |
315 | 323 |
| |
316 | 324 |
| |
317 | 325 |
| |
|
Lines changed: 60 additions & 17 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 |
| |
| |||
922 | 922 |
| |
923 | 923 |
| |
924 | 924 |
| |
| 925 | + | |
| 926 | + | |
| 927 | + | |
| 928 | + | |
925 | 929 |
| |
926 | 930 |
| |
927 | 931 |
| |
| |||
932 | 936 |
| |
933 | 937 |
| |
934 | 938 |
| |
| 939 | + | |
935 | 940 |
| |
936 | 941 |
| |
937 | 942 |
| |
| |||
942 | 947 |
| |
943 | 948 |
| |
944 | 949 |
| |
945 |
| - | |
| 950 | + | |
| 951 | + | |
946 | 952 |
| |
947 | 953 |
| |
948 | 954 |
| |
949 |
| - | |
| 955 | + | |
| 956 | + | |
| 957 | + | |
950 | 958 |
| |
951 | 959 |
| |
952 | 960 |
| |
| |||
959 | 967 |
| |
960 | 968 |
| |
961 | 969 |
| |
962 |
| - | |
963 |
| - | |
964 |
| - | |
965 |
| - | |
966 |
| - | |
967 |
| - | |
968 |
| - | |
| 970 | + | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
969 | 981 |
| |
970 |
| - | |
971 |
| - | |
| 982 | + | |
972 | 983 |
| |
973 |
| - | |
974 |
| - | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
| 987 | + | |
| 988 | + | |
975 | 989 |
| |
976 | 990 |
| |
977 | 991 |
| |
978 | 992 |
| |
| 993 | + | |
| 994 | + | |
| 995 | + | |
| 996 | + | |
| 997 | + | |
| 998 | + | |
| 999 | + | |
| 1000 | + | |
| 1001 | + | |
| 1002 | + | |
979 | 1003 |
| |
980 | 1004 |
| |
981 | 1005 |
| |
| |||
986 | 1010 |
| |
987 | 1011 |
| |
988 | 1012 |
| |
| 1013 | + | |
| 1014 | + | |
| 1015 | + | |
| 1016 | + | |
| 1017 | + | |
| 1018 | + | |
| 1019 | + | |
| 1020 | + | |
| 1021 | + | |
| 1022 | + | |
| 1023 | + | |
| 1024 | + | |
| 1025 | + | |
| 1026 | + | |
| 1027 | + | |
989 | 1028 |
| |
990 | 1029 |
| |
991 | 1030 |
| |
992 |
| - | |
| 1031 | + | |
| 1032 | + | |
| 1033 | + | |
993 | 1034 |
| |
994 | 1035 |
| |
995 | 1036 |
| |
| |||
1431 | 1472 |
| |
1432 | 1473 |
| |
1433 | 1474 |
| |
1434 |
| - | |
| 1475 | + | |
| 1476 | + | |
1435 | 1477 |
| |
1436 | 1478 |
| |
1437 | 1479 |
| |
| |||
1450 | 1492 |
| |
1451 | 1493 |
| |
1452 | 1494 |
| |
1453 |
| - | |
| 1495 | + | |
| 1496 | + | |
1454 | 1497 |
| |
1455 | 1498 |
| |
1456 | 1499 |
| |
|
Lines changed: 20 additions & 11 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
10 | 10 |
| |
11 | 11 |
| |
12 | 12 |
| |
13 |
| - | |
| 13 | + | |
14 | 14 |
| |
15 | 15 |
| |
16 | 16 |
| |
| |||
122 | 122 |
| |
123 | 123 |
| |
124 | 124 |
| |
125 |
| - | |
| 125 | + | |
| 126 | + | |
126 | 127 |
| |
127 | 128 |
| |
128 | 129 |
| |
| |||
1579 | 1580 |
| |
1580 | 1581 |
| |
1581 | 1582 |
| |
1582 |
| - | |
| 1583 | + | |
| 1584 | + | |
1583 | 1585 |
| |
1584 | 1586 |
| |
1585 | 1587 |
| |
| |||
1591 | 1593 |
| |
1592 | 1594 |
| |
1593 | 1595 |
| |
1594 |
| - | |
| 1596 | + | |
| 1597 | + | |
1595 | 1598 |
| |
1596 | 1599 |
| |
1597 | 1600 |
| |
| |||
2589 | 2592 |
| |
2590 | 2593 |
| |
2591 | 2594 |
| |
2592 |
| - | |
| 2595 | + | |
| 2596 | + | |
2593 | 2597 |
| |
2594 | 2598 |
| |
2595 | 2599 |
| |
2596 |
| - | |
| 2600 | + | |
| 2601 | + | |
2597 | 2602 |
| |
2598 | 2603 |
| |
2599 | 2604 |
| |
| |||
2603 | 2608 |
| |
2604 | 2609 |
| |
2605 | 2610 |
| |
2606 |
| - | |
| 2611 | + | |
| 2612 | + | |
2607 | 2613 |
| |
2608 | 2614 |
| |
2609 | 2615 |
| |
| |||
2664 | 2670 |
| |
2665 | 2671 |
| |
2666 | 2672 |
| |
| 2673 | + | |
| 2674 | + | |
2667 | 2675 |
| |
2668 | 2676 |
| |
2669 | 2677 |
| |
| |||
2675 | 2683 |
| |
2676 | 2684 |
| |
2677 | 2685 |
| |
2678 |
| - | |
| 2686 | + | |
| 2687 | + | |
2679 | 2688 |
| |
2680 | 2689 |
| |
2681 | 2690 |
| |
| |||
2810 | 2819 |
| |
2811 | 2820 |
| |
2812 | 2821 |
| |
2813 |
| - | |
| 2822 | + | |
2814 | 2823 |
| |
2815 | 2824 |
| |
2816 | 2825 |
| |
| |||
2859 | 2868 |
| |
2860 | 2869 |
| |
2861 | 2870 |
| |
2862 |
| - | |
| 2871 | + | |
2863 | 2872 |
| |
2864 | 2873 |
| |
2865 | 2874 |
| |
| |||
2919 | 2928 |
| |
2920 | 2929 |
| |
2921 | 2930 |
| |
2922 |
| - | |
| 2931 | + | |
2923 | 2932 |
| |
2924 | 2933 |
| |
2925 | 2934 |
| |
|
Lines changed: 10 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
14 | 14 |
| |
15 | 15 |
| |
16 | 16 |
| |
17 |
| - | |
| 17 | + | |
18 | 18 |
| |
19 | 19 |
| |
20 | 20 |
| |
| |||
47 | 47 |
| |
48 | 48 |
| |
49 | 49 |
| |
| 50 | + | |
| 51 | + | |
50 | 52 |
| |
51 | 53 |
| |
52 | 54 |
| |
| |||
74 | 76 |
| |
75 | 77 |
| |
76 | 78 |
| |
| 79 | + | |
| 80 | + | |
| 81 | + | |
77 | 82 |
| |
78 | 83 |
| |
79 |
| - | |
| 84 | + | |
| 85 | + | |
80 | 86 |
| |
81 | 87 |
| |
82 | 88 |
| |
| |||
354 | 360 |
| |
355 | 361 |
| |
356 | 362 |
| |
357 |
| - | |
| 363 | + | |
| 364 | + | |
358 | 365 |
| |
359 | 366 |
| |
360 | 367 |
| |
|
0 commit comments
Comments
(0)