diff --git a/backend/parsers/windmill-parser-sql/src/asset_parser.rs b/backend/parsers/windmill-parser-sql/src/asset_parser.rs index 8cae710df3..7dc7f3b15e 100644 --- a/backend/parsers/windmill-parser-sql/src/asset_parser.rs +++ b/backend/parsers/windmill-parser-sql/src/asset_parser.rs @@ -18,13 +18,25 @@ pub fn parse_assets(input: &str) -> anyhow::Result let _ = statement.visit(&mut collector); } + for (_, (kind, path)) in collector.var_identifiers { + if collector + .assets + .iter() + .all(|a| a.path.as_ref() != path || a.kind != kind) + { + collector + .assets + .push(ParseAssetsResult { kind: kind, access_type: None, path: path }); + } + } + Ok(merge_assets(collector.assets)) } /// Visitor that collects S3 asset literals from SQL statements struct AssetCollector { assets: Vec>, - // e.g set to true when we are inside a SELECT ... FROM ... statement + // e.g set to Read when we are inside a SELECT ... FROM ... statement current_access_type_stack: Vec, // e.g ATTACH 'ducklake://a' AS dl; => { "dl": (Ducklake, "a") } var_identifiers: HashMap,