chore: rollback using rowid(sqlite3 unsupported)

This commit is contained in:
Kould
2025-01-14 22:56:49 +08:00
parent 5305a9d0fd
commit 1bf651bd37
3 changed files with 25 additions and 39 deletions

View File

@@ -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);

View File

@@ -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}

View File

@@ -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 {