mirror of
https://github.com/aljazceru/turso.git
synced 2026-02-01 06:14:23 +01:00
chore: rollback using rowid(sqlite3 unsupported)
This commit is contained in:
@@ -509,23 +509,17 @@ fn parse_join(
|
||||
let left_tables = &tables[..table_index];
|
||||
assert!(!left_tables.is_empty());
|
||||
let right_table = &tables[table_index];
|
||||
let mut left_col =
|
||||
parse_row_id(&name_normalized, 0, || left_tables.len() != 1)?;
|
||||
let mut left_col = None;
|
||||
for (left_table_idx, left_table) in left_tables.iter().enumerate() {
|
||||
if left_col.is_some() {
|
||||
break;
|
||||
}
|
||||
left_col = left_table
|
||||
.columns()
|
||||
.iter()
|
||||
.enumerate()
|
||||
.find(|(_, col)| col.name == name_normalized)
|
||||
.map(|(idx, col)| ast::Expr::Column {
|
||||
database: None,
|
||||
table: left_table_idx,
|
||||
column: idx,
|
||||
is_rowid_alias: col.is_rowid_alias,
|
||||
});
|
||||
.map(|(idx, col)| (left_table_idx, idx, col));
|
||||
if left_col.is_some() {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if left_col.is_none() {
|
||||
crate::bail_parse_error!(
|
||||
@@ -533,33 +527,33 @@ fn parse_join(
|
||||
distinct_name.0
|
||||
);
|
||||
}
|
||||
let right_col =
|
||||
parse_row_id(&name_normalized, right_table.table_index, || false)?.or_else(
|
||||
|| {
|
||||
right_table
|
||||
.table
|
||||
.columns()
|
||||
.iter()
|
||||
.enumerate()
|
||||
.find(|(_, col)| col.name == name_normalized)
|
||||
.map(|(i, col)| ast::Expr::Column {
|
||||
database: None,
|
||||
table: right_table.table_index,
|
||||
column: i,
|
||||
is_rowid_alias: col.is_rowid_alias,
|
||||
})
|
||||
},
|
||||
);
|
||||
let right_col = right_table
|
||||
.columns()
|
||||
.iter()
|
||||
.enumerate()
|
||||
.find(|(_, col)| col.name == name_normalized);
|
||||
if right_col.is_none() {
|
||||
crate::bail_parse_error!(
|
||||
"cannot join using column {} - column not present in all tables",
|
||||
distinct_name.0
|
||||
);
|
||||
}
|
||||
let (left_table_idx, left_col_idx, left_col) = left_col.unwrap();
|
||||
let (right_col_idx, right_col) = right_col.unwrap();
|
||||
using_predicates.push(ast::Expr::Binary(
|
||||
Box::new(left_col.unwrap()),
|
||||
Box::new(ast::Expr::Column {
|
||||
database: None,
|
||||
table: left_table_idx,
|
||||
column: left_col_idx,
|
||||
is_rowid_alias: left_col.is_rowid_alias,
|
||||
}),
|
||||
ast::Operator::Equals,
|
||||
Box::new(right_col.unwrap()),
|
||||
Box::new(ast::Expr::Column {
|
||||
database: None,
|
||||
table: right_table.table_index,
|
||||
column: right_col_idx,
|
||||
is_rowid_alias: right_col.is_rowid_alias,
|
||||
}),
|
||||
));
|
||||
}
|
||||
predicates = Some(using_predicates);
|
||||
|
||||
@@ -114,14 +114,6 @@ do_execsql_test left-join-row-id {
|
||||
13|
|
||||
14|}
|
||||
|
||||
do_execsql_test left-join-row-id-2 {
|
||||
select u.rowid, p.rowid from users u left join products as p using(rowid) where u.rowid >= 10 limit 5;
|
||||
} {10|10
|
||||
11|11
|
||||
12|
|
||||
13|
|
||||
14|}
|
||||
|
||||
do_execsql_test left-join-constant-condition-true {
|
||||
select u.first_name, p.name from users u left join products as p on true limit 1;
|
||||
} {Jamie|hat}
|
||||
|
||||
@@ -85,7 +85,7 @@ do_execsql_test select-rowid {
|
||||
} {5|Edward}
|
||||
|
||||
do_execsql_test select-rowid-2 {
|
||||
select users.rowid, first_name from users u where rowid = 5;
|
||||
select u.rowid, first_name from users u where rowid = 5;
|
||||
} {5|Edward}
|
||||
|
||||
do_execsql_test seekrowid {
|
||||
|
||||
Reference in New Issue
Block a user