Commit 30c488e
committed
Merge 'Feat: add support for descending indexes' from Jussi Saurio
### Feat:
- Adds support for descending indexes
### Testing:
- Augments existing compound key index seek fuzz test to test for
various combinations of ascending and descending indexed columns. To
illustrate, the test runs 10000 queries like this on 8 different tables
with all different asc/desc permutations of a three-column primary key
index:
```sql
query: SELECT * FROM t WHERE x = 2826 LIMIT 5
query: SELECT * FROM t WHERE x = 671 AND y >= 2447 ORDER BY x ASC, y DESC LIMIT 5
query: SELECT * FROM t WHERE x = 2412 AND y = 589 AND z >= 894 ORDER BY x DESC LIMIT 5
query: SELECT * FROM t WHERE x = 1217 AND y = 1437 AND z <= 265 ORDER BY x ASC, y ASC, z DESC LIMIT 5
query: SELECT * FROM t WHERE x < 138 ORDER BY x DESC LIMIT 5
query: SELECT * FROM t WHERE x = 1312 AND y = 2757 AND z > 39 ORDER BY x DESC, y ASC, z ASC LIMIT 5
query: SELECT * FROM t WHERE x = 1829 AND y >= 1629 ORDER BY x ASC, y ASC LIMIT 5
query: SELECT * FROM t WHERE x = 2047 ORDER BY x DESC LIMIT 5
query: SELECT * FROM t WHERE x = 893 AND y > 432 ORDER BY y DESC LIMIT 5
query: SELECT * FROM t WHERE x = 1865 AND y = 784 AND z <= 785 ORDER BY x DESC, y DESC, z DESC LIMIT 5
query: SELECT * FROM t WHERE x = 213 AND y = 1475 AND z <= 2870 ORDER BY x ASC, y ASC, z ASC LIMIT 5
query: SELECT * FROM t WHERE x >= 1780 ORDER BY x ASC LIMIT 5
query: SELECT * FROM t WHERE x = 1983 AND y = 602 AND z = 485 ORDER BY y ASC, z ASC LIMIT 5
query: SELECT * FROM t WHERE x = 2311 AND y >= 31 ORDER BY y DESC LIMIT 5
query: SELECT * FROM t WHERE x = 81 AND y >= 1037 ORDER BY x ASC, y DESC LIMIT 5
query: SELECT * FROM t WHERE x < 2698 ORDER BY x ASC LIMIT 5
query: SELECT * FROM t WHERE x = 1503 AND y = 554 AND z >= 185 ORDER BY x DESC, y DESC, z DESC LIMIT 5
query: SELECT * FROM t WHERE x = 619 AND y > 1414 ORDER BY x DESC, y ASC LIMIT 5
query: SELECT * FROM t WHERE x >= 865 ORDER BY x DESC LIMIT 5
query: SELECT * FROM t WHERE x = 1596 AND y = 622 AND z = 62 ORDER BY x DESC, z ASC LIMIT 5
query: SELECT * FROM t WHERE x = 1555 AND y = 1257 AND z < 1929 ORDER BY x ASC, y ASC, z ASC LIMIT 5
query: SELECT * FROM t WHERE x > 2598 LIMIT 5
query: SELECT * FROM t WHERE x = 302 AND y = 2476 AND z < 2302 ORDER BY z DESC LIMIT 5
query: SELECT * FROM t WHERE x = 2197 AND y = 2195 AND z > 2089 ORDER BY y ASC, z DESC LIMIT 5
query: SELECT * FROM t WHERE x = 1030 AND y = 1717 AND z < 987 LIMIT 5
query: SELECT * FROM t WHERE x = 2899 AND y >= 382 ORDER BY y DESC LIMIT 5
query: SELECT * FROM t WHERE x = 62 AND y = 2980 AND z < 1109 ORDER BY x DESC, y DESC, z DESC LIMIT 5
query: SELECT * FROM t WHERE x = 550 AND y > 221 ORDER BY y DESC LIMIT 5
query: SELECT * FROM t WHERE x = 376 AND y = 1874 AND z < 206 ORDER BY y DESC, z ASC LIMIT 5
query: SELECT * FROM t WHERE x = 859 AND y = 2157 ORDER BY x DESC LIMIT 5
query: SELECT * FROM t WHERE x = 2166 AND y = 2079 AND z < 301 ORDER BY x DESC, y ASC LIMIT 5
```
the queries are run against both sqlite and limbo.
Reviewed-by: Pere Diaz Bou (@pereman2)
Reviewed-by: Preston Thorpe (@PThorpe92)
Closes #1330File tree
8 files changed
+741
-316
lines changed- core
- storage
- translate
- vdbe
- tests/integration/fuzz
8 files changed
+741
-316
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
158 | 158 | | |
159 | 159 | | |
160 | 160 | | |
161 | | - | |
| 161 | + | |
162 | 162 | | |
163 | 163 | | |
164 | 164 | | |
165 | 165 | | |
166 | 166 | | |
167 | 167 | | |
168 | 168 | | |
169 | | - | |
170 | | - | |
| 169 | + | |
| 170 | + | |
171 | 171 | | |
172 | 172 | | |
173 | 173 | | |
| |||
265 | 265 | | |
266 | 266 | | |
267 | 267 | | |
268 | | - | |
| 268 | + | |
269 | 269 | | |
270 | 270 | | |
271 | 271 | | |
| |||
282 | 282 | | |
283 | 283 | | |
284 | 284 | | |
285 | | - | |
| 285 | + | |
286 | 286 | | |
287 | 287 | | |
288 | 288 | | |
289 | 289 | | |
290 | 290 | | |
291 | 291 | | |
292 | 292 | | |
293 | | - | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
294 | 296 | | |
295 | 297 | | |
296 | 298 | | |
| |||
347 | 349 | | |
348 | 350 | | |
349 | 351 | | |
| 352 | + | |
350 | 353 | | |
351 | 354 | | |
352 | | - | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
353 | 359 | | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
354 | 363 | | |
355 | 364 | | |
356 | 365 | | |
| |||
363 | 372 | | |
364 | 373 | | |
365 | 374 | | |
366 | | - | |
367 | | - | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
368 | 380 | | |
369 | 381 | | |
370 | 382 | | |
| |||
386 | 398 | | |
387 | 399 | | |
388 | 400 | | |
389 | | - | |
| 401 | + | |
390 | 402 | | |
391 | 403 | | |
392 | 404 | | |
| |||
395 | 407 | | |
396 | 408 | | |
397 | 409 | | |
398 | | - | |
| 410 | + | |
399 | 411 | | |
400 | 412 | | |
401 | 413 | | |
| |||
621 | 633 | | |
622 | 634 | | |
623 | 635 | | |
624 | | - | |
| 636 | + | |
625 | 637 | | |
626 | 638 | | |
627 | 639 | | |
| |||
740 | 752 | | |
741 | 753 | | |
742 | 754 | | |
743 | | - | |
| 755 | + | |
744 | 756 | | |
745 | 757 | | |
746 | 758 | | |
747 | 759 | | |
748 | 760 | | |
749 | 761 | | |
750 | | - | |
| 762 | + | |
751 | 763 | | |
752 | | - | |
| 764 | + | |
753 | 765 | | |
754 | 766 | | |
755 | 767 | | |
| |||
759 | 771 | | |
760 | 772 | | |
761 | 773 | | |
762 | | - | |
| 774 | + | |
763 | 775 | | |
764 | 776 | | |
765 | 777 | | |
| |||
905 | 917 | | |
906 | 918 | | |
907 | 919 | | |
908 | | - | |
909 | | - | |
| 920 | + | |
| 921 | + | |
910 | 922 | | |
911 | 923 | | |
912 | 924 | | |
| |||
923 | 935 | | |
924 | 936 | | |
925 | 937 | | |
926 | | - | |
927 | | - | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
928 | 943 | | |
929 | 944 | | |
930 | 945 | | |
931 | 946 | | |
932 | 947 | | |
933 | 948 | | |
934 | 949 | | |
935 | | - | |
| 950 | + | |
936 | 951 | | |
937 | 952 | | |
938 | 953 | | |
| |||
941 | 956 | | |
942 | 957 | | |
943 | 958 | | |
944 | | - | |
945 | | - | |
| 959 | + | |
| 960 | + | |
946 | 961 | | |
947 | 962 | | |
948 | 963 | | |
949 | 964 | | |
950 | 965 | | |
951 | 966 | | |
952 | 967 | | |
953 | | - | |
| 968 | + | |
954 | 969 | | |
955 | 970 | | |
956 | 971 | | |
| |||
959 | 974 | | |
960 | 975 | | |
961 | 976 | | |
962 | | - | |
963 | | - | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
964 | 982 | | |
965 | 983 | | |
966 | 984 | | |
| |||
977 | 995 | | |
978 | 996 | | |
979 | 997 | | |
980 | | - | |
981 | | - | |
| 998 | + | |
| 999 | + | |
982 | 1000 | | |
983 | 1001 | | |
984 | 1002 | | |
| |||
994 | 1012 | | |
995 | 1013 | | |
996 | 1014 | | |
997 | | - | |
998 | | - | |
| 1015 | + | |
| 1016 | + | |
999 | 1017 | | |
1000 | 1018 | | |
1001 | 1019 | | |
| |||
1143 | 1161 | | |
1144 | 1162 | | |
1145 | 1163 | | |
1146 | | - | |
| 1164 | + | |
1147 | 1165 | | |
1148 | 1166 | | |
1149 | 1167 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
2 | 3 | | |
3 | 4 | | |
4 | 5 | | |
| |||
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| 11 | + | |
10 | 12 | | |
11 | 13 | | |
12 | 14 | | |
| |||
364 | 366 | | |
365 | 367 | | |
366 | 368 | | |
| 369 | + | |
367 | 370 | | |
368 | 371 | | |
369 | 372 | | |
| |||
388 | 391 | | |
389 | 392 | | |
390 | 393 | | |
| 394 | + | |
391 | 395 | | |
392 | 396 | | |
393 | 397 | | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
394 | 410 | | |
395 | 411 | | |
396 | 412 | | |
| |||
547 | 563 | | |
548 | 564 | | |
549 | 565 | | |
550 | | - | |
551 | | - | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
552 | 571 | | |
553 | 572 | | |
554 | 573 | | |
| |||
602 | 621 | | |
603 | 622 | | |
604 | 623 | | |
605 | | - | |
606 | | - | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
607 | 629 | | |
608 | 630 | | |
609 | 631 | | |
| |||
849 | 871 | | |
850 | 872 | | |
851 | 873 | | |
852 | | - | |
853 | | - | |
854 | | - | |
855 | | - | |
| 874 | + | |
| 875 | + | |
| 876 | + | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
| 881 | + | |
| 882 | + | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
856 | 886 | | |
857 | 887 | | |
858 | 888 | | |
| |||
901 | 931 | | |
902 | 932 | | |
903 | 933 | | |
904 | | - | |
905 | | - | |
906 | | - | |
907 | | - | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
908 | 946 | | |
909 | 947 | | |
910 | 948 | | |
| |||
1031 | 1069 | | |
1032 | 1070 | | |
1033 | 1071 | | |
1034 | | - | |
| 1072 | + | |
| 1073 | + | |
| 1074 | + | |
| 1075 | + | |
| 1076 | + | |
1035 | 1077 | | |
1036 | 1078 | | |
1037 | 1079 | | |
| |||
1278 | 1320 | | |
1279 | 1321 | | |
1280 | 1322 | | |
| 1323 | + | |
1281 | 1324 | | |
1282 | 1325 | | |
1283 | 1326 | | |
| |||
1430 | 1473 | | |
1431 | 1474 | | |
1432 | 1475 | | |
1433 | | - | |
| 1476 | + | |
| 1477 | + | |
1434 | 1478 | | |
1435 | 1479 | | |
1436 | 1480 | | |
| |||
3017 | 3061 | | |
3018 | 3062 | | |
3019 | 3063 | | |
| 3064 | + | |
3020 | 3065 | | |
3021 | 3066 | | |
3022 | 3067 | | |
| |||
0 commit comments