mirror of
https://github.com/aljazceru/turso.git
synced 2026-01-31 13:54:27 +01:00
Fix: outer CTEs should be available in subqueries
This commit is contained in:
@@ -317,11 +317,26 @@ fn parse_from_clause_table(
|
||||
)
|
||||
}
|
||||
ast::SelectTable::Select(subselect, maybe_alias) => {
|
||||
let outer_query_refs_for_subquery = table_references
|
||||
.outer_query_refs()
|
||||
.iter()
|
||||
.cloned()
|
||||
.chain(
|
||||
ctes.iter()
|
||||
.cloned()
|
||||
.map(|t: JoinedTable| OuterQueryReference {
|
||||
identifier: t.identifier,
|
||||
internal_id: t.internal_id,
|
||||
table: t.table,
|
||||
col_used_mask: ColumnUsedMask::default(),
|
||||
}),
|
||||
)
|
||||
.collect::<Vec<_>>();
|
||||
let Plan::Select(subplan) = prepare_select_plan(
|
||||
subselect,
|
||||
resolver,
|
||||
program,
|
||||
table_references.outer_query_refs(),
|
||||
&outer_query_refs_for_subquery,
|
||||
QueryDestination::placeholder_for_subquery(),
|
||||
connection,
|
||||
)?
|
||||
|
||||
@@ -433,3 +433,17 @@ do_execsql_test subquery-count-all {
|
||||
where u.id < 100
|
||||
);
|
||||
} {1089}
|
||||
|
||||
do_execsql_test_on_specific_db {:memory:} subquery-cte-available-in-arbitrary-depth {
|
||||
with cte as (select 1 as one)
|
||||
select onehundredandeleven+1 as onehundredandtwelve
|
||||
from (
|
||||
with cte2 as (select 10 as ten)
|
||||
select onehundredandone+ten as onehundredandeleven
|
||||
from (
|
||||
with cte3 as (select 100 as hundred)
|
||||
select one+hundred as onehundredandone
|
||||
from cte join cte3
|
||||
) join cte2
|
||||
);
|
||||
} {112}
|
||||
Reference in New Issue
Block a user