From 523b155df1314252cb5004dfb2be91ee240580dc Mon Sep 17 00:00:00 2001 From: Jussi Saurio Date: Mon, 13 Oct 2025 10:34:33 +0300 Subject: [PATCH] Fix another "should have been rewritten" translation panic Closes #2158 --- core/translate/select.rs | 17 ++++++++++++++++- testing/values.test | 13 +++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/core/translate/select.rs b/core/translate/select.rs index 915c64242..ed216133a 100644 --- a/core/translate/select.rs +++ b/core/translate/select.rs @@ -505,7 +505,7 @@ fn prepare_one_select_plan( // Return the unoptimized query plan Ok(plan) } - ast::OneSelect::Values(values) => { + ast::OneSelect::Values(mut values) => { if !order_by.is_empty() { crate::bail_parse_error!("ORDER BY clause is not allowed with VALUES clause"); } @@ -522,6 +522,21 @@ fn prepare_one_select_plan( contains_aggregates: false, }); } + + for value_row in values.iter_mut() { + for value in value_row.iter_mut() { + bind_and_rewrite_expr( + value, + None, + None, + connection, + &mut program.param_ctx, + // Allow sqlite quirk of inserting "double-quoted" literals (which our AST maps as identifiers) + BindingBehavior::AllowUnboundIdentifiers, + )?; + } + } + let plan = SelectPlan { join_order: vec![], table_references: TableReferences::new(vec![], vec![]), diff --git a/testing/values.test b/testing/values.test index 8ebc33978..b0cc2464a 100755 --- a/testing/values.test +++ b/testing/values.test @@ -48,3 +48,16 @@ do_execsql_test_skip_lines_on_specific_db 1 {:memory:} values-double-quotes-subq .dbconfig dqs_dml on SELECT * FROM (VALUES ("subquery_string")); } {subquery_string} + +# regression test for: https://github.com/tursodatabase/turso/issues/2158 +do_execsql_test_on_specific_db {:memory:} values-between { + CREATE TABLE t0 (c0); + INSERT INTO t0 VALUES ((0 BETWEEN 0 AND 0)), (0); + SELECT * FROM t0; +} {1 +0} + +do_execsql_test_in_memory_any_error values-illegal-column-ref { + CREATE TABLE t0 (c0); + INSERT INTO t0 VALUES (c0); +} \ No newline at end of file