Don't use search for virtual tables

Previously, the test queries added in this commit would fail with:
thread 'main' panicked at core/schema.rs:129:34:
not implemented
stack backtrace:
   0: rust_begin_unwind
             at /rustc/90b35a6239c3d8bdabc530a6a0816f7ff89a0aaf/library/std/src/panicking.rs:665:5
   1: core::panicking::panic_fmt
             at /rustc/90b35a6239c3d8bdabc530a6a0816f7ff89a0aaf/library/core/src/panicking.rs:74:14
   2: core::panicking::panic
             at /rustc/90b35a6239c3d8bdabc530a6a0816f7ff89a0aaf/library/core/src/panicking.rs:148:5
   3: limbo_core::schema::Table::get_root_page
             at ./core/schema.rs:129:34
   4: limbo_core::translate::main_loop::init_loop
             at ./core/translate/main_loop.rs:260:44
   5: limbo_core::translate::emitter::emit_query
             at ./core/translate/emitter.rs:568:5
   6: limbo_core::translate::emitter::emit_program_for_select
             at ./core/translate/emitter.rs:496:5
   7: limbo_core::translate::emitter::emit_program
             at ./core/translate/emitter.rs:187:31
   8: limbo_core::translate::select::translate_select
             at ./core/translate/select.rs:82:5
   9: limbo_core::translate::translate_inner
             at ./core/translate/mod.rs:241:13
  10: limbo_core::translate::translate
             at ./core/translate/mod.rs:95:17
  11: limbo_core::Connection::run_cmd
             at ./core/lib.rs:416:31
  12: <limbo_core::QueryRunner as core::iter::traits::iterator::Iterator>::next
             at ./core/lib.rs:916:22
  13: limbo::app::Limbo::run_query
             at ./cli/app.rs:442:27
  14: limbo::app::Limbo::handle_input_line
             at ./cli/app.rs:544:13
  15: limbo::main
             at ./cli/main.rs:51:31
  16: core::ops::function::FnOnce::call_once
This commit is contained in:
Piotr Rzysko
2025-06-09 08:34:10 +02:00
parent 000d70f1f3
commit 319cdbe3af
2 changed files with 29 additions and 8 deletions

View File

@@ -328,6 +328,16 @@ def _test_series(limbo: TestTursoShell):
"SELECT * FROM generate_series(10, 1, -2);",
lambda res: res == "10\n8\n6\n4\n2",
)
limbo.run_test_fn(
"SELECT "
" a.value a_val, "
" b.value b_val "
"FROM "
" generate_series(1, 3) a "
"JOIN "
" generate_series(1, 1) b ON a.value = b.value;",
lambda res: res == "1|1",
)
limbo.execute_dot("CREATE TABLE target (id integer primary key);")
limbo.execute_dot("INSERT INTO target SELECT * FROM generate_series(1, 5);")
limbo.run_test_fn(
@@ -919,11 +929,22 @@ def _test_hidden_columns(exec_name, ext_path):
"SELECT * FROM l JOIN r ON l.comment = r.comment;",
lambda res: "2|3|comment1|4|5" == res,
)
# TODO: Limbo panics for:
# - SELECT * FROM l NATURAL JOIN r NATURAL JOIN r;
# - SELECT * FROM l NATURAL JOIN r NATURAL JOIN l;
# - SELECT * FROM r NATURAL JOIN l;
# - SELECT * FROM r NATURAL JOIN l NATURAL JOIN r;
limbo.run_test_fn(
"SELECT * FROM l NATURAL JOIN r NATURAL JOIN r;",
lambda res: "2|3|comment0" == res,
)
limbo.run_test_fn(
"SELECT * FROM l NATURAL JOIN r NATURAL JOIN l;",
lambda res: "2|3|comment0" == res,
)
limbo.run_test_fn(
"SELECT * FROM r NATURAL JOIN l;",
lambda res: "comment0|2|3" == res,
)
limbo.run_test_fn(
"SELECT * FROM r NATURAL JOIN l NATURAL JOIN r;",
lambda res: "comment0|2|3" == res,
)
limbo.quit()