You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
/// Given an iterator of spans, return the [Span::union] of all spans.
@@ -867,6 +867,7 @@ impl Spanned for Delete {
867
867
implSpannedforUpdate{
868
868
fnspan(&self) -> Span{
869
869
letUpdate{
870
+
update_token,
870
871
table,
871
872
assignments,
872
873
from,
@@ -878,6 +879,7 @@ impl Spanned for Update {
878
879
879
880
union_spans(
880
881
core::iter::once(table.span())
882
+
.chain(core::iter::once(update_token.0.span))
881
883
.chain(assignments.iter().map(|i| i.span()))
882
884
.chain(from.iter().map(|i| i.span()))
883
885
.chain(selection.iter().map(|i| i.span()))
@@ -2438,25 +2440,37 @@ pub mod tests {
2438
2440
#[test]
2439
2441
pubfntest_cte(){
2440
2442
let dialect = &GenericDialect;
2441
-
letmut test = SpanTest::new(dialect,"WITH cte_outer AS (SELECT a FROM postgres.public.source), cte_ignored AS (SELECT a FROM cte_outer), cte_inner AS (SELECT a FROM cte_outer) SELECT a FROM cte_inner");
2443
+
letmut test = SpanTest::new(
2444
+
dialect,
2445
+
"WITH cte_outer AS (SELECT a FROM postgres.public.source), cte_ignored AS (SELECT a FROM cte_outer), cte_inner AS (SELECT a FROM cte_outer) SELECT a FROM cte_inner",
2446
+
);
2442
2447
2443
2448
let query = test.0.parse_query().unwrap();
2444
2449
2445
2450
let select_span = query.span();
2446
2451
2447
-
assert_eq!(test.get_source(select_span),"WITH cte_outer AS (SELECT a FROM postgres.public.source), cte_ignored AS (SELECT a FROM cte_outer), cte_inner AS (SELECT a FROM cte_outer) SELECT a FROM cte_inner");
2452
+
assert_eq!(
2453
+
test.get_source(select_span),
2454
+
"WITH cte_outer AS (SELECT a FROM postgres.public.source), cte_ignored AS (SELECT a FROM cte_outer), cte_inner AS (SELECT a FROM cte_outer) SELECT a FROM cte_inner"
2455
+
);
2448
2456
}
2449
2457
2450
2458
#[test]
2451
2459
pubfntest_snowflake_lateral_flatten(){
2452
2460
let dialect = &SnowflakeDialect;
2453
-
letmut test = SpanTest::new(dialect,"SELECT FLATTENED.VALUE:field::TEXT AS FIELD FROM SNOWFLAKE.SCHEMA.SOURCE AS S, LATERAL FLATTEN(INPUT => S.JSON_ARRAY) AS FLATTENED");
2461
+
letmut test = SpanTest::new(
2462
+
dialect,
2463
+
"SELECT FLATTENED.VALUE:field::TEXT AS FIELD FROM SNOWFLAKE.SCHEMA.SOURCE AS S, LATERAL FLATTEN(INPUT => S.JSON_ARRAY) AS FLATTENED",
2464
+
);
2454
2465
2455
2466
let query = test.0.parse_select().unwrap();
2456
2467
2457
2468
let select_span = query.span();
2458
2469
2459
-
assert_eq!(test.get_source(select_span),"SELECT FLATTENED.VALUE:field::TEXT AS FIELD FROM SNOWFLAKE.SCHEMA.SOURCE AS S, LATERAL FLATTEN(INPUT => S.JSON_ARRAY) AS FLATTENED");
2470
+
assert_eq!(
2471
+
test.get_source(select_span),
2472
+
"SELECT FLATTENED.VALUE:field::TEXT AS FIELD FROM SNOWFLAKE.SCHEMA.SOURCE AS S, LATERAL FLATTEN(INPUT => S.JSON_ARRAY) AS FLATTENED"
2473
+
);
2460
2474
}
2461
2475
2462
2476
#[test]
@@ -2535,4 +2549,22 @@ ALTER TABLE users
2535
2549
assert_eq!(stmt_span.start,(2,13).into());
2536
2550
assert_eq!(stmt_span.end,(4,11).into());
2537
2551
}
2552
+
2553
+
#[test]
2554
+
fntest_update_statement_span(){
2555
+
let sql = r#"-- foo
2556
+
UPDATE foo
2557
+
/* bar */
2558
+
SET bar = 3
2559
+
WHERE quux > 42 ;
2560
+
"#;
2561
+
2562
+
let r = Parser::parse_sql(&crate::dialect::GenericDialect, sql).unwrap();
0 commit comments