Doesn't seem to work in CI yet properly (probably `time` utility output is different on linux), but here's an example local run output on mac. Notice we panic in `btree.rs` in one of the queries: ```bash Using existing TPC-H.db file Running TPC-H benchmark... Starting TPC-H query timing comparison... The script might ask you to enter the password for sudo, in order to clear system caches. Running 1.sql with Limbo... Running 1.sql with SQLite3... Limbo real time: 2.21 SQLite3 real time: 1.96 Limbo output: SQLite3 output: No output difference ----------------------------------------------------------- Skipping 2.sql, reason: subquery in where not supported ----------------------------------------------------------- Running 3.sql with Limbo... Running 3.sql with SQLite3... Limbo real time: 4.08 SQLite3 real time: 2.95 Limbo output: SQLite3 output: No output difference ----------------------------------------------------------- Skipping 4.sql, reason: subquery in where not supported ----------------------------------------------------------- Running 5.sql with Limbo... Running 5.sql with SQLite3... Limbo real time: 4.37 SQLite3 real time: 2.89 Limbo output: SQLite3 output: No output difference ----------------------------------------------------------- Running 6.sql with Limbo... Running 6.sql with SQLite3... Limbo real time: 2.35 SQLite3 real time: 1.95 Limbo output: SQLite3 output: No output difference ----------------------------------------------------------- Running 7.sql with Limbo... Running 7.sql with SQLite3... Limbo real time: 2.36 SQLite3 real time: 2.08 Limbo output: SQLite3 output: No output difference ----------------------------------------------------------- Running 8.sql with Limbo... Running 8.sql with SQLite3... Limbo real time: 12.10 SQLite3 real time: 8.04 Limbo output: SQLite3 output: No output difference ----------------------------------------------------------- Running 9.sql with Limbo... Running 9.sql with SQLite3... Limbo real time: 29.34 SQLite3 real time: 10.86 Limbo output: ALGERIA|1998|29295233.7707 ALGERIA|1997|52762473.1280001 ALGERIA|1996|53328474.5168001 ALGERIA|1995|51214356.9348 ALGERIA|1994|52169009.5454001 ALGERIA|1993|51333122.8883999 ALGERIA|1992|53203252.4182999 ARGENTINA|1998|29384458.7504 ARGENTINA|1997|45981195.6821 ARGENTINA|1996|48997927.7816 ARGENTINA|1995|49082188.7182 ARGENTINA|1994|47490431.4357 ARGENTINA|1993|49591543.2561 ARGENTINA|1992|47079630.0749 BRAZIL|1998|29522875.2849 BRAZIL|1997|49830726.1137001 BRAZIL|1996|49660010.6812 BRAZIL|1995|48661796.5732001 BRAZIL|1994|48005015.4903 BRAZIL|1993|50642897.2944999 BRAZIL|1992|49796165.2673 CANADA|1998|30827887.8847 CANADA|1997|48200922.4406001 CANADA|1996|49554205.1958 CANADA|1995|52247758.0634 CANADA|1994|50398007.9934001 CANADA|1993|49295434.7577 CANADA|1992|50755100.1311 CHINA|1998|26232779.0758 CHINA|1997|46180740.9342 CHINA|1996|49535189.5637999 CHINA|1995|45696326.4191 CHINA|1994|45699007.4057 CHINA|1993|44820179.7542999 CHINA|1992|44853598.8 EGYPT|1998|28802425.5049 EGYPT|1997|50669980.5204 EGYPT|1996|49409929.5778 EGYPT|1995|51266322.0907999 EGYPT|1994|49610689.962 EGYPT|1993|50945963.7431999 EGYPT|1992|51820711.9291 ETHIOPIA|1998|26507500.3726 ETHIOPIA|1997|44417449.7821001 ETHIOPIA|1996|44396024.8895 ETHIOPIA|1995|45573214.4916 ETHIOPIA|1994|45069220.5918999 ETHIOPIA|1993|45526099.1928999 ETHIOPIA|1992|44415214.7402 FRANCE|1998|27094664.6850001 FRANCE|1997|47521933.8432999 FRANCE|1996|46879568.39 FRANCE|1995|47457222.4867 FRANCE|1994|46096705.433 FRANCE|1993|45962990.9133 FRANCE|1992|43440538.875 GERMANY|1998|26805454.2551 GERMANY|1997|45707724.7992001 GERMANY|1996|45193561.3894001 GERMANY|1995|44010364.8541 GERMANY|1994|46537140.2347001 GERMANY|1993|47120186.1391 GERMANY|1992|47792976.5344 INDIA|1998|29171438.7556 INDIA|1997|49447171.43 INDIA|1996|48314107.4742 INDIA|1995|48157640.2670999 INDIA|1994|47510322.1694 INDIA|1993|50121088.1220001 INDIA|1992|48429696.926 INDONESIA|1998|28049078.872 INDONESIA|1997|47156405.6367 INDONESIA|1996|43832977.6843001 INDONESIA|1995|47383429.9181 INDONESIA|1994|47310891.6826001 INDONESIA|1993|46222112.2464 INDONESIA|1992|46149893.8672 IRAN|1998|26417181.0269999 IRAN|1997|44502840.2268 IRAN|1996|46959453.7866 IRAN|1995|45002812.1692999 IRAN|1994|45433091.641 IRAN|1993|44172584.8788 IRAN|1992|46657917.9228001 IRAQ|1998|32136725.1368001 IRAQ|1997|53988245.1021001 IRAQ|1996|52484885.6999 IRAQ|1995|50826802.1894 IRAQ|1994|53626739.7554 IRAQ|1993|51327489.4222999 IRAQ|1992|53426847.4636 JAPAN|1998|25437238.7276 JAPAN|1997|44207490.0138999 JAPAN|1996|46682874.9343 JAPAN|1995|45283181.6082 JAPAN|1994|45426265.8305 JAPAN|1993|44621631.1586001 JAPAN|1992|45985318.7576999 JORDAN|1998|23772738.5645 JORDAN|1997|43512430.6899999 JORDAN|1996|44074184.9532999 JORDAN|1995|44879506.6709999 JORDAN|1994|42583604.8272 JORDAN|1993|43264733.7961 JORDAN|1992|44983643.7616 KENYA|1998|27596885.9388 KENYA|1997|43800422.8362999 KENYA|1996|45304179.5469 KENYA|1995|45710986.3243999 KENYA|1994|45545675.3259001 KENYA|1993|43921106.8724 KENYA|1992|47458265.2438001 MOROCCO|1998|25236567.0029 MOROCCO|1997|42658811.0476002 MOROCCO|1996|43329016.5985 MOROCCO|1995|44592882.7362999 MOROCCO|1994|42161453.2719 MOROCCO|1993|44899634.791 MOROCCO|1992|43769529.8111 MOZAMBIQUE|1998|27775252.4025 MOZAMBIQUE|1997|49532331.8161999 MOZAMBIQUE|1996|47312132.3954 MOZAMBIQUE|1995|48505778.1883001 MOZAMBIQUE|1994|47280918.1024001 MOZAMBIQUE|1993|46763612.6601001 MOZAMBIQUE|1992|48404237.7845 PERU|1998|31081623.8101 PERU|1997|51536280.2962 PERU|1996|50970091.6021 PERU|1995|52743689.8273001 PERU|1994|49410457.3558 PERU|1993|53695789.9142 PERU|1992|51357085.5809 ROMANIA|1998|25833567.3851 ROMANIA|1997|47308870.4744001 ROMANIA|1996|49278980.0867 ROMANIA|1995|46424352.8088001 ROMANIA|1994|47193732.0789001 ROMANIA|1993|45462367.0855 ROMANIA|1992|46118290.2659999 RUSSIA|1998|27153133.384 RUSSIA|1997|47950148.5437 RUSSIA|1996|49155236.6337 RUSSIA|1995|47417353.3309 RUSSIA|1994|47547047.0333001 RUSSIA|1993|47568120.3475 RUSSIA|1992|45138673.4933001 SAUDI ARABIA|1998|26552308.9274001 SAUDI ARABIA|1997|47935070.9259001 SAUDI ARABIA|1996|48493831.1925001 SAUDI ARABIA|1995|44926913.9565 SAUDI ARABIA|1994|45759107.7221999 SAUDI ARABIA|1993|45849219.1862 SAUDI ARABIA|1992|47456695.9113998 UNITED KINGDOM|1998|25377312.4879 UNITED KINGDOM|1997|46960767.7209999 UNITED KINGDOM|1996|45076159.6326 UNITED KINGDOM|1995|46592948.4497 UNITED KINGDOM|1994|45650295.2464001 UNITED KINGDOM|1993|44963874.6307001 UNITED KINGDOM|1992|46318296.6940999 UNITED STATES|1998|26004416.0988 UNITED STATES|1997|48191685.5994999 UNITED STATES|1996|45327281.0055001 UNITED STATES|1995|46824650.2317 UNITED STATES|1994|46990075.4818999 UNITED STATES|1993|47777150.1640001 UNITED STATES|1992|45725428.7094999 VIETNAM|1998|26143707.6779 VIETNAM|1997|47682484.7703999 VIETNAM|1996|48394548.176 VIETNAM|1995|49341297.159 VIETNAM|1994|47801518.8178 VIETNAM|1993|48531159.0752 VIETNAM|1992|46569476.7732999 SQLite3 output: ALGERIA|1998|29295233.7707 ALGERIA|1997|52762473.128 ALGERIA|1996|53328474.5168 ALGERIA|1995|51214356.9348 ALGERIA|1994|52169009.5454 ALGERIA|1993|51333122.8884 ALGERIA|1992|53203252.4183 ARGENTINA|1998|29384458.7504 ARGENTINA|1997|45981195.6821 ARGENTINA|1996|48997927.7816 ARGENTINA|1995|49082188.7182 ARGENTINA|1994|47490431.4357 ARGENTINA|1993|49591543.2561 ARGENTINA|1992|47079630.0749 BRAZIL|1998|29522875.2849 BRAZIL|1997|49830726.1137 BRAZIL|1996|49660010.6812 BRAZIL|1995|48661796.5732 BRAZIL|1994|48005015.4903 BRAZIL|1993|50642897.2945 BRAZIL|1992|49796165.2673 CANADA|1998|30827887.8847 CANADA|1997|48200922.4406 CANADA|1996|49554205.1958 CANADA|1995|52247758.0634 CANADA|1994|50398007.9934 CANADA|1993|49295434.7577 CANADA|1992|50755100.1311 CHINA|1998|26232779.0758 CHINA|1997|46180740.9342 CHINA|1996|49535189.5638 CHINA|1995|45696326.4191 CHINA|1994|45699007.4057 CHINA|1993|44820179.7543 CHINA|1992|44853598.8 EGYPT|1998|28802425.5049 EGYPT|1997|50669980.5204 EGYPT|1996|49409929.5778 EGYPT|1995|51266322.0908 EGYPT|1994|49610689.962 EGYPT|1993|50945963.7432 EGYPT|1992|51820711.9291 ETHIOPIA|1998|26507500.3726 ETHIOPIA|1997|44417449.7821 ETHIOPIA|1996|44396024.8895 ETHIOPIA|1995|45573214.4916 ETHIOPIA|1994|45069220.5919 ETHIOPIA|1993|45526099.1929 ETHIOPIA|1992|44415214.7402 FRANCE|1998|27094664.685 FRANCE|1997|47521933.8433 FRANCE|1996|46879568.39 FRANCE|1995|47457222.4867 FRANCE|1994|46096705.433 FRANCE|1993|45962990.9133 FRANCE|1992|43440538.875 GERMANY|1998|26805454.2551 GERMANY|1997|45707724.7992 GERMANY|1996|45193561.3894 GERMANY|1995|44010364.8541 GERMANY|1994|46537140.2347 GERMANY|1993|47120186.1391 GERMANY|1992|47792976.5344 INDIA|1998|29171438.7556 INDIA|1997|49447171.43 INDIA|1996|48314107.4742 INDIA|1995|48157640.2671 INDIA|1994|47510322.1694 INDIA|1993|50121088.122 INDIA|1992|48429696.926 INDONESIA|1998|28049078.872 INDONESIA|1997|47156405.6367 INDONESIA|1996|43832977.6843 INDONESIA|1995|47383429.9181 INDONESIA|1994|47310891.6826 INDONESIA|1993|46222112.2464 INDONESIA|1992|46149893.8672 IRAN|1998|26417181.027 IRAN|1997|44502840.2268 IRAN|1996|46959453.7866 IRAN|1995|45002812.1693 IRAN|1994|45433091.641 IRAN|1993|44172584.8788 IRAN|1992|46657917.9228 IRAQ|1998|32136725.1368 IRAQ|1997|53988245.1021 IRAQ|1996|52484885.6999 IRAQ|1995|50826802.1894 IRAQ|1994|53626739.7554 IRAQ|1993|51327489.4223 IRAQ|1992|53426847.4636 JAPAN|1998|25437238.7276 JAPAN|1997|44207490.0139 JAPAN|1996|46682874.9343 JAPAN|1995|45283181.6082 JAPAN|1994|45426265.8305 JAPAN|1993|44621631.1586 JAPAN|1992|45985318.7577 JORDAN|1998|23772738.5645 JORDAN|1997|43512430.69 JORDAN|1996|44074184.9533 JORDAN|1995|44879506.671 JORDAN|1994|42583604.8272 JORDAN|1993|43264733.7961 JORDAN|1992|44983643.7616 KENYA|1998|27596885.9388 KENYA|1997|43800422.8363 KENYA|1996|45304179.5469 KENYA|1995|45710986.3244 KENYA|1994|45545675.3259 KENYA|1993|43921106.8724 KENYA|1992|47458265.2438 MOROCCO|1998|25236567.0029 MOROCCO|1997|42658811.0476 MOROCCO|1996|43329016.5985 MOROCCO|1995|44592882.7363 MOROCCO|1994|42161453.2719 MOROCCO|1993|44899634.791 MOROCCO|1992|43769529.8111 MOZAMBIQUE|1998|27775252.4025 MOZAMBIQUE|1997|49532331.8162 MOZAMBIQUE|1996|47312132.3954 MOZAMBIQUE|1995|48505778.1883 MOZAMBIQUE|1994|47280918.1024 MOZAMBIQUE|1993|46763612.6601 MOZAMBIQUE|1992|48404237.7845 PERU|1998|31081623.8101 PERU|1997|51536280.2962 PERU|1996|50970091.6021 PERU|1995|52743689.8273 PERU|1994|49410457.3558 PERU|1993|53695789.9142 PERU|1992|51357085.5809 ROMANIA|1998|25833567.3851 ROMANIA|1997|47308870.4744 ROMANIA|1996|49278980.0867 ROMANIA|1995|46424352.8088 ROMANIA|1994|47193732.0789 ROMANIA|1993|45462367.0855 ROMANIA|1992|46118290.266 RUSSIA|1998|27153133.384 RUSSIA|1997|47950148.5437 RUSSIA|1996|49155236.6337 RUSSIA|1995|47417353.3309 RUSSIA|1994|47547047.0333 RUSSIA|1993|47568120.3475 RUSSIA|1992|45138673.4933 SAUDI ARABIA|1998|26552308.9274 SAUDI ARABIA|1997|47935070.9259 SAUDI ARABIA|1996|48493831.1925 SAUDI ARABIA|1995|44926913.9565 SAUDI ARABIA|1994|45759107.7222 SAUDI ARABIA|1993|45849219.1862 SAUDI ARABIA|1992|47456695.9114 UNITED KINGDOM|1998|25377312.4879 UNITED KINGDOM|1997|46960767.721 UNITED KINGDOM|1996|45076159.6326 UNITED KINGDOM|1995|46592948.4497 UNITED KINGDOM|1994|45650295.2464 UNITED KINGDOM|1993|44963874.6307 UNITED KINGDOM|1992|46318296.6941 UNITED STATES|1998|26004416.0988 UNITED STATES|1997|48191685.5995 UNITED STATES|1996|45327281.0055 UNITED STATES|1995|46824650.2317 UNITED STATES|1994|46990075.4819 UNITED STATES|1993|47777150.164 UNITED STATES|1992|45725428.7095 VIETNAM|1998|26143707.6779 VIETNAM|1997|47682484.7704 VIETNAM|1996|48394548.176 VIETNAM|1995|49341297.159 VIETNAM|1994|47801518.8178 VIETNAM|1993|48531159.0752 VIETNAM|1992|46569476.7733 Output difference: 2,3c2,3 < ALGERIA|1997|52762473.1280001 < ALGERIA|1996|53328474.5168001 --- > ALGERIA|1997|52762473.128 > ALGERIA|1996|53328474.5168 5,7c5,7 < ALGERIA|1994|52169009.5454001 < ALGERIA|1993|51333122.8883999 < ALGERIA|1992|53203252.4182999 --- > ALGERIA|1994|52169009.5454 > ALGERIA|1993|51333122.8884 > ALGERIA|1992|53203252.4183 16c16 < BRAZIL|1997|49830726.1137001 --- > BRAZIL|1997|49830726.1137 18c18 < BRAZIL|1995|48661796.5732001 --- > BRAZIL|1995|48661796.5732 20c20 < BRAZIL|1993|50642897.2944999 --- > BRAZIL|1993|50642897.2945 23c23 < CANADA|1997|48200922.4406001 --- > CANADA|1997|48200922.4406 26c26 < CANADA|1994|50398007.9934001 --- > CANADA|1994|50398007.9934 31c31 < CHINA|1996|49535189.5637999 --- > CHINA|1996|49535189.5638 34c34 < CHINA|1993|44820179.7542999 --- > CHINA|1993|44820179.7543 39c39 < EGYPT|1995|51266322.0907999 --- > EGYPT|1995|51266322.0908 41c41 < EGYPT|1993|50945963.7431999 --- > EGYPT|1993|50945963.7432 44c44 < ETHIOPIA|1997|44417449.7821001 --- > ETHIOPIA|1997|44417449.7821 47,48c47,48 < ETHIOPIA|1994|45069220.5918999 < ETHIOPIA|1993|45526099.1928999 --- > ETHIOPIA|1994|45069220.5919 > ETHIOPIA|1993|45526099.1929 50,51c50,51 < FRANCE|1998|27094664.6850001 < FRANCE|1997|47521933.8432999 --- > FRANCE|1998|27094664.685 > FRANCE|1997|47521933.8433 58,59c58,59 < GERMANY|1997|45707724.7992001 < GERMANY|1996|45193561.3894001 --- > GERMANY|1997|45707724.7992 > GERMANY|1996|45193561.3894 61c61 < GERMANY|1994|46537140.2347001 --- > GERMANY|1994|46537140.2347 67c67 < INDIA|1995|48157640.2670999 --- > INDIA|1995|48157640.2671 69c69 < INDIA|1993|50121088.1220001 --- > INDIA|1993|50121088.122 73c73 < INDONESIA|1996|43832977.6843001 --- > INDONESIA|1996|43832977.6843 75c75 < INDONESIA|1994|47310891.6826001 --- > INDONESIA|1994|47310891.6826 78c78 < IRAN|1998|26417181.0269999 --- > IRAN|1998|26417181.027 81c81 < IRAN|1995|45002812.1692999 --- > IRAN|1995|45002812.1693 84,86c84,86 < IRAN|1992|46657917.9228001 < IRAQ|1998|32136725.1368001 < IRAQ|1997|53988245.1021001 --- > IRAN|1992|46657917.9228 > IRAQ|1998|32136725.1368 > IRAQ|1997|53988245.1021 90c90 < IRAQ|1993|51327489.4222999 --- > IRAQ|1993|51327489.4223 93c93 < JAPAN|1997|44207490.0138999 --- > JAPAN|1997|44207490.0139 97,98c97,98 < JAPAN|1993|44621631.1586001 < JAPAN|1992|45985318.7576999 --- > JAPAN|1993|44621631.1586 > JAPAN|1992|45985318.7577 100,102c100,102 < JORDAN|1997|43512430.6899999 < JORDAN|1996|44074184.9532999 < JORDAN|1995|44879506.6709999 --- > JORDAN|1997|43512430.69 > JORDAN|1996|44074184.9533 > JORDAN|1995|44879506.671 107c107 < KENYA|1997|43800422.8362999 --- > KENYA|1997|43800422.8363 109,110c109,110 < KENYA|1995|45710986.3243999 < KENYA|1994|45545675.3259001 --- > KENYA|1995|45710986.3244 > KENYA|1994|45545675.3259 112c112 < KENYA|1992|47458265.2438001 --- > KENYA|1992|47458265.2438 114c114 < MOROCCO|1997|42658811.0476002 --- > MOROCCO|1997|42658811.0476 116c116 < MOROCCO|1995|44592882.7362999 --- > MOROCCO|1995|44592882.7363 121c121 < MOZAMBIQUE|1997|49532331.8161999 --- > MOZAMBIQUE|1997|49532331.8162 123,125c123,125 < MOZAMBIQUE|1995|48505778.1883001 < MOZAMBIQUE|1994|47280918.1024001 < MOZAMBIQUE|1993|46763612.6601001 --- > MOZAMBIQUE|1995|48505778.1883 > MOZAMBIQUE|1994|47280918.1024 > MOZAMBIQUE|1993|46763612.6601 130c130 < PERU|1995|52743689.8273001 --- > PERU|1995|52743689.8273 135c135 < ROMANIA|1997|47308870.4744001 --- > ROMANIA|1997|47308870.4744 137,138c137,138 < ROMANIA|1995|46424352.8088001 < ROMANIA|1994|47193732.0789001 --- > ROMANIA|1995|46424352.8088 > ROMANIA|1994|47193732.0789 140c140 < ROMANIA|1992|46118290.2659999 --- > ROMANIA|1992|46118290.266 145c145 < RUSSIA|1994|47547047.0333001 --- > RUSSIA|1994|47547047.0333 147,150c147,150 < RUSSIA|1992|45138673.4933001 < SAUDI ARABIA|1998|26552308.9274001 < SAUDI ARABIA|1997|47935070.9259001 < SAUDI ARABIA|1996|48493831.1925001 --- > RUSSIA|1992|45138673.4933 > SAUDI ARABIA|1998|26552308.9274 > SAUDI ARABIA|1997|47935070.9259 > SAUDI ARABIA|1996|48493831.1925 152c152 < SAUDI ARABIA|1994|45759107.7221999 --- > SAUDI ARABIA|1994|45759107.7222 154c154 < SAUDI ARABIA|1992|47456695.9113998 --- > SAUDI ARABIA|1992|47456695.9114 156c156 < UNITED KINGDOM|1997|46960767.7209999 --- > UNITED KINGDOM|1997|46960767.721 159,161c159,161 < UNITED KINGDOM|1994|45650295.2464001 < UNITED KINGDOM|1993|44963874.6307001 < UNITED KINGDOM|1992|46318296.6940999 --- > UNITED KINGDOM|1994|45650295.2464 > UNITED KINGDOM|1993|44963874.6307 > UNITED KINGDOM|1992|46318296.6941 163,164c163,164 < UNITED STATES|1997|48191685.5994999 < UNITED STATES|1996|45327281.0055001 --- > UNITED STATES|1997|48191685.5995 > UNITED STATES|1996|45327281.0055 166,168c166,168 < UNITED STATES|1994|46990075.4818999 < UNITED STATES|1993|47777150.1640001 < UNITED STATES|1992|45725428.7094999 --- > UNITED STATES|1994|46990075.4819 > UNITED STATES|1993|47777150.164 > UNITED STATES|1992|45725428.7095 170c170 < VIETNAM|1997|47682484.7703999 --- > VIETNAM|1997|47682484.7704 175c175 < VIETNAM|1992|46569476.7732999 --- > VIETNAM|1992|46569476.7733 ----------------------------------------------------------- Running 10.sql with Limbo... Running 10.sql with SQLite3... Limbo real time: 3.48 SQLite3 real time: 2.85 Limbo output: SQLite3 output: No output difference ----------------------------------------------------------- Skipping 11.sql, reason: subquery in where not supported ----------------------------------------------------------- Running 12.sql with Limbo... Running 12.sql with SQLite3... Limbo real time: 2.54 SQLite3 real time: 1.99 Limbo output: SQLite3 output: No output difference ----------------------------------------------------------- Running 13.sql with Limbo... Running 13.sql with SQLite3... Limbo real time: 3.64 SQLite3 real time: 4.07 Limbo output: thread 'main' panicked at core/storage/btree.rs:5124:13: slice index starts at 128 but ends at 126 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace time: command terminated abnormally SQLite3 output: 0|50004 9|6642 10|6578 11|6010 8|5916 12|5598 13|5009 19|4704 7|4677 17|4604 20|4581 18|4523 14|4470 15|4449 16|4339 21|4173 22|3717 6|3295 23|3196 24|2647 25|2120 5|1962 26|1632 27|1196 4|985 28|873 29|595 3|412 30|370 31|233 32|146 2|133 33|83 34|43 35|28 36|20 1|19 37|6 38|4 40|3 39|3 41|2 Output difference: 1,5c1,42 < < thread 'main' panicked at core/storage/btree.rs:5124:13: < slice index starts at 128 but ends at 126 < note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace < time: command terminated abnormally --- > 0|50004 > 9|6642 > 10|6578 > 11|6010 > 8|5916 > 12|5598 > 13|5009 > 19|4704 > 7|4677 > 17|4604 > 20|4581 > 18|4523 > 14|4470 > 15|4449 > 16|4339 > 21|4173 > 22|3717 > 6|3295 > 23|3196 > 24|2647 > 25|2120 > 5|1962 > 26|1632 > 27|1196 > 4|985 > 28|873 > 29|595 > 3|412 > 30|370 > 31|233 > 32|146 > 2|133 > 33|83 > 34|43 > 35|28 > 36|20 > 1|19 > 37|6 > 38|4 > 40|3 > 39|3 > 41|2 ----------------------------------------------------------- Running 14.sql with Limbo... Running 14.sql with SQLite3... Limbo real time: 2.21 SQLite3 real time: 1.89 Limbo output: SQLite3 output: No output difference ----------------------------------------------------------- Skipping 15.sql, reason: views not supported ----------------------------------------------------------- Skipping 16.sql, reason: subquery in where not supported ----------------------------------------------------------- Skipping 17.sql, reason: subquery in where not supported ----------------------------------------------------------- Skipping 18.sql, reason: subquery in where not supported ----------------------------------------------------------- Skipping 19.sql, reason: bad-query-plan-takes-forever ----------------------------------------------------------- Skipping 20.sql, reason: subquery in where not supported ----------------------------------------------------------- Skipping 21.sql, reason: subquery in where not supported ----------------------------------------------------------- Skipping 22.sql, reason: subquery in where not supported ----------------------------------------------------------- ----------------------------------------------------------- TPC-H query timing comparison completed. ``` Closes #1492
Project Limbo
Limbo is a project to build the modern evolution of SQLite.
Features and Roadmap
Limbo is a work-in-progress, in-process OLTP database engine library written in Rust that has:
- Asynchronous I/O support on Linux with
io_uring - SQLite compatibility [doc] for SQL dialect, file formats, and the C API
- Language bindings for JavaScript/WebAssembly, Rust, Go, Python, and Java
- OS support for Linux, macOS, and Windows
In the future, we will be also working on:
- Integrated vector search for embeddings and vector similarity.
BEGIN CONCURRENTfor improved write throughput.- Improved schema management including better
ALTERsupport and strict column types by default.
Getting Started
💻 Command Line
You can install the latest `limbo` release with:
curl --proto '=https' --tlsv1.2 -LsSf \
https://github.com/tursodatabase/limbo/releases/latest/download/limbo_cli-installer.sh | sh
Then launch the shell to execute SQL statements:
Limbo
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database
limbo> CREATE TABLE users (id INT PRIMARY KEY, username TEXT);
limbo> INSERT INTO users VALUES (1, 'alice');
limbo> INSERT INTO users VALUES (2, 'bob');
limbo> SELECT * FROM users;
1|alice
2|bob
You can also build and run the latest development version with:
cargo run
🦀 Rust
cargo add limbo
Example usage:
let db = Builder::new_local("sqlite.db").build().await?;
let conn = db.connect()?;
let res = conn.query("SELECT * FROM users", ()).await?;
✨ JavaScript
npm i limbo-wasm
Example usage:
import { Database } from 'limbo-wasm';
const db = new Database('sqlite.db');
const stmt = db.prepare('SELECT * FROM users');
const users = stmt.all();
console.log(users);
🐍 Python
pip install pylimbo
Example usage:
import limbo
con = limbo.connect("sqlite.db")
cur = con.cursor()
res = cur.execute("SELECT * FROM users")
print(res.fetchone())
🐹 Go
- Clone the repository
- Build the library and set your LD_LIBRARY_PATH to include limbo's target directory
cargo build --package limbo-go
export LD_LIBRARY_PATH=/path/to/limbo/target/debug:$LD_LIBRARY_PATH
- Use the driver
go get github.com/tursodatabase/limbo
go install github.com/tursodatabase/limbo
Example usage:
import (
"database/sql"
_"github.com/tursodatabase/limbo"
)
conn, _ = sql.Open("sqlite3", "sqlite.db")
defer conn.Close()
stmt, _ := conn.Prepare("select * from users")
defer stmt.Close()
rows, _ = stmt.Query()
for rows.Next() {
var id int
var username string
_ := rows.Scan(&id, &username)
fmt.Printf("User: ID: %d, Username: %s\n", id, username)
}
☕️ Java
We integrated Limbo into JDBC. For detailed instructions on how to use Limbo with java, please refer to the README.md under bindings/java.
Contributing
We'd love to have you contribute to Limbo! Please check out the contribution guide to get started.
FAQ
How is Limbo different from Turso's libSQL?
Limbo is a project to build the modern evolution of SQLite in Rust, with a strong open contribution focus and features like native async support, vector search, and more. The libSQL project is also an attempt to evolve SQLite in a similar direction, but through a fork rather than a rewrite.
Rewriting SQLite in Rust started as an unassuming experiment, and due to its incredible success, replaces libSQL as our intended direction. At this point, libSQL is production ready, Limbo is not - although it is evolving rapidly. As the project starts to near production readiness, we plan to rename it to just "Turso". More details here.
Publications
- Pekka Enberg, Sasu Tarkoma, Jon Crowcroft Ashwin Rao (2024). Serverless Runtime / Database Co-Design With Asynchronous I/O. In EdgeSys ‘24. [PDF]
- Pekka Enberg, Sasu Tarkoma, and Ashwin Rao (2023). Towards Database and Serverless Runtime Co-Design. In CoNEXT-SW ’23. [PDF] [Slides]
License
This project is licensed under the MIT license.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Limbo by you, shall be licensed as MIT, without any additional terms or conditions.
Contributors
Thanks to all the contributors to Limbo!
