Fix:修复 SQL 子查询语义诊断误报 (#2184)
* Fix:修复 SQL 子查询语义诊断误报 * Improve:添加 SQL 语义诊断开关 * Improve:优化 SQL 语义诊断开关说明 * Fix:收紧 SQL 语义诊断飘红范围 * Improve:调整 SQL 语义诊断默认策略 --------- Co-authored-by: staff <staff@qimaos-MacBook-Pro.local>
This commit is contained in:
1 parent
73a996ebe6
commit
c38bc05417
12 files changed
+417
-31
No files matched your search
@@ -13,6 +13,26 @@ fn extracts_tables_aliases_and_qualified_columns() {
|
||||
assert_eq!(columns, vec![(Some("u"), "missing"), (Some("u"), "id")]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn extracts_nested_query_scopes_for_correlated_subqueries() {
|
||||
let sql = "select aa.house_id from mds_base_house aa where exists (select 1 from mds_base_owner where HOUSE_ID = aa.HOUSE_ID)";
|
||||
let analysis = analyze_sql_references(sql, Some("mysql")).unwrap();
|
||||
|
||||
let tables: Vec<_> =
|
||||
analysis.tables.iter().map(|table| (table.name.as_str(), table.alias.as_deref(), table.scope_id)).collect();
|
||||
assert_eq!(tables, vec![("mds_base_house", Some("aa"), 0), ("mds_base_owner", None, 1)]);
|
||||
|
||||
let scopes: Vec<_> = analysis.scopes.iter().map(|scope| (scope.id, scope.parent_id)).collect();
|
||||
assert_eq!(scopes, vec![(0, None), (1, Some(0))]);
|
||||
|
||||
let columns: Vec<_> = analysis
|
||||
.columns
|
||||
.iter()
|
||||
.map(|column| (column.qualifier.as_deref(), column.name.as_str(), column.scope_id))
|
||||
.collect();
|
||||
assert_eq!(columns, vec![(Some("aa"), "house_id", 0), (None, "HOUSE_ID", 1), (Some("aa"), "HOUSE_ID", 1)]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn extracts_unqualified_columns_from_single_table_select() {
|
||||
let analysis = analyze_sql_references("select missing, id from users", Some("postgres")).unwrap();
|
||||
|
||||
Reference in new issue
Block a user