diff --git a/crates/parser/tests/snapshots/statements/valid/0038@2.snap b/crates/parser/tests/snapshots/statements/valid/0038@2.snap
index 637cca0f..b2939349 100644
--- a/crates/parser/tests/snapshots/statements/valid/0038@2.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0038@2.snap
@@ -1,33 +1,32 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE CAST (bigint AS int4) WITHOUT FUNCTION AS IMPLICIT;"
+description: CREATE CAST (bigint AS int4) WITHOUT FUNCTION AS IMPLICIT;
 ---
 Parse {
-    cst: SourceFile@0..59
-      Newline@0..1 "\n"
-      CreateCastStmt@1..59
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Cast@8..12 "CAST"
-        Whitespace@12..13 " "
-        Ascii40@13..14 "("
-        TypeName@14..20
-          Bigint@14..20 "bigint"
-        Whitespace@20..21 " "
-        As@21..23 "AS"
-        Whitespace@23..24 " "
-        TypeName@24..28
-          Ident@24..28 "int4"
-        Ascii41@28..29 ")"
-        Whitespace@29..30 " "
-        Without@30..37 "WITHOUT"
-        Whitespace@37..38 " "
-        Function@38..46 "FUNCTION"
-        Whitespace@46..47 " "
-        As@47..49 "AS"
-        Whitespace@49..50 " "
-        ImplicitP@50..58 "IMPLICIT"
-        Ascii59@58..59 ";"
+    cst: SourceFile@0..58
+      CreateCastStmt@0..58
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Cast@7..11 "CAST"
+        Whitespace@11..12 " "
+        Ascii40@12..13 "("
+        TypeName@13..19
+          Bigint@13..19 "bigint"
+        Whitespace@19..20 " "
+        As@20..22 "AS"
+        Whitespace@22..23 " "
+        TypeName@23..27
+          Ident@23..27 "int4"
+        Ascii41@27..28 ")"
+        Whitespace@28..29 " "
+        Without@29..36 "WITHOUT"
+        Whitespace@36..37 " "
+        Function@37..45 "FUNCTION"
+        Whitespace@45..46 " "
+        As@46..48 "AS"
+        Whitespace@48..49 " "
+        ImplicitP@49..57 "IMPLICIT"
+        Ascii59@57..58 ";"
     ,
     errors: [],
     stmts: [
@@ -92,7 +91,7 @@ Parse {
                     inout: false,
                 },
             ),
-            range: 0..58,
+            range: 0..57,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0038@3.snap b/crates/parser/tests/snapshots/statements/valid/0038@3.snap
index 8cb7e210..7deada38 100644
--- a/crates/parser/tests/snapshots/statements/valid/0038@3.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0038@3.snap
@@ -1,33 +1,32 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE CAST (bigint AS int4) WITH INOUT AS ASSIGNMENT;"
+description: CREATE CAST (bigint AS int4) WITH INOUT AS ASSIGNMENT;
 ---
 Parse {
-    cst: SourceFile@0..55
-      Newline@0..1 "\n"
-      CreateCastStmt@1..55
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Cast@8..12 "CAST"
-        Whitespace@12..13 " "
-        Ascii40@13..14 "("
-        TypeName@14..20
-          Bigint@14..20 "bigint"
-        Whitespace@20..21 " "
-        As@21..23 "AS"
-        Whitespace@23..24 " "
-        TypeName@24..28
-          Ident@24..28 "int4"
-        Ascii41@28..29 ")"
-        Whitespace@29..30 " "
-        With@30..34 "WITH"
-        Whitespace@34..35 " "
-        Inout@35..40 "INOUT"
-        Whitespace@40..41 " "
-        As@41..43 "AS"
-        Whitespace@43..44 " "
-        Assignment@44..54 "ASSIGNMENT"
-        Ascii59@54..55 ";"
+    cst: SourceFile@0..54
+      CreateCastStmt@0..54
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Cast@7..11 "CAST"
+        Whitespace@11..12 " "
+        Ascii40@12..13 "("
+        TypeName@13..19
+          Bigint@13..19 "bigint"
+        Whitespace@19..20 " "
+        As@20..22 "AS"
+        Whitespace@22..23 " "
+        TypeName@23..27
+          Ident@23..27 "int4"
+        Ascii41@27..28 ")"
+        Whitespace@28..29 " "
+        With@29..33 "WITH"
+        Whitespace@33..34 " "
+        Inout@34..39 "INOUT"
+        Whitespace@39..40 " "
+        As@40..42 "AS"
+        Whitespace@42..43 " "
+        Assignment@43..53 "ASSIGNMENT"
+        Ascii59@53..54 ";"
     ,
     errors: [],
     stmts: [
@@ -92,7 +91,7 @@ Parse {
                     inout: true,
                 },
             ),
-            range: 0..54,
+            range: 0..53,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0039@2.snap b/crates/parser/tests/snapshots/statements/valid/0039@2.snap
index a819d24b..e0321af3 100644
--- a/crates/parser/tests/snapshots/statements/valid/0039@2.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0039@2.snap
@@ -1,48 +1,47 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE AGGREGATE aggregate1 (int4, bool) (sfunc = sfunc1, stype = stype1);"
+description: "CREATE AGGREGATE aggregate1 (int4, bool) (sfunc = sfunc1, stype = stype1);"
 ---
 Parse {
-    cst: SourceFile@0..75
-      Newline@0..1 "\n"
-      DefineStmt@1..75
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Aggregate@8..17 "AGGREGATE"
-        Whitespace@17..18 " "
-        Ident@18..28 "aggregate1"
-        Whitespace@28..29 " "
-        Ascii40@29..30 "("
-        List@30..40
-          FunctionParameter@30..34
-            TypeName@30..34
-              Ident@30..34 "int4"
-          Ascii44@34..35 ","
-          Whitespace@35..36 " "
-          FunctionParameter@36..40
-            TypeName@36..40
-              Ident@36..40 "bool"
-        Ascii41@40..41 ")"
-        Whitespace@41..42 " "
-        Ascii40@42..43 "("
-        DefElem@43..57
-          Ident@43..48 "sfunc"
-          Whitespace@48..49 " "
-          Ascii61@49..50 "="
-          Whitespace@50..51 " "
-          TypeName@51..57
-            Ident@51..57 "sfunc1"
-        Ascii44@57..58 ","
-        Whitespace@58..59 " "
-        DefElem@59..73
-          Ident@59..64 "stype"
-          Whitespace@64..65 " "
-          Ascii61@65..66 "="
-          Whitespace@66..67 " "
-          TypeName@67..73
-            Ident@67..73 "stype1"
-        Ascii41@73..74 ")"
-        Ascii59@74..75 ";"
+    cst: SourceFile@0..74
+      DefineStmt@0..74
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Aggregate@7..16 "AGGREGATE"
+        Whitespace@16..17 " "
+        Ident@17..27 "aggregate1"
+        Whitespace@27..28 " "
+        Ascii40@28..29 "("
+        List@29..39
+          FunctionParameter@29..33
+            TypeName@29..33
+              Ident@29..33 "int4"
+          Ascii44@33..34 ","
+          Whitespace@34..35 " "
+          FunctionParameter@35..39
+            TypeName@35..39
+              Ident@35..39 "bool"
+        Ascii41@39..40 ")"
+        Whitespace@40..41 " "
+        Ascii40@41..42 "("
+        DefElem@42..56
+          Ident@42..47 "sfunc"
+          Whitespace@47..48 " "
+          Ascii61@48..49 "="
+          Whitespace@49..50 " "
+          TypeName@50..56
+            Ident@50..56 "sfunc1"
+        Ascii44@56..57 ","
+        Whitespace@57..58 " "
+        DefElem@58..72
+          Ident@58..63 "stype"
+          Whitespace@63..64 " "
+          Ascii61@64..65 "="
+          Whitespace@65..66 " "
+          TypeName@66..72
+            Ident@66..72 "stype1"
+        Ascii41@72..73 ")"
+        Ascii59@73..74 ";"
     ,
     errors: [],
     stmts: [
@@ -235,7 +234,7 @@ Parse {
                     replace: false,
                 },
             ),
-            range: 0..74,
+            range: 0..73,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0039@3.snap b/crates/parser/tests/snapshots/statements/valid/0039@3.snap
index f775efc1..5a697a73 100644
--- a/crates/parser/tests/snapshots/statements/valid/0039@3.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0039@3.snap
@@ -1,40 +1,39 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE AGGREGATE aggregate1 (*) (sfunc = sfunc1, stype = stype1);"
+description: "CREATE AGGREGATE aggregate1 (*) (sfunc = sfunc1, stype = stype1);"
 ---
 Parse {
-    cst: SourceFile@0..66
-      Newline@0..1 "\n"
-      DefineStmt@1..66
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Aggregate@8..17 "AGGREGATE"
-        Whitespace@17..18 " "
-        Ident@18..28 "aggregate1"
-        Whitespace@28..29 " "
-        Ascii40@29..30 "("
-        Ascii42@30..31 "*"
-        Ascii41@31..32 ")"
-        Whitespace@32..33 " "
-        Ascii40@33..34 "("
-        DefElem@34..48
-          Ident@34..39 "sfunc"
-          Whitespace@39..40 " "
-          Ascii61@40..41 "="
-          Whitespace@41..42 " "
-          TypeName@42..48
-            Ident@42..48 "sfunc1"
-        Ascii44@48..49 ","
-        Whitespace@49..50 " "
-        DefElem@50..64
-          Ident@50..55 "stype"
-          Whitespace@55..56 " "
-          Ascii61@56..57 "="
-          Whitespace@57..58 " "
-          TypeName@58..64
-            Ident@58..64 "stype1"
-        Ascii41@64..65 ")"
-        Ascii59@65..66 ";"
+    cst: SourceFile@0..65
+      DefineStmt@0..65
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Aggregate@7..16 "AGGREGATE"
+        Whitespace@16..17 " "
+        Ident@17..27 "aggregate1"
+        Whitespace@27..28 " "
+        Ascii40@28..29 "("
+        Ascii42@29..30 "*"
+        Ascii41@30..31 ")"
+        Whitespace@31..32 " "
+        Ascii40@32..33 "("
+        DefElem@33..47
+          Ident@33..38 "sfunc"
+          Whitespace@38..39 " "
+          Ascii61@39..40 "="
+          Whitespace@40..41 " "
+          TypeName@41..47
+            Ident@41..47 "sfunc1"
+        Ascii44@47..48 ","
+        Whitespace@48..49 " "
+        DefElem@49..63
+          Ident@49..54 "stype"
+          Whitespace@54..55 " "
+          Ascii61@55..56 "="
+          Whitespace@56..57 " "
+          TypeName@57..63
+            Ident@57..63 "stype1"
+        Ascii41@63..64 ")"
+        Ascii59@64..65 ";"
     ,
     errors: [],
     stmts: [
@@ -154,7 +153,7 @@ Parse {
                     replace: false,
                 },
             ),
-            range: 0..65,
+            range: 0..64,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0039@4.snap b/crates/parser/tests/snapshots/statements/valid/0039@4.snap
index f08cbbc7..63b0f1db 100644
--- a/crates/parser/tests/snapshots/statements/valid/0039@4.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0039@4.snap
@@ -1,51 +1,50 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE AGGREGATE aggregate1 (int4) (sfunc = sfunc1, stype = stype1, finalfunc_extra, mfinalfuncextra);"
+description: "CREATE AGGREGATE aggregate1 (int4) (sfunc = sfunc1, stype = stype1, finalfunc_extra, mfinalfuncextra);"
 ---
 Parse {
-    cst: SourceFile@0..103
-      Newline@0..1 "\n"
-      DefineStmt@1..103
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Aggregate@8..17 "AGGREGATE"
-        Whitespace@17..18 " "
-        Ident@18..28 "aggregate1"
-        Whitespace@28..29 " "
-        Ascii40@29..30 "("
-        List@30..34
-          FunctionParameter@30..34
-            TypeName@30..34
-              Ident@30..34 "int4"
-        Ascii41@34..35 ")"
-        Whitespace@35..36 " "
-        Ascii40@36..37 "("
-        DefElem@37..51
-          Ident@37..42 "sfunc"
-          Whitespace@42..43 " "
-          Ascii61@43..44 "="
-          Whitespace@44..45 " "
-          TypeName@45..51
-            Ident@45..51 "sfunc1"
-        Ascii44@51..52 ","
-        Whitespace@52..53 " "
-        DefElem@53..67
-          Ident@53..58 "stype"
-          Whitespace@58..59 " "
-          Ascii61@59..60 "="
-          Whitespace@60..61 " "
-          TypeName@61..67
-            Ident@61..67 "stype1"
-        Ascii44@67..68 ","
-        Whitespace@68..69 " "
-        DefElem@69..84
-          Ident@69..84 "finalfunc_extra"
-        Ascii44@84..85 ","
-        Whitespace@85..86 " "
-        DefElem@86..101
-          Ident@86..101 "mfinalfuncextra"
-        Ascii41@101..102 ")"
-        Ascii59@102..103 ";"
+    cst: SourceFile@0..102
+      DefineStmt@0..102
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Aggregate@7..16 "AGGREGATE"
+        Whitespace@16..17 " "
+        Ident@17..27 "aggregate1"
+        Whitespace@27..28 " "
+        Ascii40@28..29 "("
+        List@29..33
+          FunctionParameter@29..33
+            TypeName@29..33
+              Ident@29..33 "int4"
+        Ascii41@33..34 ")"
+        Whitespace@34..35 " "
+        Ascii40@35..36 "("
+        DefElem@36..50
+          Ident@36..41 "sfunc"
+          Whitespace@41..42 " "
+          Ascii61@42..43 "="
+          Whitespace@43..44 " "
+          TypeName@44..50
+            Ident@44..50 "sfunc1"
+        Ascii44@50..51 ","
+        Whitespace@51..52 " "
+        DefElem@52..66
+          Ident@52..57 "stype"
+          Whitespace@57..58 " "
+          Ascii61@58..59 "="
+          Whitespace@59..60 " "
+          TypeName@60..66
+            Ident@60..66 "stype1"
+        Ascii44@66..67 ","
+        Whitespace@67..68 " "
+        DefElem@68..83
+          Ident@68..83 "finalfunc_extra"
+        Ascii44@83..84 ","
+        Whitespace@84..85 " "
+        DefElem@85..100
+          Ident@85..100 "mfinalfuncextra"
+        Ascii41@100..101 ")"
+        Ascii59@101..102 ";"
     ,
     errors: [],
     stmts: [
@@ -231,7 +230,7 @@ Parse {
                     replace: false,
                 },
             ),
-            range: 0..102,
+            range: 0..101,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0039@5.snap b/crates/parser/tests/snapshots/statements/valid/0039@5.snap
index cbee8965..5a16ba96 100644
--- a/crates/parser/tests/snapshots/statements/valid/0039@5.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0039@5.snap
@@ -1,61 +1,60 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE AGGREGATE aggregate1 (int4) (sfunc = sfunc1, stype = stype1, finalfunc_modify = read_only, parallel = restricted);"
+description: "CREATE AGGREGATE aggregate1 (int4) (sfunc = sfunc1, stype = stype1, finalfunc_modify = read_only, parallel = restricted);"
 ---
 Parse {
-    cst: SourceFile@0..122
-      Newline@0..1 "\n"
-      DefineStmt@1..122
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Aggregate@8..17 "AGGREGATE"
-        Whitespace@17..18 " "
-        Ident@18..28 "aggregate1"
-        Whitespace@28..29 " "
-        Ascii40@29..30 "("
-        List@30..34
-          FunctionParameter@30..34
-            TypeName@30..34
-              Ident@30..34 "int4"
-        Ascii41@34..35 ")"
-        Whitespace@35..36 " "
-        Ascii40@36..37 "("
-        DefElem@37..51
-          Ident@37..42 "sfunc"
-          Whitespace@42..43 " "
-          Ascii61@43..44 "="
-          Whitespace@44..45 " "
-          TypeName@45..51
-            Ident@45..51 "sfunc1"
-        Ascii44@51..52 ","
-        Whitespace@52..53 " "
-        DefElem@53..67
-          Ident@53..58 "stype"
-          Whitespace@58..59 " "
-          Ascii61@59..60 "="
-          Whitespace@60..61 " "
-          TypeName@61..67
-            Ident@61..67 "stype1"
-        Ascii44@67..68 ","
-        Whitespace@68..69 " "
-        DefElem@69..97
-          Ident@69..85 "finalfunc_modify"
-          Whitespace@85..86 " "
-          Ascii61@86..87 "="
-          Whitespace@87..88 " "
-          TypeName@88..97
-            Ident@88..97 "read_only"
-        Ascii44@97..98 ","
-        Whitespace@98..99 " "
-        DefElem@99..120
-          Parallel@99..107 "parallel"
-          Whitespace@107..108 " "
-          Ascii61@108..109 "="
-          Whitespace@109..110 " "
-          TypeName@110..120
-            Ident@110..120 "restricted"
-        Ascii41@120..121 ")"
-        Ascii59@121..122 ";"
+    cst: SourceFile@0..121
+      DefineStmt@0..121
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Aggregate@7..16 "AGGREGATE"
+        Whitespace@16..17 " "
+        Ident@17..27 "aggregate1"
+        Whitespace@27..28 " "
+        Ascii40@28..29 "("
+        List@29..33
+          FunctionParameter@29..33
+            TypeName@29..33
+              Ident@29..33 "int4"
+        Ascii41@33..34 ")"
+        Whitespace@34..35 " "
+        Ascii40@35..36 "("
+        DefElem@36..50
+          Ident@36..41 "sfunc"
+          Whitespace@41..42 " "
+          Ascii61@42..43 "="
+          Whitespace@43..44 " "
+          TypeName@44..50
+            Ident@44..50 "sfunc1"
+        Ascii44@50..51 ","
+        Whitespace@51..52 " "
+        DefElem@52..66
+          Ident@52..57 "stype"
+          Whitespace@57..58 " "
+          Ascii61@58..59 "="
+          Whitespace@59..60 " "
+          TypeName@60..66
+            Ident@60..66 "stype1"
+        Ascii44@66..67 ","
+        Whitespace@67..68 " "
+        DefElem@68..96
+          Ident@68..84 "finalfunc_modify"
+          Whitespace@84..85 " "
+          Ascii61@85..86 "="
+          Whitespace@86..87 " "
+          TypeName@87..96
+            Ident@87..96 "read_only"
+        Ascii44@96..97 ","
+        Whitespace@97..98 " "
+        DefElem@98..119
+          Parallel@98..106 "parallel"
+          Whitespace@106..107 " "
+          Ascii61@107..108 "="
+          Whitespace@108..109 " "
+          TypeName@109..119
+            Ident@109..119 "restricted"
+        Ascii41@119..120 ")"
+        Ascii59@120..121 ";"
     ,
     errors: [],
     stmts: [
@@ -295,7 +294,7 @@ Parse {
                     replace: false,
                 },
             ),
-            range: 0..121,
+            range: 0..120,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0039@6.snap b/crates/parser/tests/snapshots/statements/valid/0039@6.snap
index 6e793c27..aa6d8a06 100644
--- a/crates/parser/tests/snapshots/statements/valid/0039@6.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0039@6.snap
@@ -1,64 +1,63 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE AGGREGATE percentile_disc (float8 ORDER BY anyelement) (sfunc = ordered_set_transition, stype = internal, finalfunc = percentile_disc_final, finalfunc_extra);"
+description: "CREATE AGGREGATE percentile_disc (float8 ORDER BY anyelement) (sfunc = ordered_set_transition, stype = internal, finalfunc = percentile_disc_final, finalfunc_extra);"
 ---
 Parse {
-    cst: SourceFile@0..166
-      Newline@0..1 "\n"
-      DefineStmt@1..166
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Aggregate@8..17 "AGGREGATE"
-        Whitespace@17..18 " "
-        Ident@18..33 "percentile_disc"
-        Whitespace@33..34 " "
-        Ascii40@34..35 "("
-        List@35..61
-          FunctionParameter@35..41
-            TypeName@35..41
-              Ident@35..41 "float8"
-          Whitespace@41..42 " "
-          Order@42..47 "ORDER"
-          Whitespace@47..48 " "
-          By@48..50 "BY"
-          Whitespace@50..51 " "
-          FunctionParameter@51..61
-            TypeName@51..61
-              Ident@51..61 "anyelement"
-        Ascii41@61..62 ")"
-        Whitespace@62..63 " "
-        Ascii40@63..64 "("
-        DefElem@64..94
-          Ident@64..69 "sfunc"
-          Whitespace@69..70 " "
-          Ascii61@70..71 "="
-          Whitespace@71..72 " "
-          TypeName@72..94
-            Ident@72..94 "ordered_set_transition"
-        Ascii44@94..95 ","
-        Whitespace@95..96 " "
-        DefElem@96..112
-          Ident@96..101 "stype"
-          Whitespace@101..102 " "
-          Ascii61@102..103 "="
-          Whitespace@103..104 " "
-          TypeName@104..112
-            Ident@104..112 "internal"
-        Ascii44@112..113 ","
-        Whitespace@113..114 " "
-        DefElem@114..147
-          Ident@114..123 "finalfunc"
-          Whitespace@123..124 " "
-          Ascii61@124..125 "="
-          Whitespace@125..126 " "
-          TypeName@126..147
-            Ident@126..147 "percentile_disc_final"
-        Ascii44@147..148 ","
-        Whitespace@148..149 " "
-        DefElem@149..164
-          Ident@149..164 "finalfunc_extra"
-        Ascii41@164..165 ")"
-        Ascii59@165..166 ";"
+    cst: SourceFile@0..165
+      DefineStmt@0..165
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Aggregate@7..16 "AGGREGATE"
+        Whitespace@16..17 " "
+        Ident@17..32 "percentile_disc"
+        Whitespace@32..33 " "
+        Ascii40@33..34 "("
+        List@34..60
+          FunctionParameter@34..40
+            TypeName@34..40
+              Ident@34..40 "float8"
+          Whitespace@40..41 " "
+          Order@41..46 "ORDER"
+          Whitespace@46..47 " "
+          By@47..49 "BY"
+          Whitespace@49..50 " "
+          FunctionParameter@50..60
+            TypeName@50..60
+              Ident@50..60 "anyelement"
+        Ascii41@60..61 ")"
+        Whitespace@61..62 " "
+        Ascii40@62..63 "("
+        DefElem@63..93
+          Ident@63..68 "sfunc"
+          Whitespace@68..69 " "
+          Ascii61@69..70 "="
+          Whitespace@70..71 " "
+          TypeName@71..93
+            Ident@71..93 "ordered_set_transition"
+        Ascii44@93..94 ","
+        Whitespace@94..95 " "
+        DefElem@95..111
+          Ident@95..100 "stype"
+          Whitespace@100..101 " "
+          Ascii61@101..102 "="
+          Whitespace@102..103 " "
+          TypeName@103..111
+            Ident@103..111 "internal"
+        Ascii44@111..112 ","
+        Whitespace@112..113 " "
+        DefElem@113..146
+          Ident@113..122 "finalfunc"
+          Whitespace@122..123 " "
+          Ascii61@123..124 "="
+          Whitespace@124..125 " "
+          TypeName@125..146
+            Ident@125..146 "percentile_disc_final"
+        Ascii44@146..147 ","
+        Whitespace@147..148 " "
+        DefElem@148..163
+          Ident@148..163 "finalfunc_extra"
+        Ascii41@163..164 ")"
+        Ascii59@164..165 ";"
     ,
     errors: [],
     stmts: [
@@ -304,7 +303,7 @@ Parse {
                     replace: false,
                 },
             ),
-            range: 0..165,
+            range: 0..164,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0039@7.snap b/crates/parser/tests/snapshots/statements/valid/0039@7.snap
index 77f7361e..d0fe38a5 100644
--- a/crates/parser/tests/snapshots/statements/valid/0039@7.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0039@7.snap
@@ -1,56 +1,55 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE AGGREGATE custom_aggregate (float8 ORDER BY column1, column2) (sfunc = sfunc1, stype = stype1);"
+description: "CREATE AGGREGATE custom_aggregate (float8 ORDER BY column1, column2) (sfunc = sfunc1, stype = stype1);"
 ---
 Parse {
-    cst: SourceFile@0..103
-      Newline@0..1 "\n"
-      DefineStmt@1..103
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Aggregate@8..17 "AGGREGATE"
-        Whitespace@17..18 " "
-        Ident@18..34 "custom_aggregate"
-        Whitespace@34..35 " "
-        Ascii40@35..36 "("
-        List@36..68
-          FunctionParameter@36..42
-            TypeName@36..42
-              Ident@36..42 "float8"
-          Whitespace@42..43 " "
-          Order@43..48 "ORDER"
-          Whitespace@48..49 " "
-          By@49..51 "BY"
-          Whitespace@51..52 " "
-          FunctionParameter@52..59
-            TypeName@52..59
-              Ident@52..59 "column1"
-          Ascii44@59..60 ","
-          Whitespace@60..61 " "
-          FunctionParameter@61..68
-            TypeName@61..68
-              Ident@61..68 "column2"
-        Ascii41@68..69 ")"
-        Whitespace@69..70 " "
-        Ascii40@70..71 "("
-        DefElem@71..85
-          Ident@71..76 "sfunc"
-          Whitespace@76..77 " "
-          Ascii61@77..78 "="
-          Whitespace@78..79 " "
-          TypeName@79..85
-            Ident@79..85 "sfunc1"
-        Ascii44@85..86 ","
-        Whitespace@86..87 " "
-        DefElem@87..101
-          Ident@87..92 "stype"
-          Whitespace@92..93 " "
-          Ascii61@93..94 "="
-          Whitespace@94..95 " "
-          TypeName@95..101
-            Ident@95..101 "stype1"
-        Ascii41@101..102 ")"
-        Ascii59@102..103 ";"
+    cst: SourceFile@0..102
+      DefineStmt@0..102
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Aggregate@7..16 "AGGREGATE"
+        Whitespace@16..17 " "
+        Ident@17..33 "custom_aggregate"
+        Whitespace@33..34 " "
+        Ascii40@34..35 "("
+        List@35..67
+          FunctionParameter@35..41
+            TypeName@35..41
+              Ident@35..41 "float8"
+          Whitespace@41..42 " "
+          Order@42..47 "ORDER"
+          Whitespace@47..48 " "
+          By@48..50 "BY"
+          Whitespace@50..51 " "
+          FunctionParameter@51..58
+            TypeName@51..58
+              Ident@51..58 "column1"
+          Ascii44@58..59 ","
+          Whitespace@59..60 " "
+          FunctionParameter@60..67
+            TypeName@60..67
+              Ident@60..67 "column2"
+        Ascii41@67..68 ")"
+        Whitespace@68..69 " "
+        Ascii40@69..70 "("
+        DefElem@70..84
+          Ident@70..75 "sfunc"
+          Whitespace@75..76 " "
+          Ascii61@76..77 "="
+          Whitespace@77..78 " "
+          TypeName@78..84
+            Ident@78..84 "sfunc1"
+        Ascii44@84..85 ","
+        Whitespace@85..86 " "
+        DefElem@86..100
+          Ident@86..91 "stype"
+          Whitespace@91..92 " "
+          Ascii61@92..93 "="
+          Whitespace@93..94 " "
+          TypeName@94..100
+            Ident@94..100 "stype1"
+        Ascii41@100..101 ")"
+        Ascii59@101..102 ";"
     ,
     errors: [],
     stmts: [
@@ -276,7 +275,7 @@ Parse {
                     replace: false,
                 },
             ),
-            range: 0..102,
+            range: 0..101,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0040@2.snap b/crates/parser/tests/snapshots/statements/valid/0040@2.snap
index 538d801d..a1e51fc8 100644
--- a/crates/parser/tests/snapshots/statements/valid/0040@2.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0040@2.snap
@@ -1,44 +1,43 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \\\"users\\\" WHERE users.id = $1;$$ LANGUAGE sql;"
+description: "CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \\\"users\\\" WHERE users.id = $1;$$ LANGUAGE sql;"
 ---
 Parse {
-    cst: SourceFile@0..125
-      Newline@0..1 "\n"
-      CreateFunctionStmt@1..125
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Or@8..10 "OR"
-        Whitespace@10..11 " "
-        Replace@11..18 "REPLACE"
-        Whitespace@18..19 " "
-        Function@19..27 "FUNCTION"
-        Whitespace@27..28 " "
-        Ident@28..34 "getfoo"
-        Ascii40@34..35 "("
-        FunctionParameter@35..38
-          TypeName@35..38
-            IntP@35..38 "int"
-        Ascii41@38..39 ")"
-        Whitespace@39..40 " "
-        Returns@40..47 "RETURNS"
-        Whitespace@47..48 " "
-        Setof@48..53 "SETOF"
-        Whitespace@53..54 " "
-        TypeName@54..59
-          Ident@54..59 "users"
-        Whitespace@59..60 " "
-        DefElem@60..111
-          As@60..62 "AS"
-          Whitespace@62..63 " "
-          List@63..111
-            Sconst@63..111 "$$SELECT * FROM \\\"use ..."
-        Whitespace@111..112 " "
-        DefElem@112..124
-          Language@112..120 "LANGUAGE"
-          Whitespace@120..121 " "
-          SqlP@121..124 "sql"
-        Ascii59@124..125 ";"
+    cst: SourceFile@0..124
+      CreateFunctionStmt@0..124
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Or@7..9 "OR"
+        Whitespace@9..10 " "
+        Replace@10..17 "REPLACE"
+        Whitespace@17..18 " "
+        Function@18..26 "FUNCTION"
+        Whitespace@26..27 " "
+        Ident@27..33 "getfoo"
+        Ascii40@33..34 "("
+        FunctionParameter@34..37
+          TypeName@34..37
+            IntP@34..37 "int"
+        Ascii41@37..38 ")"
+        Whitespace@38..39 " "
+        Returns@39..46 "RETURNS"
+        Whitespace@46..47 " "
+        Setof@47..52 "SETOF"
+        Whitespace@52..53 " "
+        TypeName@53..58
+          Ident@53..58 "users"
+        Whitespace@58..59 " "
+        DefElem@59..110
+          As@59..61 "AS"
+          Whitespace@61..62 " "
+          List@62..110
+            Sconst@62..110 "$$SELECT * FROM \\\"use ..."
+        Whitespace@110..111 " "
+        DefElem@111..123
+          Language@111..119 "LANGUAGE"
+          Whitespace@119..120 " "
+          SqlP@120..123 "sql"
+        Ascii59@123..124 ";"
     ,
     errors: [],
     stmts: [
@@ -185,7 +184,7 @@ Parse {
                     sql_body: None,
                 },
             ),
-            range: 0..124,
+            range: 0..123,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0040@3.snap b/crates/parser/tests/snapshots/statements/valid/0040@3.snap
index a4b0e706..d39c658a 100644
--- a/crates/parser/tests/snapshots/statements/valid/0040@3.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0040@3.snap
@@ -1,47 +1,46 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \\\"users\\\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE;"
+description: "CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \\\"users\\\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE;"
 ---
 Parse {
-    cst: SourceFile@0..135
-      Newline@0..1 "\n"
-      CreateFunctionStmt@1..135
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Or@8..10 "OR"
-        Whitespace@10..11 " "
-        Replace@11..18 "REPLACE"
-        Whitespace@18..19 " "
-        Function@19..27 "FUNCTION"
-        Whitespace@27..28 " "
-        Ident@28..34 "getfoo"
-        Ascii40@34..35 "("
-        FunctionParameter@35..38
-          TypeName@35..38
-            IntP@35..38 "int"
-        Ascii41@38..39 ")"
-        Whitespace@39..40 " "
-        Returns@40..47 "RETURNS"
-        Whitespace@47..48 " "
-        Setof@48..53 "SETOF"
-        Whitespace@53..54 " "
-        TypeName@54..59
-          Ident@54..59 "users"
-        Whitespace@59..60 " "
-        DefElem@60..111
-          As@60..62 "AS"
-          Whitespace@62..63 " "
-          List@63..111
-            Sconst@63..111 "$$SELECT * FROM \\\"use ..."
-        Whitespace@111..112 " "
-        DefElem@112..124
-          Language@112..120 "LANGUAGE"
-          Whitespace@120..121 " "
-          SqlP@121..124 "sql"
-        Whitespace@124..125 " "
-        DefElem@125..134
-          Immutable@125..134 "IMMUTABLE"
-        Ascii59@134..135 ";"
+    cst: SourceFile@0..134
+      CreateFunctionStmt@0..134
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Or@7..9 "OR"
+        Whitespace@9..10 " "
+        Replace@10..17 "REPLACE"
+        Whitespace@17..18 " "
+        Function@18..26 "FUNCTION"
+        Whitespace@26..27 " "
+        Ident@27..33 "getfoo"
+        Ascii40@33..34 "("
+        FunctionParameter@34..37
+          TypeName@34..37
+            IntP@34..37 "int"
+        Ascii41@37..38 ")"
+        Whitespace@38..39 " "
+        Returns@39..46 "RETURNS"
+        Whitespace@46..47 " "
+        Setof@47..52 "SETOF"
+        Whitespace@52..53 " "
+        TypeName@53..58
+          Ident@53..58 "users"
+        Whitespace@58..59 " "
+        DefElem@59..110
+          As@59..61 "AS"
+          Whitespace@61..62 " "
+          List@62..110
+            Sconst@62..110 "$$SELECT * FROM \\\"use ..."
+        Whitespace@110..111 " "
+        DefElem@111..123
+          Language@111..119 "LANGUAGE"
+          Whitespace@119..120 " "
+          SqlP@120..123 "sql"
+        Whitespace@123..124 " "
+        DefElem@124..133
+          Immutable@124..133 "IMMUTABLE"
+        Ascii59@133..134 ";"
     ,
     errors: [],
     stmts: [
@@ -211,7 +210,7 @@ Parse {
                     sql_body: None,
                 },
             ),
-            range: 0..134,
+            range: 0..133,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0040@4.snap b/crates/parser/tests/snapshots/statements/valid/0040@4.snap
index 61b82b4e..6d89ee01 100644
--- a/crates/parser/tests/snapshots/statements/valid/0040@4.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0040@4.snap
@@ -1,50 +1,49 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \\\"users\\\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE STRICT;"
+description: "CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \\\"users\\\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE STRICT;"
 ---
 Parse {
-    cst: SourceFile@0..142
-      Newline@0..1 "\n"
-      CreateFunctionStmt@1..142
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Or@8..10 "OR"
-        Whitespace@10..11 " "
-        Replace@11..18 "REPLACE"
-        Whitespace@18..19 " "
-        Function@19..27 "FUNCTION"
-        Whitespace@27..28 " "
-        Ident@28..34 "getfoo"
-        Ascii40@34..35 "("
-        FunctionParameter@35..38
-          TypeName@35..38
-            IntP@35..38 "int"
-        Ascii41@38..39 ")"
-        Whitespace@39..40 " "
-        Returns@40..47 "RETURNS"
-        Whitespace@47..48 " "
-        Setof@48..53 "SETOF"
-        Whitespace@53..54 " "
-        TypeName@54..59
-          Ident@54..59 "users"
-        Whitespace@59..60 " "
-        DefElem@60..111
-          As@60..62 "AS"
-          Whitespace@62..63 " "
-          List@63..111
-            Sconst@63..111 "$$SELECT * FROM \\\"use ..."
-        Whitespace@111..112 " "
-        DefElem@112..124
-          Language@112..120 "LANGUAGE"
-          Whitespace@120..121 " "
-          SqlP@121..124 "sql"
-        Whitespace@124..125 " "
-        DefElem@125..134
-          Immutable@125..134 "IMMUTABLE"
-        Whitespace@134..135 " "
-        DefElem@135..141
-          StrictP@135..141 "STRICT"
-        Ascii59@141..142 ";"
+    cst: SourceFile@0..141
+      CreateFunctionStmt@0..141
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Or@7..9 "OR"
+        Whitespace@9..10 " "
+        Replace@10..17 "REPLACE"
+        Whitespace@17..18 " "
+        Function@18..26 "FUNCTION"
+        Whitespace@26..27 " "
+        Ident@27..33 "getfoo"
+        Ascii40@33..34 "("
+        FunctionParameter@34..37
+          TypeName@34..37
+            IntP@34..37 "int"
+        Ascii41@37..38 ")"
+        Whitespace@38..39 " "
+        Returns@39..46 "RETURNS"
+        Whitespace@46..47 " "
+        Setof@47..52 "SETOF"
+        Whitespace@52..53 " "
+        TypeName@53..58
+          Ident@53..58 "users"
+        Whitespace@58..59 " "
+        DefElem@59..110
+          As@59..61 "AS"
+          Whitespace@61..62 " "
+          List@62..110
+            Sconst@62..110 "$$SELECT * FROM \\\"use ..."
+        Whitespace@110..111 " "
+        DefElem@111..123
+          Language@111..119 "LANGUAGE"
+          Whitespace@119..120 " "
+          SqlP@120..123 "sql"
+        Whitespace@123..124 " "
+        DefElem@124..133
+          Immutable@124..133 "IMMUTABLE"
+        Whitespace@133..134 " "
+        DefElem@134..140
+          StrictP@134..140 "STRICT"
+        Ascii59@140..141 ";"
     ,
     errors: [],
     stmts: [
@@ -237,7 +236,7 @@ Parse {
                     sql_body: None,
                 },
             ),
-            range: 0..141,
+            range: 0..140,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0040@5.snap b/crates/parser/tests/snapshots/statements/valid/0040@5.snap
index 12af6657..275f2fc9 100644
--- a/crates/parser/tests/snapshots/statements/valid/0040@5.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0040@5.snap
@@ -1,58 +1,57 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \\\"users\\\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE RETURNS NULL ON NULL INPUT;"
+description: "CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \\\"users\\\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE RETURNS NULL ON NULL INPUT;"
 ---
 Parse {
-    cst: SourceFile@0..162
-      Newline@0..1 "\n"
-      CreateFunctionStmt@1..162
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Or@8..10 "OR"
-        Whitespace@10..11 " "
-        Replace@11..18 "REPLACE"
-        Whitespace@18..19 " "
-        Function@19..27 "FUNCTION"
-        Whitespace@27..28 " "
-        Ident@28..34 "getfoo"
-        Ascii40@34..35 "("
-        FunctionParameter@35..38
-          TypeName@35..38
-            IntP@35..38 "int"
-        Ascii41@38..39 ")"
-        Whitespace@39..40 " "
-        Returns@40..47 "RETURNS"
-        Whitespace@47..48 " "
-        Setof@48..53 "SETOF"
-        Whitespace@53..54 " "
-        TypeName@54..59
-          Ident@54..59 "users"
-        Whitespace@59..60 " "
-        DefElem@60..111
-          As@60..62 "AS"
-          Whitespace@62..63 " "
-          List@63..111
-            Sconst@63..111 "$$SELECT * FROM \\\"use ..."
-        Whitespace@111..112 " "
-        DefElem@112..124
-          Language@112..120 "LANGUAGE"
-          Whitespace@120..121 " "
-          SqlP@121..124 "sql"
-        Whitespace@124..125 " "
-        DefElem@125..134
-          Immutable@125..134 "IMMUTABLE"
-        Whitespace@134..135 " "
-        DefElem@135..142
-          Returns@135..142 "RETURNS"
-        Whitespace@142..143 " "
-        NullP@143..147 "NULL"
-        Whitespace@147..148 " "
-        On@148..150 "ON"
-        Whitespace@150..151 " "
-        NullP@151..155 "NULL"
-        Whitespace@155..156 " "
-        InputP@156..161 "INPUT"
-        Ascii59@161..162 ";"
+    cst: SourceFile@0..161
+      CreateFunctionStmt@0..161
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Or@7..9 "OR"
+        Whitespace@9..10 " "
+        Replace@10..17 "REPLACE"
+        Whitespace@17..18 " "
+        Function@18..26 "FUNCTION"
+        Whitespace@26..27 " "
+        Ident@27..33 "getfoo"
+        Ascii40@33..34 "("
+        FunctionParameter@34..37
+          TypeName@34..37
+            IntP@34..37 "int"
+        Ascii41@37..38 ")"
+        Whitespace@38..39 " "
+        Returns@39..46 "RETURNS"
+        Whitespace@46..47 " "
+        Setof@47..52 "SETOF"
+        Whitespace@52..53 " "
+        TypeName@53..58
+          Ident@53..58 "users"
+        Whitespace@58..59 " "
+        DefElem@59..110
+          As@59..61 "AS"
+          Whitespace@61..62 " "
+          List@62..110
+            Sconst@62..110 "$$SELECT * FROM \\\"use ..."
+        Whitespace@110..111 " "
+        DefElem@111..123
+          Language@111..119 "LANGUAGE"
+          Whitespace@119..120 " "
+          SqlP@120..123 "sql"
+        Whitespace@123..124 " "
+        DefElem@124..133
+          Immutable@124..133 "IMMUTABLE"
+        Whitespace@133..134 " "
+        DefElem@134..141
+          Returns@134..141 "RETURNS"
+        Whitespace@141..142 " "
+        NullP@142..146 "NULL"
+        Whitespace@146..147 " "
+        On@147..149 "ON"
+        Whitespace@149..150 " "
+        NullP@150..154 "NULL"
+        Whitespace@154..155 " "
+        InputP@155..160 "INPUT"
+        Ascii59@160..161 ";"
     ,
     errors: [],
     stmts: [
@@ -245,7 +244,7 @@ Parse {
                     sql_body: None,
                 },
             ),
-            range: 0..161,
+            range: 0..160,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0040@6.snap b/crates/parser/tests/snapshots/statements/valid/0040@6.snap
index fea59877..296f9dde 100644
--- a/crates/parser/tests/snapshots/statements/valid/0040@6.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0040@6.snap
@@ -1,56 +1,55 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \\\"users\\\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE CALLED ON NULL INPUT;"
+description: "CREATE OR REPLACE FUNCTION getfoo(int) RETURNS SETOF users AS $$SELECT * FROM \\\"users\\\" WHERE users.id = $1;$$ LANGUAGE sql IMMUTABLE CALLED ON NULL INPUT;"
 ---
 Parse {
-    cst: SourceFile@0..156
-      Newline@0..1 "\n"
-      CreateFunctionStmt@1..156
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Or@8..10 "OR"
-        Whitespace@10..11 " "
-        Replace@11..18 "REPLACE"
-        Whitespace@18..19 " "
-        Function@19..27 "FUNCTION"
-        Whitespace@27..28 " "
-        Ident@28..34 "getfoo"
-        Ascii40@34..35 "("
-        FunctionParameter@35..38
-          TypeName@35..38
-            IntP@35..38 "int"
-        Ascii41@38..39 ")"
-        Whitespace@39..40 " "
-        Returns@40..47 "RETURNS"
-        Whitespace@47..48 " "
-        Setof@48..53 "SETOF"
-        Whitespace@53..54 " "
-        TypeName@54..59
-          Ident@54..59 "users"
-        Whitespace@59..60 " "
-        DefElem@60..111
-          As@60..62 "AS"
-          Whitespace@62..63 " "
-          List@63..111
-            Sconst@63..111 "$$SELECT * FROM \\\"use ..."
-        Whitespace@111..112 " "
-        DefElem@112..124
-          Language@112..120 "LANGUAGE"
-          Whitespace@120..121 " "
-          SqlP@121..124 "sql"
-        Whitespace@124..125 " "
-        DefElem@125..134
-          Immutable@125..134 "IMMUTABLE"
-        Whitespace@134..135 " "
-        DefElem@135..141
-          Called@135..141 "CALLED"
-        Whitespace@141..142 " "
-        On@142..144 "ON"
-        Whitespace@144..145 " "
-        NullP@145..149 "NULL"
-        Whitespace@149..150 " "
-        InputP@150..155 "INPUT"
-        Ascii59@155..156 ";"
+    cst: SourceFile@0..155
+      CreateFunctionStmt@0..155
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Or@7..9 "OR"
+        Whitespace@9..10 " "
+        Replace@10..17 "REPLACE"
+        Whitespace@17..18 " "
+        Function@18..26 "FUNCTION"
+        Whitespace@26..27 " "
+        Ident@27..33 "getfoo"
+        Ascii40@33..34 "("
+        FunctionParameter@34..37
+          TypeName@34..37
+            IntP@34..37 "int"
+        Ascii41@37..38 ")"
+        Whitespace@38..39 " "
+        Returns@39..46 "RETURNS"
+        Whitespace@46..47 " "
+        Setof@47..52 "SETOF"
+        Whitespace@52..53 " "
+        TypeName@53..58
+          Ident@53..58 "users"
+        Whitespace@58..59 " "
+        DefElem@59..110
+          As@59..61 "AS"
+          Whitespace@61..62 " "
+          List@62..110
+            Sconst@62..110 "$$SELECT * FROM \\\"use ..."
+        Whitespace@110..111 " "
+        DefElem@111..123
+          Language@111..119 "LANGUAGE"
+          Whitespace@119..120 " "
+          SqlP@120..123 "sql"
+        Whitespace@123..124 " "
+        DefElem@124..133
+          Immutable@124..133 "IMMUTABLE"
+        Whitespace@133..134 " "
+        DefElem@134..140
+          Called@134..140 "CALLED"
+        Whitespace@140..141 " "
+        On@141..143 "ON"
+        Whitespace@143..144 " "
+        NullP@144..148 "NULL"
+        Whitespace@148..149 " "
+        InputP@149..154 "INPUT"
+        Ascii59@154..155 ";"
     ,
     errors: [],
     stmts: [
@@ -243,7 +242,7 @@ Parse {
                     sql_body: None,
                 },
             ),
-            range: 0..155,
+            range: 0..154,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0040@7.snap b/crates/parser/tests/snapshots/statements/valid/0040@7.snap
index 3cb31466..ca41f566 100644
--- a/crates/parser/tests/snapshots/statements/valid/0040@7.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0040@7.snap
@@ -1,51 +1,50 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE OR REPLACE FUNCTION getfoo() RETURNS text AS $$SELECT name FROM \\\"users\\\" LIMIT 1$$ LANGUAGE sql IMMUTABLE CALLED ON NULL INPUT;"
+description: "CREATE OR REPLACE FUNCTION getfoo() RETURNS text AS $$SELECT name FROM \\\"users\\\" LIMIT 1$$ LANGUAGE sql IMMUTABLE CALLED ON NULL INPUT;"
 ---
 Parse {
-    cst: SourceFile@0..136
-      Newline@0..1 "\n"
-      CreateFunctionStmt@1..136
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Or@8..10 "OR"
-        Whitespace@10..11 " "
-        Replace@11..18 "REPLACE"
-        Whitespace@18..19 " "
-        Function@19..27 "FUNCTION"
-        Whitespace@27..28 " "
-        Ident@28..34 "getfoo"
-        Ascii40@34..35 "("
-        Ascii41@35..36 ")"
-        Whitespace@36..37 " "
-        Returns@37..44 "RETURNS"
-        Whitespace@44..45 " "
-        TypeName@45..49
-          TextP@45..49 "text"
-        Whitespace@49..50 " "
-        DefElem@50..91
-          As@50..52 "AS"
-          Whitespace@52..53 " "
-          List@53..91
-            Sconst@53..91 "$$SELECT name FROM \\\" ..."
-        Whitespace@91..92 " "
-        DefElem@92..104
-          Language@92..100 "LANGUAGE"
-          Whitespace@100..101 " "
-          SqlP@101..104 "sql"
-        Whitespace@104..105 " "
-        DefElem@105..114
-          Immutable@105..114 "IMMUTABLE"
-        Whitespace@114..115 " "
-        DefElem@115..121
-          Called@115..121 "CALLED"
-        Whitespace@121..122 " "
-        On@122..124 "ON"
-        Whitespace@124..125 " "
-        NullP@125..129 "NULL"
-        Whitespace@129..130 " "
-        InputP@130..135 "INPUT"
-        Ascii59@135..136 ";"
+    cst: SourceFile@0..135
+      CreateFunctionStmt@0..135
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Or@7..9 "OR"
+        Whitespace@9..10 " "
+        Replace@10..17 "REPLACE"
+        Whitespace@17..18 " "
+        Function@18..26 "FUNCTION"
+        Whitespace@26..27 " "
+        Ident@27..33 "getfoo"
+        Ascii40@33..34 "("
+        Ascii41@34..35 ")"
+        Whitespace@35..36 " "
+        Returns@36..43 "RETURNS"
+        Whitespace@43..44 " "
+        TypeName@44..48
+          TextP@44..48 "text"
+        Whitespace@48..49 " "
+        DefElem@49..90
+          As@49..51 "AS"
+          Whitespace@51..52 " "
+          List@52..90
+            Sconst@52..90 "$$SELECT name FROM \\\" ..."
+        Whitespace@90..91 " "
+        DefElem@91..103
+          Language@91..99 "LANGUAGE"
+          Whitespace@99..100 " "
+          SqlP@100..103 "sql"
+        Whitespace@103..104 " "
+        DefElem@104..113
+          Immutable@104..113 "IMMUTABLE"
+        Whitespace@113..114 " "
+        DefElem@114..120
+          Called@114..120 "CALLED"
+        Whitespace@120..121 " "
+        On@121..123 "ON"
+        Whitespace@123..124 " "
+        NullP@124..128 "NULL"
+        Whitespace@128..129 " "
+        InputP@129..134 "INPUT"
+        Ascii59@134..135 ";"
     ,
     errors: [],
     stmts: [
@@ -195,7 +194,7 @@ Parse {
                     sql_body: None,
                 },
             ),
-            range: 0..135,
+            range: 0..134,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0041@2.snap b/crates/parser/tests/snapshots/statements/valid/0041@2.snap
index 8ddbd3eb..3893d4bd 100644
--- a/crates/parser/tests/snapshots/statements/valid/0041@2.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0041@2.snap
@@ -1,20 +1,19 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE SCHEMA AUTHORIZATION joe;"
+description: CREATE SCHEMA AUTHORIZATION joe;
 ---
 Parse {
-    cst: SourceFile@0..33
-      Newline@0..1 "\n"
-      CreateSchemaStmt@1..33
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Schema@8..14 "SCHEMA"
-        Whitespace@14..15 " "
-        Authorization@15..28 "AUTHORIZATION"
-        Whitespace@28..29 " "
-        RoleSpec@29..32
-          Ident@29..32 "joe"
-        Ascii59@32..33 ";"
+    cst: SourceFile@0..32
+      CreateSchemaStmt@0..32
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Schema@7..13 "SCHEMA"
+        Whitespace@13..14 " "
+        Authorization@14..27 "AUTHORIZATION"
+        Whitespace@27..28 " "
+        RoleSpec@28..31
+          Ident@28..31 "joe"
+        Ascii59@31..32 ";"
     ,
     errors: [],
     stmts: [
@@ -33,7 +32,7 @@ Parse {
                     if_not_exists: false,
                 },
             ),
-            range: 0..32,
+            range: 0..31,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0041@3.snap b/crates/parser/tests/snapshots/statements/valid/0041@3.snap
index e8af8d4a..3c83312e 100644
--- a/crates/parser/tests/snapshots/statements/valid/0041@3.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0041@3.snap
@@ -1,28 +1,27 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE SCHEMA IF NOT EXISTS test AUTHORIZATION joe;"
+description: CREATE SCHEMA IF NOT EXISTS test AUTHORIZATION joe;
 ---
 Parse {
-    cst: SourceFile@0..52
-      Newline@0..1 "\n"
-      CreateSchemaStmt@1..52
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Schema@8..14 "SCHEMA"
-        Whitespace@14..15 " "
-        IfP@15..17 "IF"
-        Whitespace@17..18 " "
-        Not@18..21 "NOT"
-        Whitespace@21..22 " "
-        Exists@22..28 "EXISTS"
-        Whitespace@28..29 " "
-        Ident@29..33 "test"
-        Whitespace@33..34 " "
-        Authorization@34..47 "AUTHORIZATION"
-        Whitespace@47..48 " "
-        RoleSpec@48..51
-          Ident@48..51 "joe"
-        Ascii59@51..52 ";"
+    cst: SourceFile@0..51
+      CreateSchemaStmt@0..51
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Schema@7..13 "SCHEMA"
+        Whitespace@13..14 " "
+        IfP@14..16 "IF"
+        Whitespace@16..17 " "
+        Not@17..20 "NOT"
+        Whitespace@20..21 " "
+        Exists@21..27 "EXISTS"
+        Whitespace@27..28 " "
+        Ident@28..32 "test"
+        Whitespace@32..33 " "
+        Authorization@33..46 "AUTHORIZATION"
+        Whitespace@46..47 " "
+        RoleSpec@47..50
+          Ident@47..50 "joe"
+        Ascii59@50..51 ";"
     ,
     errors: [],
     stmts: [
@@ -41,7 +40,7 @@ Parse {
                     if_not_exists: true,
                 },
             ),
-            range: 0..51,
+            range: 0..50,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0041@4.snap b/crates/parser/tests/snapshots/statements/valid/0041@4.snap
index 2a66ddac..1fc76ac3 100644
--- a/crates/parser/tests/snapshots/statements/valid/0041@4.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0041@4.snap
@@ -1,95 +1,94 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE SCHEMA hollywood CREATE TABLE films (title text, release date, awards text[]) CREATE VIEW winners AS SELECT title, release FROM films WHERE awards IS NOT NULL;"
+description: "CREATE SCHEMA hollywood CREATE TABLE films (title text, release date, awards text[]) CREATE VIEW winners AS SELECT title, release FROM films WHERE awards IS NOT NULL;"
 ---
 Parse {
-    cst: SourceFile@0..165
-      Newline@0..1 "\n"
-      CreateSchemaStmt@1..24
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Schema@8..14 "SCHEMA"
-        Whitespace@14..15 " "
-        Ident@15..24 "hollywood"
-      CreateStmt@24..84
-        Create@24..30 "CREATE"
-        Whitespace@30..31 " "
-        Table@31..36 "TABLE"
-        Whitespace@36..37 " "
-        RangeVar@37..42
-          Ident@37..42 "films"
-        Whitespace@42..43 " "
-        Ascii40@43..44 "("
-        ColumnDef@44..54
-          Ident@44..49 "title"
-          Whitespace@49..50 " "
-          TypeName@50..54
-            TextP@50..54 "text"
-        Ascii44@54..55 ","
-        Whitespace@55..56 " "
-        ColumnDef@56..68
-          Release@56..63 "release"
-          Whitespace@63..64 " "
-          TypeName@64..68
-            Ident@64..68 "date"
-        Ascii44@68..69 ","
-        Whitespace@69..70 " "
-        ColumnDef@70..81
-          Ident@70..76 "awards"
-          Whitespace@76..77 " "
-          TypeName@77..81
-            TextP@77..81 "text"
-        Ascii91@81..82 "["
-        Ascii93@82..83 "]"
-        Ascii41@83..84 ")"
-      ViewStmt@84..165
-        Create@84..90 "CREATE"
-        Whitespace@90..91 " "
-        View@91..95 "VIEW"
-        Whitespace@95..96 " "
-        RangeVar@96..103
-          Ident@96..103 "winners"
-        Whitespace@103..104 " "
-        As@104..106 "AS"
-        Whitespace@106..107 " "
-        SelectStmt@107..164
-          Select@107..113 "SELECT"
-          Whitespace@113..114 " "
-          ResTarget@114..119
-            ColumnRef@114..119
-              Ident@114..119 "title"
-          Ascii44@119..120 ","
-          Whitespace@120..121 " "
-          ResTarget@121..128
-            ColumnRef@121..128
-              Release@121..128 "release"
-          Whitespace@128..129 " "
-          From@129..133 "FROM"
-          Whitespace@133..134 " "
-          RangeVar@134..139
-            Ident@134..139 "films"
-          Whitespace@139..140 " "
-          Where@140..145 "WHERE"
-          Whitespace@145..146 " "
-          NullTest@146..164
-            ColumnRef@146..152
-              Ident@146..152 "awards"
-            Whitespace@152..153 " "
-            Is@153..155 "IS"
-            Whitespace@155..156 " "
-            Not@156..159 "NOT"
-            Whitespace@159..160 " "
-            NullP@160..164 "NULL"
-        Ascii59@164..165 ";"
+    cst: SourceFile@0..164
+      CreateSchemaStmt@0..23
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Schema@7..13 "SCHEMA"
+        Whitespace@13..14 " "
+        Ident@14..23 "hollywood"
+      CreateStmt@23..83
+        Create@23..29 "CREATE"
+        Whitespace@29..30 " "
+        Table@30..35 "TABLE"
+        Whitespace@35..36 " "
+        RangeVar@36..41
+          Ident@36..41 "films"
+        Whitespace@41..42 " "
+        Ascii40@42..43 "("
+        ColumnDef@43..53
+          Ident@43..48 "title"
+          Whitespace@48..49 " "
+          TypeName@49..53
+            TextP@49..53 "text"
+        Ascii44@53..54 ","
+        Whitespace@54..55 " "
+        ColumnDef@55..67
+          Release@55..62 "release"
+          Whitespace@62..63 " "
+          TypeName@63..67
+            Ident@63..67 "date"
+        Ascii44@67..68 ","
+        Whitespace@68..69 " "
+        ColumnDef@69..80
+          Ident@69..75 "awards"
+          Whitespace@75..76 " "
+          TypeName@76..80
+            TextP@76..80 "text"
+        Ascii91@80..81 "["
+        Ascii93@81..82 "]"
+        Ascii41@82..83 ")"
+      ViewStmt@83..164
+        Create@83..89 "CREATE"
+        Whitespace@89..90 " "
+        View@90..94 "VIEW"
+        Whitespace@94..95 " "
+        RangeVar@95..102
+          Ident@95..102 "winners"
+        Whitespace@102..103 " "
+        As@103..105 "AS"
+        Whitespace@105..106 " "
+        SelectStmt@106..163
+          Select@106..112 "SELECT"
+          Whitespace@112..113 " "
+          ResTarget@113..118
+            ColumnRef@113..118
+              Ident@113..118 "title"
+          Ascii44@118..119 ","
+          Whitespace@119..120 " "
+          ResTarget@120..127
+            ColumnRef@120..127
+              Release@120..127 "release"
+          Whitespace@127..128 " "
+          From@128..132 "FROM"
+          Whitespace@132..133 " "
+          RangeVar@133..138
+            Ident@133..138 "films"
+          Whitespace@138..139 " "
+          Where@139..144 "WHERE"
+          Whitespace@144..145 " "
+          NullTest@145..163
+            ColumnRef@145..151
+              Ident@145..151 "awards"
+            Whitespace@151..152 " "
+            Is@152..154 "IS"
+            Whitespace@154..155 " "
+            Not@155..158 "NOT"
+            Whitespace@158..159 " "
+            NullP@159..163 "NULL"
+        Ascii59@163..164 ";"
     ,
     errors: [
         SyntaxError(
             "Expected Ascii59, found Whitespace",
-            24..24,
+            23..23,
         ),
         SyntaxError(
             "Expected Ascii59, found Whitespace",
-            85..85,
+            84..84,
         ),
     ],
     stmts: [
@@ -102,7 +101,7 @@ Parse {
                     if_not_exists: false,
                 },
             ),
-            range: 0..24,
+            range: 0..23,
         },
         RawStmt {
             stmt: CreateStmt(
@@ -283,7 +282,7 @@ Parse {
                     if_not_exists: false,
                 },
             ),
-            range: 24..85,
+            range: 23..84,
         },
         RawStmt {
             stmt: ViewStmt(
@@ -453,7 +452,7 @@ Parse {
                     with_check_option: NoCheckOption,
                 },
             ),
-            range: 85..166,
+            range: 84..165,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0044@2.snap b/crates/parser/tests/snapshots/statements/valid/0044@2.snap
index 36f6d93f..cf3f34b5 100644
--- a/crates/parser/tests/snapshots/statements/valid/0044@2.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0044@2.snap
@@ -1,52 +1,51 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE VIEW universal_comedies AS SELECT * FROM comedies WHERE classification = 'U' WITH LOCAL CHECK OPTION;"
+description: "CREATE VIEW universal_comedies AS SELECT * FROM comedies WHERE classification = 'U' WITH LOCAL CHECK OPTION;"
 ---
 Parse {
-    cst: SourceFile@0..109
-      Newline@0..1 "\n"
-      ViewStmt@1..109
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        View@8..12 "VIEW"
-        Whitespace@12..13 " "
-        RangeVar@13..31
-          Ident@13..31 "universal_comedies"
-        Whitespace@31..32 " "
-        As@32..34 "AS"
-        Whitespace@34..35 " "
-        SelectStmt@35..84
-          Select@35..41 "SELECT"
-          Whitespace@41..42 " "
-          ResTarget@42..43
-            ColumnRef@42..43
-              AStar@42..43
-                Ascii42@42..43 "*"
-          Whitespace@43..44 " "
-          From@44..48 "FROM"
-          Whitespace@48..49 " "
-          RangeVar@49..57
-            Ident@49..57 "comedies"
-          Whitespace@57..58 " "
-          Where@58..63 "WHERE"
-          Whitespace@63..64 " "
-          AExpr@64..84
-            ColumnRef@64..78
-              Ident@64..78 "classification"
-            Whitespace@78..79 " "
-            Ascii61@79..80 "="
-            Whitespace@80..81 " "
-            AConst@81..84
-              Sconst@81..84 "'U'"
-        Whitespace@84..85 " "
-        With@85..89 "WITH"
-        Whitespace@89..90 " "
-        Local@90..95 "LOCAL"
-        Whitespace@95..96 " "
-        Check@96..101 "CHECK"
-        Whitespace@101..102 " "
-        Option@102..108 "OPTION"
-        Ascii59@108..109 ";"
+    cst: SourceFile@0..108
+      ViewStmt@0..108
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        View@7..11 "VIEW"
+        Whitespace@11..12 " "
+        RangeVar@12..30
+          Ident@12..30 "universal_comedies"
+        Whitespace@30..31 " "
+        As@31..33 "AS"
+        Whitespace@33..34 " "
+        SelectStmt@34..83
+          Select@34..40 "SELECT"
+          Whitespace@40..41 " "
+          ResTarget@41..42
+            ColumnRef@41..42
+              AStar@41..42
+                Ascii42@41..42 "*"
+          Whitespace@42..43 " "
+          From@43..47 "FROM"
+          Whitespace@47..48 " "
+          RangeVar@48..56
+            Ident@48..56 "comedies"
+          Whitespace@56..57 " "
+          Where@57..62 "WHERE"
+          Whitespace@62..63 " "
+          AExpr@63..83
+            ColumnRef@63..77
+              Ident@63..77 "classification"
+            Whitespace@77..78 " "
+            Ascii61@78..79 "="
+            Whitespace@79..80 " "
+            AConst@80..83
+              Sconst@80..83 "'U'"
+        Whitespace@83..84 " "
+        With@84..88 "WITH"
+        Whitespace@88..89 " "
+        Local@89..94 "LOCAL"
+        Whitespace@94..95 " "
+        Check@95..100 "CHECK"
+        Whitespace@100..101 " "
+        Option@101..107 "OPTION"
+        Ascii59@107..108 ";"
     ,
     errors: [],
     stmts: [
@@ -211,7 +210,7 @@ Parse {
                     with_check_option: LocalCheckOption,
                 },
             ),
-            range: 0..108,
+            range: 0..107,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0044@3.snap b/crates/parser/tests/snapshots/statements/valid/0044@3.snap
index aed5d143..91f00a46 100644
--- a/crates/parser/tests/snapshots/statements/valid/0044@3.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0044@3.snap
@@ -1,52 +1,51 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE VIEW pg_comedies AS SELECT * FROM comedies WHERE classification = 'PG' WITH CASCADED CHECK OPTION;"
+description: "CREATE VIEW pg_comedies AS SELECT * FROM comedies WHERE classification = 'PG' WITH CASCADED CHECK OPTION;"
 ---
 Parse {
-    cst: SourceFile@0..106
-      Newline@0..1 "\n"
-      ViewStmt@1..106
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        View@8..12 "VIEW"
-        Whitespace@12..13 " "
-        RangeVar@13..24
-          Ident@13..24 "pg_comedies"
-        Whitespace@24..25 " "
-        As@25..27 "AS"
-        Whitespace@27..28 " "
-        SelectStmt@28..78
-          Select@28..34 "SELECT"
-          Whitespace@34..35 " "
-          ResTarget@35..36
-            ColumnRef@35..36
-              AStar@35..36
-                Ascii42@35..36 "*"
-          Whitespace@36..37 " "
-          From@37..41 "FROM"
-          Whitespace@41..42 " "
-          RangeVar@42..50
-            Ident@42..50 "comedies"
-          Whitespace@50..51 " "
-          Where@51..56 "WHERE"
-          Whitespace@56..57 " "
-          AExpr@57..78
-            ColumnRef@57..71
-              Ident@57..71 "classification"
-            Whitespace@71..72 " "
-            Ascii61@72..73 "="
-            Whitespace@73..74 " "
-            AConst@74..78
-              Sconst@74..78 "'PG'"
-        Whitespace@78..79 " "
-        With@79..83 "WITH"
-        Whitespace@83..84 " "
-        Cascaded@84..92 "CASCADED"
-        Whitespace@92..93 " "
-        Check@93..98 "CHECK"
-        Whitespace@98..99 " "
-        Option@99..105 "OPTION"
-        Ascii59@105..106 ";"
+    cst: SourceFile@0..105
+      ViewStmt@0..105
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        View@7..11 "VIEW"
+        Whitespace@11..12 " "
+        RangeVar@12..23
+          Ident@12..23 "pg_comedies"
+        Whitespace@23..24 " "
+        As@24..26 "AS"
+        Whitespace@26..27 " "
+        SelectStmt@27..77
+          Select@27..33 "SELECT"
+          Whitespace@33..34 " "
+          ResTarget@34..35
+            ColumnRef@34..35
+              AStar@34..35
+                Ascii42@34..35 "*"
+          Whitespace@35..36 " "
+          From@36..40 "FROM"
+          Whitespace@40..41 " "
+          RangeVar@41..49
+            Ident@41..49 "comedies"
+          Whitespace@49..50 " "
+          Where@50..55 "WHERE"
+          Whitespace@55..56 " "
+          AExpr@56..77
+            ColumnRef@56..70
+              Ident@56..70 "classification"
+            Whitespace@70..71 " "
+            Ascii61@71..72 "="
+            Whitespace@72..73 " "
+            AConst@73..77
+              Sconst@73..77 "'PG'"
+        Whitespace@77..78 " "
+        With@78..82 "WITH"
+        Whitespace@82..83 " "
+        Cascaded@83..91 "CASCADED"
+        Whitespace@91..92 " "
+        Check@92..97 "CHECK"
+        Whitespace@97..98 " "
+        Option@98..104 "OPTION"
+        Ascii59@104..105 ";"
     ,
     errors: [],
     stmts: [
@@ -211,7 +210,7 @@ Parse {
                     with_check_option: CascadedCheckOption,
                 },
             ),
-            range: 0..105,
+            range: 0..104,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0044@4.snap b/crates/parser/tests/snapshots/statements/valid/0044@4.snap
index 6aa9690e..c95512b2 100644
--- a/crates/parser/tests/snapshots/statements/valid/0044@4.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0044@4.snap
@@ -1,111 +1,110 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE VIEW comedies AS SELECT f.*, country_code_to_name(f.country_code) AS country, (SELECT avg(r.rating) FROM user_ratings r WHERE r.film_id = f.id) AS avg_rating FROM films f WHERE f.kind = 'Comedy';"
+description: "CREATE VIEW comedies AS SELECT f.*, country_code_to_name(f.country_code) AS country, (SELECT avg(r.rating) FROM user_ratings r WHERE r.film_id = f.id) AS avg_rating FROM films f WHERE f.kind = 'Comedy';"
 ---
 Parse {
-    cst: SourceFile@0..203
-      Newline@0..1 "\n"
-      ViewStmt@1..203
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        View@8..12 "VIEW"
-        Whitespace@12..13 " "
-        RangeVar@13..21
-          Ident@13..21 "comedies"
-        Whitespace@21..22 " "
-        As@22..24 "AS"
-        Whitespace@24..25 " "
-        SelectStmt@25..202
-          Select@25..31 "SELECT"
-          Whitespace@31..32 " "
-          ResTarget@32..35
-            ColumnRef@32..35
-              Ident@32..33 "f"
-              Ascii46@33..34 "."
-              AStar@34..35
-                Ascii42@34..35 "*"
-          Ascii44@35..36 ","
-          Whitespace@36..37 " "
-          ResTarget@37..84
-            FuncCall@37..72
-              Ident@37..57 "country_code_to_name"
-              Ascii40@57..58 "("
-              ColumnRef@58..72
-                Ident@58..59 "f"
-                Ascii46@59..60 "."
-                Ident@60..72 "country_code"
-            Ascii41@72..73 ")"
-            Whitespace@73..74 " "
-            As@74..76 "AS"
-            Whitespace@76..77 " "
-            Ident@77..84 "country"
-          Ascii44@84..85 ","
-          Whitespace@85..86 " "
-          ResTarget@86..165
-            SubLink@86..150
-              SelectStmt@86..150
-                Ascii40@86..87 "("
-                Select@87..93 "SELECT"
-                Whitespace@93..94 " "
-                ResTarget@94..106
-                  FuncCall@94..106
-                    Ident@94..97 "avg"
-                    Ascii40@97..98 "("
-                    ColumnRef@98..106
-                      Ident@98..99 "r"
-                      Ascii46@99..100 "."
-                      Ident@100..106 "rating"
-                Ascii41@106..107 ")"
-                Whitespace@107..108 " "
-                From@108..112 "FROM"
-                Whitespace@112..113 " "
-                RangeVar@113..127
-                  Ident@113..125 "user_ratings"
-                  Whitespace@125..126 " "
-                  Alias@126..127
-                    Ident@126..127 "r"
-                Whitespace@127..128 " "
-                Where@128..133 "WHERE"
-                Whitespace@133..134 " "
-                AExpr@134..150
-                  ColumnRef@134..143
-                    Ident@134..135 "r"
-                    Ascii46@135..136 "."
-                    Ident@136..143 "film_id"
-                  Whitespace@143..144 " "
-                  Ascii61@144..145 "="
-                  Whitespace@145..146 " "
-                  ColumnRef@146..150
-                    Ident@146..147 "f"
-                    Ascii46@147..148 "."
-                    Ident@148..150 "id"
-            Ascii41@150..151 ")"
-            Whitespace@151..152 " "
-            As@152..154 "AS"
-            Whitespace@154..155 " "
-            Ident@155..165 "avg_rating"
-          Whitespace@165..166 " "
-          From@166..170 "FROM"
-          Whitespace@170..171 " "
-          RangeVar@171..178
-            Ident@171..176 "films"
-            Whitespace@176..177 " "
-            Alias@177..178
-              Ident@177..178 "f"
-          Whitespace@178..179 " "
-          Where@179..184 "WHERE"
-          Whitespace@184..185 " "
-          AExpr@185..202
-            ColumnRef@185..191
-              Ident@185..186 "f"
-              Ascii46@186..187 "."
-              Ident@187..191 "kind"
-            Whitespace@191..192 " "
-            Ascii61@192..193 "="
-            Whitespace@193..194 " "
-            AConst@194..202
-              Sconst@194..202 "'Comedy'"
-        Ascii59@202..203 ";"
+    cst: SourceFile@0..202
+      ViewStmt@0..202
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        View@7..11 "VIEW"
+        Whitespace@11..12 " "
+        RangeVar@12..20
+          Ident@12..20 "comedies"
+        Whitespace@20..21 " "
+        As@21..23 "AS"
+        Whitespace@23..24 " "
+        SelectStmt@24..201
+          Select@24..30 "SELECT"
+          Whitespace@30..31 " "
+          ResTarget@31..34
+            ColumnRef@31..34
+              Ident@31..32 "f"
+              Ascii46@32..33 "."
+              AStar@33..34
+                Ascii42@33..34 "*"
+          Ascii44@34..35 ","
+          Whitespace@35..36 " "
+          ResTarget@36..83
+            FuncCall@36..71
+              Ident@36..56 "country_code_to_name"
+              Ascii40@56..57 "("
+              ColumnRef@57..71
+                Ident@57..58 "f"
+                Ascii46@58..59 "."
+                Ident@59..71 "country_code"
+            Ascii41@71..72 ")"
+            Whitespace@72..73 " "
+            As@73..75 "AS"
+            Whitespace@75..76 " "
+            Ident@76..83 "country"
+          Ascii44@83..84 ","
+          Whitespace@84..85 " "
+          ResTarget@85..164
+            SubLink@85..149
+              SelectStmt@85..149
+                Ascii40@85..86 "("
+                Select@86..92 "SELECT"
+                Whitespace@92..93 " "
+                ResTarget@93..105
+                  FuncCall@93..105
+                    Ident@93..96 "avg"
+                    Ascii40@96..97 "("
+                    ColumnRef@97..105
+                      Ident@97..98 "r"
+                      Ascii46@98..99 "."
+                      Ident@99..105 "rating"
+                Ascii41@105..106 ")"
+                Whitespace@106..107 " "
+                From@107..111 "FROM"
+                Whitespace@111..112 " "
+                RangeVar@112..126
+                  Ident@112..124 "user_ratings"
+                  Whitespace@124..125 " "
+                  Alias@125..126
+                    Ident@125..126 "r"
+                Whitespace@126..127 " "
+                Where@127..132 "WHERE"
+                Whitespace@132..133 " "
+                AExpr@133..149
+                  ColumnRef@133..142
+                    Ident@133..134 "r"
+                    Ascii46@134..135 "."
+                    Ident@135..142 "film_id"
+                  Whitespace@142..143 " "
+                  Ascii61@143..144 "="
+                  Whitespace@144..145 " "
+                  ColumnRef@145..149
+                    Ident@145..146 "f"
+                    Ascii46@146..147 "."
+                    Ident@147..149 "id"
+            Ascii41@149..150 ")"
+            Whitespace@150..151 " "
+            As@151..153 "AS"
+            Whitespace@153..154 " "
+            Ident@154..164 "avg_rating"
+          Whitespace@164..165 " "
+          From@165..169 "FROM"
+          Whitespace@169..170 " "
+          RangeVar@170..177
+            Ident@170..175 "films"
+            Whitespace@175..176 " "
+            Alias@176..177
+              Ident@176..177 "f"
+          Whitespace@177..178 " "
+          Where@178..183 "WHERE"
+          Whitespace@183..184 " "
+          AExpr@184..201
+            ColumnRef@184..190
+              Ident@184..185 "f"
+              Ascii46@185..186 "."
+              Ident@186..190 "kind"
+            Whitespace@190..191 " "
+            Ascii61@191..192 "="
+            Whitespace@192..193 " "
+            AConst@193..201
+              Sconst@193..201 "'Comedy'"
+        Ascii59@201..202 ";"
     ,
     errors: [],
     stmts: [
@@ -600,7 +599,7 @@ Parse {
                     with_check_option: NoCheckOption,
                 },
             ),
-            range: 0..202,
+            range: 0..201,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0044@5.snap b/crates/parser/tests/snapshots/statements/valid/0044@5.snap
index c69afab3..e5bc0e53 100644
--- a/crates/parser/tests/snapshots/statements/valid/0044@5.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0044@5.snap
@@ -1,71 +1,70 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE RECURSIVE VIEW public.nums_1_100 (n) AS VALUES (1) UNION ALL SELECT n+1 FROM nums_1_100 WHERE n < 100;"
+description: CREATE RECURSIVE VIEW public.nums_1_100 (n) AS VALUES (1) UNION ALL SELECT n+1 FROM nums_1_100 WHERE n < 100;
 ---
 Parse {
-    cst: SourceFile@0..109
-      Newline@0..1 "\n"
-      Create@1..7 "CREATE"
-      Whitespace@7..8 " "
-      Recursive@8..17 "RECURSIVE"
-      Whitespace@17..18 " "
-      View@18..22 "VIEW"
-      Whitespace@22..23 " "
-      Ident@23..29 "public"
-      Ascii46@29..30 "."
-      Ident@30..40 "nums_1_100"
-      Whitespace@40..41 " "
-      Ascii40@41..42 "("
-      Ident@42..43 "n"
-      Ascii41@43..44 ")"
-      Whitespace@44..45 " "
-      As@45..47 "AS"
-      Whitespace@47..48 " "
-      Values@48..54 "VALUES"
-      Whitespace@54..55 " "
-      Ascii40@55..56 "("
-      Iconst@56..57 "1"
-      Ascii41@57..58 ")"
-      Whitespace@58..59 " "
-      Union@59..64 "UNION"
-      Whitespace@64..65 " "
-      All@65..68 "ALL"
-      SelectStmt@68..109
-        Select@68..74 "SELECT"
-        Whitespace@74..75 " "
-        ResTarget@75..78
-          AExpr@75..78
-            ColumnRef@75..76
-              Ident@75..76 "n"
-            Ascii43@76..77 "+"
-            AConst@77..78
-              Iconst@77..78 "1"
-        Whitespace@78..79 " "
-        From@79..83 "FROM"
-        Whitespace@83..84 " "
-        RangeVar@84..94
-          Ident@84..94 "nums_1_100"
-        Whitespace@94..95 " "
-        Where@95..100 "WHERE"
-        Whitespace@100..101 " "
-        AExpr@101..108
-          ColumnRef@101..102
-            Ident@101..102 "n"
-          Whitespace@102..103 " "
-          Ascii60@103..104 "<"
-          Whitespace@104..105 " "
-          AConst@105..108
-            Iconst@105..108 "100"
-        Ascii59@108..109 ";"
+    cst: SourceFile@0..108
+      Create@0..6 "CREATE"
+      Whitespace@6..7 " "
+      Recursive@7..16 "RECURSIVE"
+      Whitespace@16..17 " "
+      View@17..21 "VIEW"
+      Whitespace@21..22 " "
+      Ident@22..28 "public"
+      Ascii46@28..29 "."
+      Ident@29..39 "nums_1_100"
+      Whitespace@39..40 " "
+      Ascii40@40..41 "("
+      Ident@41..42 "n"
+      Ascii41@42..43 ")"
+      Whitespace@43..44 " "
+      As@44..46 "AS"
+      Whitespace@46..47 " "
+      Values@47..53 "VALUES"
+      Whitespace@53..54 " "
+      Ascii40@54..55 "("
+      Iconst@55..56 "1"
+      Ascii41@56..57 ")"
+      Whitespace@57..58 " "
+      Union@58..63 "UNION"
+      Whitespace@63..64 " "
+      All@64..67 "ALL"
+      SelectStmt@67..108
+        Select@67..73 "SELECT"
+        Whitespace@73..74 " "
+        ResTarget@74..77
+          AExpr@74..77
+            ColumnRef@74..75
+              Ident@74..75 "n"
+            Ascii43@75..76 "+"
+            AConst@76..77
+              Iconst@76..77 "1"
+        Whitespace@77..78 " "
+        From@78..82 "FROM"
+        Whitespace@82..83 " "
+        RangeVar@83..93
+          Ident@83..93 "nums_1_100"
+        Whitespace@93..94 " "
+        Where@94..99 "WHERE"
+        Whitespace@99..100 " "
+        AExpr@100..107
+          ColumnRef@100..101
+            Ident@100..101 "n"
+          Whitespace@101..102 " "
+          Ascii60@102..103 "<"
+          Whitespace@103..104 " "
+          AConst@104..107
+            Iconst@104..107 "100"
+        Ascii59@107..108 ";"
     ,
     errors: [
         SyntaxError(
             "Expected Ascii59, found Whitespace",
-            68..68,
+            67..67,
         ),
         SyntaxError(
             "Invalid statement: syntax error at end of input",
-            1..26,
+            0..25,
         ),
     ],
     stmts: [
@@ -249,7 +248,7 @@ Parse {
                     rarg: None,
                 },
             ),
-            range: 68..109,
+            range: 67..108,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0046@2.snap b/crates/parser/tests/snapshots/statements/valid/0046@2.snap
index b17697e1..61296cee 100644
--- a/crates/parser/tests/snapshots/statements/valid/0046@2.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0046@2.snap
@@ -1,29 +1,28 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE TYPE type1 AS (attr1 int4, attr2 bool);"
+description: "CREATE TYPE type1 AS (attr1 int4, attr2 bool);"
 ---
 Parse {
-    cst: SourceFile@0..47
-      Newline@0..1 "\n"
-      Create@1..7 "CREATE"
-      Whitespace@7..8 " "
-      TypeP@8..12 "TYPE"
-      Whitespace@12..13 " "
-      Ident@13..18 "type1"
-      Whitespace@18..19 " "
-      As@19..21 "AS"
-      Whitespace@21..22 " "
-      Ascii40@22..23 "("
-      Ident@23..28 "attr1"
-      Whitespace@28..29 " "
-      Ident@29..33 "int4"
-      Ascii44@33..34 ","
-      Whitespace@34..35 " "
-      Ident@35..40 "attr2"
-      Whitespace@40..41 " "
-      Ident@41..45 "bool"
-      Ascii41@45..46 ")"
-      Ascii59@46..47 ";"
+    cst: SourceFile@0..46
+      Create@0..6 "CREATE"
+      Whitespace@6..7 " "
+      TypeP@7..11 "TYPE"
+      Whitespace@11..12 " "
+      Ident@12..17 "type1"
+      Whitespace@17..18 " "
+      As@18..20 "AS"
+      Whitespace@20..21 " "
+      Ascii40@21..22 "("
+      Ident@22..27 "attr1"
+      Whitespace@27..28 " "
+      Ident@28..32 "int4"
+      Ascii44@32..33 ","
+      Whitespace@33..34 " "
+      Ident@34..39 "attr2"
+      Whitespace@39..40 " "
+      Ident@40..44 "bool"
+      Ascii41@44..45 ")"
+      Ascii59@45..46 ";"
     ,
     errors: [],
     stmts: [],
diff --git a/crates/parser/tests/snapshots/statements/valid/0046@3.snap b/crates/parser/tests/snapshots/statements/valid/0046@3.snap
index 749874f9..28bd3dc9 100644
--- a/crates/parser/tests/snapshots/statements/valid/0046@3.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0046@3.snap
@@ -1,33 +1,32 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE TYPE type1 AS (attr1 int4 COLLATE collation1, attr2 bool);"
+description: "CREATE TYPE type1 AS (attr1 int4 COLLATE collation1, attr2 bool);"
 ---
 Parse {
-    cst: SourceFile@0..66
-      Newline@0..1 "\n"
-      Create@1..7 "CREATE"
-      Whitespace@7..8 " "
-      TypeP@8..12 "TYPE"
-      Whitespace@12..13 " "
-      Ident@13..18 "type1"
-      Whitespace@18..19 " "
-      As@19..21 "AS"
-      Whitespace@21..22 " "
-      Ascii40@22..23 "("
-      Ident@23..28 "attr1"
-      Whitespace@28..29 " "
-      Ident@29..33 "int4"
-      Whitespace@33..34 " "
-      Collate@34..41 "COLLATE"
-      Whitespace@41..42 " "
-      Ident@42..52 "collation1"
-      Ascii44@52..53 ","
-      Whitespace@53..54 " "
-      Ident@54..59 "attr2"
-      Whitespace@59..60 " "
-      Ident@60..64 "bool"
-      Ascii41@64..65 ")"
-      Ascii59@65..66 ";"
+    cst: SourceFile@0..65
+      Create@0..6 "CREATE"
+      Whitespace@6..7 " "
+      TypeP@7..11 "TYPE"
+      Whitespace@11..12 " "
+      Ident@12..17 "type1"
+      Whitespace@17..18 " "
+      As@18..20 "AS"
+      Whitespace@20..21 " "
+      Ascii40@21..22 "("
+      Ident@22..27 "attr1"
+      Whitespace@27..28 " "
+      Ident@28..32 "int4"
+      Whitespace@32..33 " "
+      Collate@33..40 "COLLATE"
+      Whitespace@40..41 " "
+      Ident@41..51 "collation1"
+      Ascii44@51..52 ","
+      Whitespace@52..53 " "
+      Ident@53..58 "attr2"
+      Whitespace@58..59 " "
+      Ident@59..63 "bool"
+      Ascii41@63..64 ")"
+      Ascii59@64..65 ";"
     ,
     errors: [],
     stmts: [],
diff --git a/crates/parser/tests/snapshots/statements/valid/0046@4.snap b/crates/parser/tests/snapshots/statements/valid/0046@4.snap
index b1445b38..699bf596 100644
--- a/crates/parser/tests/snapshots/statements/valid/0046@4.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0046@4.snap
@@ -1,31 +1,30 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE TYPE type1 AS ENUM ('value1', 'value2', 'value3');"
+description: "CREATE TYPE type1 AS ENUM ('value1', 'value2', 'value3');"
 ---
 Parse {
-    cst: SourceFile@0..58
-      Newline@0..1 "\n"
-      CreateEnumStmt@1..58
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        TypeP@8..12 "TYPE"
-        Whitespace@12..13 " "
-        Ident@13..18 "type1"
-        Whitespace@18..19 " "
-        As@19..21 "AS"
-        Whitespace@21..22 " "
-        EnumP@22..26 "ENUM"
-        Whitespace@26..27 " "
-        Ascii40@27..28 "("
-        Sconst@28..36 "'value1'"
-        Ascii44@36..37 ","
-        Whitespace@37..38 " "
-        Sconst@38..46 "'value2'"
-        Ascii44@46..47 ","
-        Whitespace@47..48 " "
-        Sconst@48..56 "'value3'"
-        Ascii41@56..57 ")"
-        Ascii59@57..58 ";"
+    cst: SourceFile@0..57
+      CreateEnumStmt@0..57
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        TypeP@7..11 "TYPE"
+        Whitespace@11..12 " "
+        Ident@12..17 "type1"
+        Whitespace@17..18 " "
+        As@18..20 "AS"
+        Whitespace@20..21 " "
+        EnumP@21..25 "ENUM"
+        Whitespace@25..26 " "
+        Ascii40@26..27 "("
+        Sconst@27..35 "'value1'"
+        Ascii44@35..36 ","
+        Whitespace@36..37 " "
+        Sconst@37..45 "'value2'"
+        Ascii44@45..46 ","
+        Whitespace@46..47 " "
+        Sconst@47..55 "'value3'"
+        Ascii41@55..56 ")"
+        Ascii59@56..57 ";"
     ,
     errors: [],
     stmts: [
@@ -74,7 +73,7 @@ Parse {
                     ],
                 },
             ),
-            range: 0..57,
+            range: 0..56,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0046@5.snap b/crates/parser/tests/snapshots/statements/valid/0046@5.snap
index 58ccecf0..37d96c6e 100644
--- a/crates/parser/tests/snapshots/statements/valid/0046@5.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0046@5.snap
@@ -1,31 +1,30 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE TYPE type1 AS RANGE (subtype = int4);"
+description: CREATE TYPE type1 AS RANGE (subtype = int4);
 ---
 Parse {
-    cst: SourceFile@0..45
-      Newline@0..1 "\n"
-      CreateRangeStmt@1..45
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        TypeP@8..12 "TYPE"
-        Whitespace@12..13 " "
-        Ident@13..18 "type1"
-        Whitespace@18..19 " "
-        As@19..21 "AS"
-        Whitespace@21..22 " "
-        Range@22..27 "RANGE"
-        Whitespace@27..28 " "
-        Ascii40@28..29 "("
-        DefElem@29..43
-          Ident@29..36 "subtype"
-          Whitespace@36..37 " "
-          Ascii61@37..38 "="
-          Whitespace@38..39 " "
-          TypeName@39..43
-            Ident@39..43 "int4"
-        Ascii41@43..44 ")"
-        Ascii59@44..45 ";"
+    cst: SourceFile@0..44
+      CreateRangeStmt@0..44
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        TypeP@7..11 "TYPE"
+        Whitespace@11..12 " "
+        Ident@12..17 "type1"
+        Whitespace@17..18 " "
+        As@18..20 "AS"
+        Whitespace@20..21 " "
+        Range@21..26 "RANGE"
+        Whitespace@26..27 " "
+        Ascii40@27..28 "("
+        DefElem@28..42
+          Ident@28..35 "subtype"
+          Whitespace@35..36 " "
+          Ascii61@36..37 "="
+          Whitespace@37..38 " "
+          TypeName@38..42
+            Ident@38..42 "int4"
+        Ascii41@42..43 ")"
+        Ascii59@43..44 ";"
     ,
     errors: [],
     stmts: [
@@ -87,7 +86,7 @@ Parse {
                     ],
                 },
             ),
-            range: 0..44,
+            range: 0..43,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0046@6.snap b/crates/parser/tests/snapshots/statements/valid/0046@6.snap
index 8895f034..45852c11 100644
--- a/crates/parser/tests/snapshots/statements/valid/0046@6.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0046@6.snap
@@ -1,44 +1,43 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE TYPE type1 AS RANGE (subtype = int4, receive = receive_func, passedbyvalue);"
+description: "CREATE TYPE type1 AS RANGE (subtype = int4, receive = receive_func, passedbyvalue);"
 ---
 Parse {
-    cst: SourceFile@0..84
-      Newline@0..1 "\n"
-      CreateRangeStmt@1..84
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        TypeP@8..12 "TYPE"
-        Whitespace@12..13 " "
-        Ident@13..18 "type1"
-        Whitespace@18..19 " "
-        As@19..21 "AS"
-        Whitespace@21..22 " "
-        Range@22..27 "RANGE"
-        Whitespace@27..28 " "
-        Ascii40@28..29 "("
-        DefElem@29..43
-          Ident@29..36 "subtype"
-          Whitespace@36..37 " "
-          Ascii61@37..38 "="
-          Whitespace@38..39 " "
-          TypeName@39..43
-            Ident@39..43 "int4"
-        Ascii44@43..44 ","
-        Whitespace@44..45 " "
-        DefElem@45..67
-          Ident@45..52 "receive"
-          Whitespace@52..53 " "
-          Ascii61@53..54 "="
-          Whitespace@54..55 " "
-          TypeName@55..67
-            Ident@55..67 "receive_func"
-        Ascii44@67..68 ","
-        Whitespace@68..69 " "
-        DefElem@69..82
-          Ident@69..82 "passedbyvalue"
-        Ascii41@82..83 ")"
-        Ascii59@83..84 ";"
+    cst: SourceFile@0..83
+      CreateRangeStmt@0..83
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        TypeP@7..11 "TYPE"
+        Whitespace@11..12 " "
+        Ident@12..17 "type1"
+        Whitespace@17..18 " "
+        As@18..20 "AS"
+        Whitespace@20..21 " "
+        Range@21..26 "RANGE"
+        Whitespace@26..27 " "
+        Ascii40@27..28 "("
+        DefElem@28..42
+          Ident@28..35 "subtype"
+          Whitespace@35..36 " "
+          Ascii61@36..37 "="
+          Whitespace@37..38 " "
+          TypeName@38..42
+            Ident@38..42 "int4"
+        Ascii44@42..43 ","
+        Whitespace@43..44 " "
+        DefElem@44..66
+          Ident@44..51 "receive"
+          Whitespace@51..52 " "
+          Ascii61@52..53 "="
+          Whitespace@53..54 " "
+          TypeName@54..66
+            Ident@54..66 "receive_func"
+        Ascii44@66..67 ","
+        Whitespace@67..68 " "
+        DefElem@68..81
+          Ident@68..81 "passedbyvalue"
+        Ascii41@81..82 ")"
+        Ascii59@82..83 ";"
     ,
     errors: [],
     stmts: [
@@ -153,7 +152,7 @@ Parse {
                     ],
                 },
             ),
-            range: 0..83,
+            range: 0..82,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0046@7.snap b/crates/parser/tests/snapshots/statements/valid/0046@7.snap
index d809228f..f4520891 100644
--- a/crates/parser/tests/snapshots/statements/valid/0046@7.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0046@7.snap
@@ -1,31 +1,30 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE TYPE type1 (input = input1, output = output1);"
+description: "CREATE TYPE type1 (input = input1, output = output1);"
 ---
 Parse {
-    cst: SourceFile@0..54
-      Newline@0..1 "\n"
-      Create@1..7 "CREATE"
-      Whitespace@7..8 " "
-      TypeP@8..12 "TYPE"
-      Whitespace@12..13 " "
-      Ident@13..18 "type1"
-      Whitespace@18..19 " "
-      Ascii40@19..20 "("
-      InputP@20..25 "input"
-      Whitespace@25..26 " "
-      Ascii61@26..27 "="
-      Whitespace@27..28 " "
-      Ident@28..34 "input1"
-      Ascii44@34..35 ","
-      Whitespace@35..36 " "
-      Ident@36..42 "output"
-      Whitespace@42..43 " "
-      Ascii61@43..44 "="
-      Whitespace@44..45 " "
-      Ident@45..52 "output1"
-      Ascii41@52..53 ")"
-      Ascii59@53..54 ";"
+    cst: SourceFile@0..53
+      Create@0..6 "CREATE"
+      Whitespace@6..7 " "
+      TypeP@7..11 "TYPE"
+      Whitespace@11..12 " "
+      Ident@12..17 "type1"
+      Whitespace@17..18 " "
+      Ascii40@18..19 "("
+      InputP@19..24 "input"
+      Whitespace@24..25 " "
+      Ascii61@25..26 "="
+      Whitespace@26..27 " "
+      Ident@27..33 "input1"
+      Ascii44@33..34 ","
+      Whitespace@34..35 " "
+      Ident@35..41 "output"
+      Whitespace@41..42 " "
+      Ascii61@42..43 "="
+      Whitespace@43..44 " "
+      Ident@44..51 "output1"
+      Ascii41@51..52 ")"
+      Ascii59@52..53 ";"
     ,
     errors: [],
     stmts: [],
diff --git a/crates/parser/tests/snapshots/statements/valid/0046@8.snap b/crates/parser/tests/snapshots/statements/valid/0046@8.snap
index ab04e90d..c7d0875f 100644
--- a/crates/parser/tests/snapshots/statements/valid/0046@8.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0046@8.snap
@@ -1,34 +1,33 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE TYPE type1 (input = input1, output = output1, passedbyvalue);"
+description: "CREATE TYPE type1 (input = input1, output = output1, passedbyvalue);"
 ---
 Parse {
-    cst: SourceFile@0..69
-      Newline@0..1 "\n"
-      Create@1..7 "CREATE"
-      Whitespace@7..8 " "
-      TypeP@8..12 "TYPE"
-      Whitespace@12..13 " "
-      Ident@13..18 "type1"
-      Whitespace@18..19 " "
-      Ascii40@19..20 "("
-      InputP@20..25 "input"
-      Whitespace@25..26 " "
-      Ascii61@26..27 "="
-      Whitespace@27..28 " "
-      Ident@28..34 "input1"
-      Ascii44@34..35 ","
-      Whitespace@35..36 " "
-      Ident@36..42 "output"
-      Whitespace@42..43 " "
-      Ascii61@43..44 "="
-      Whitespace@44..45 " "
-      Ident@45..52 "output1"
-      Ascii44@52..53 ","
-      Whitespace@53..54 " "
-      Ident@54..67 "passedbyvalue"
-      Ascii41@67..68 ")"
-      Ascii59@68..69 ";"
+    cst: SourceFile@0..68
+      Create@0..6 "CREATE"
+      Whitespace@6..7 " "
+      TypeP@7..11 "TYPE"
+      Whitespace@11..12 " "
+      Ident@12..17 "type1"
+      Whitespace@17..18 " "
+      Ascii40@18..19 "("
+      InputP@19..24 "input"
+      Whitespace@24..25 " "
+      Ascii61@25..26 "="
+      Whitespace@26..27 " "
+      Ident@27..33 "input1"
+      Ascii44@33..34 ","
+      Whitespace@34..35 " "
+      Ident@35..41 "output"
+      Whitespace@41..42 " "
+      Ascii61@42..43 "="
+      Whitespace@43..44 " "
+      Ident@44..51 "output1"
+      Ascii44@51..52 ","
+      Whitespace@52..53 " "
+      Ident@53..66 "passedbyvalue"
+      Ascii41@66..67 ")"
+      Ascii59@67..68 ";"
     ,
     errors: [],
     stmts: [],
diff --git a/crates/parser/tests/snapshots/statements/valid/0047@2.snap b/crates/parser/tests/snapshots/statements/valid/0047@2.snap
index 047cd49f..bad286db 100644
--- a/crates/parser/tests/snapshots/statements/valid/0047@2.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0047@2.snap
@@ -1,22 +1,21 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE DATABASE x ENCODING \"SQL_ASCII\";"
+description: "CREATE DATABASE x ENCODING \"SQL_ASCII\";"
 ---
 Parse {
-    cst: SourceFile@0..40
-      Newline@0..1 "\n"
-      CreatedbStmt@1..40
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Database@8..16 "DATABASE"
-        Whitespace@16..17 " "
-        Ident@17..18 "x"
-        Whitespace@18..19 " "
-        DefElem@19..39
-          Encoding@19..27 "ENCODING"
-          Whitespace@27..28 " "
-          Ident@28..39 "\"SQL_ASCII\""
-        Ascii59@39..40 ";"
+    cst: SourceFile@0..39
+      CreatedbStmt@0..39
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Database@7..15 "DATABASE"
+        Whitespace@15..16 " "
+        Ident@16..17 "x"
+        Whitespace@17..18 " "
+        DefElem@18..38
+          Encoding@18..26 "ENCODING"
+          Whitespace@26..27 " "
+          Ident@27..38 "\"SQL_ASCII\""
+        Ascii59@38..39 ";"
     ,
     errors: [],
     stmts: [
@@ -51,7 +50,7 @@ Parse {
                     ],
                 },
             ),
-            range: 0..39,
+            range: 0..38,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0047@3.snap b/crates/parser/tests/snapshots/statements/valid/0047@3.snap
index 65df202c..c219a202 100644
--- a/crates/parser/tests/snapshots/statements/valid/0047@3.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0047@3.snap
@@ -1,22 +1,21 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE DATABASE x LC_COLLATE \"en_US.UTF-8\";"
+description: "CREATE DATABASE x LC_COLLATE \"en_US.UTF-8\";"
 ---
 Parse {
-    cst: SourceFile@0..44
-      Newline@0..1 "\n"
-      CreatedbStmt@1..44
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Database@8..16 "DATABASE"
-        Whitespace@16..17 " "
-        Ident@17..18 "x"
-        Whitespace@18..19 " "
-        DefElem@19..43
-          Ident@19..29 "LC_COLLATE"
-          Whitespace@29..30 " "
-          Ident@30..43 "\"en_US.UTF-8\""
-        Ascii59@43..44 ";"
+    cst: SourceFile@0..43
+      CreatedbStmt@0..43
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Database@7..15 "DATABASE"
+        Whitespace@15..16 " "
+        Ident@16..17 "x"
+        Whitespace@17..18 " "
+        DefElem@18..42
+          Ident@18..28 "LC_COLLATE"
+          Whitespace@28..29 " "
+          Ident@29..42 "\"en_US.UTF-8\""
+        Ascii59@42..43 ";"
     ,
     errors: [],
     stmts: [
@@ -51,7 +50,7 @@ Parse {
                     ],
                 },
             ),
-            range: 0..43,
+            range: 0..42,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0047@4.snap b/crates/parser/tests/snapshots/statements/valid/0047@4.snap
index a27baac8..b9b2a0bc 100644
--- a/crates/parser/tests/snapshots/statements/valid/0047@4.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0047@4.snap
@@ -1,22 +1,21 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE DATABASE x LOCATION DEFAULT;"
+description: CREATE DATABASE x LOCATION DEFAULT;
 ---
 Parse {
-    cst: SourceFile@0..36
-      Newline@0..1 "\n"
-      CreatedbStmt@1..36
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Database@8..16 "DATABASE"
-        Whitespace@16..17 " "
-        Ident@17..18 "x"
-        Whitespace@18..19 " "
-        DefElem@19..35
-          Location@19..27 "LOCATION"
-          Whitespace@27..28 " "
-          Default@28..35 "DEFAULT"
-        Ascii59@35..36 ";"
+    cst: SourceFile@0..35
+      CreatedbStmt@0..35
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Database@7..15 "DATABASE"
+        Whitespace@15..16 " "
+        Ident@16..17 "x"
+        Whitespace@17..18 " "
+        DefElem@18..34
+          Location@18..26 "LOCATION"
+          Whitespace@26..27 " "
+          Default@27..34 "DEFAULT"
+        Ascii59@34..35 ";"
     ,
     errors: [],
     stmts: [
@@ -41,7 +40,7 @@ Parse {
                     ],
                 },
             ),
-            range: 0..35,
+            range: 0..34,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0047@5.snap b/crates/parser/tests/snapshots/statements/valid/0047@5.snap
index 6e3c7564..708ceca4 100644
--- a/crates/parser/tests/snapshots/statements/valid/0047@5.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0047@5.snap
@@ -1,22 +1,21 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE DATABASE x TABLESPACE abc;"
+description: CREATE DATABASE x TABLESPACE abc;
 ---
 Parse {
-    cst: SourceFile@0..34
-      Newline@0..1 "\n"
-      CreatedbStmt@1..34
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Database@8..16 "DATABASE"
-        Whitespace@16..17 " "
-        Ident@17..18 "x"
-        Whitespace@18..19 " "
-        DefElem@19..33
-          Tablespace@19..29 "TABLESPACE"
-          Whitespace@29..30 " "
-          Ident@30..33 "abc"
-        Ascii59@33..34 ";"
+    cst: SourceFile@0..33
+      CreatedbStmt@0..33
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Database@7..15 "DATABASE"
+        Whitespace@15..16 " "
+        Ident@16..17 "x"
+        Whitespace@17..18 " "
+        DefElem@18..32
+          Tablespace@18..28 "TABLESPACE"
+          Whitespace@28..29 " "
+          Ident@29..32 "abc"
+        Ascii59@32..33 ";"
     ,
     errors: [],
     stmts: [
@@ -51,7 +50,7 @@ Parse {
                     ],
                 },
             ),
-            range: 0..33,
+            range: 0..32,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0047@6.snap b/crates/parser/tests/snapshots/statements/valid/0047@6.snap
index 74c0dce1..3e02fff1 100644
--- a/crates/parser/tests/snapshots/statements/valid/0047@6.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0047@6.snap
@@ -1,22 +1,21 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE DATABASE x TEMPLATE TRUE;"
+description: CREATE DATABASE x TEMPLATE TRUE;
 ---
 Parse {
-    cst: SourceFile@0..33
-      Newline@0..1 "\n"
-      CreatedbStmt@1..33
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Database@8..16 "DATABASE"
-        Whitespace@16..17 " "
-        Ident@17..18 "x"
-        Whitespace@18..19 " "
-        DefElem@19..32
-          Template@19..27 "TEMPLATE"
-          Whitespace@27..28 " "
-          TrueP@28..32 "TRUE"
-        Ascii59@32..33 ";"
+    cst: SourceFile@0..32
+      CreatedbStmt@0..32
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Database@7..15 "DATABASE"
+        Whitespace@15..16 " "
+        Ident@16..17 "x"
+        Whitespace@17..18 " "
+        DefElem@18..31
+          Template@18..26 "TEMPLATE"
+          Whitespace@26..27 " "
+          TrueP@27..31 "TRUE"
+        Ascii59@31..32 ";"
     ,
     errors: [],
     stmts: [
@@ -51,7 +50,7 @@ Parse {
                     ],
                 },
             ),
-            range: 0..32,
+            range: 0..31,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0048@2.snap b/crates/parser/tests/snapshots/statements/valid/0048@2.snap
index 0dfc3881..41863927 100644
--- a/crates/parser/tests/snapshots/statements/valid/0048@2.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0048@2.snap
@@ -1,41 +1,40 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE TABLESPACE x OWNER a LOCATION 'b' WITH (random_page_cost=42, seq_page_cost=3);"
+description: "CREATE TABLESPACE x OWNER a LOCATION 'b' WITH (random_page_cost=42, seq_page_cost=3);"
 ---
 Parse {
-    cst: SourceFile@0..86
-      Newline@0..1 "\n"
-      CreateTableSpaceStmt@1..86
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Tablespace@8..18 "TABLESPACE"
-        Whitespace@18..19 " "
-        Ident@19..20 "x"
-        Whitespace@20..21 " "
-        Owner@21..26 "OWNER"
-        Whitespace@26..27 " "
-        RoleSpec@27..28
-          Ident@27..28 "a"
-        Whitespace@28..29 " "
-        Location@29..37 "LOCATION"
-        Whitespace@37..38 " "
-        Sconst@38..41 "'b'"
-        Whitespace@41..42 " "
-        With@42..46 "WITH"
-        Whitespace@46..47 " "
-        Ascii40@47..48 "("
-        DefElem@48..67
-          Ident@48..64 "random_page_cost"
-          Ascii61@64..65 "="
-          Iconst@65..67 "42"
-        Ascii44@67..68 ","
-        Whitespace@68..69 " "
-        DefElem@69..84
-          Ident@69..82 "seq_page_cost"
-          Ascii61@82..83 "="
-          Iconst@83..84 "3"
-        Ascii41@84..85 ")"
-        Ascii59@85..86 ";"
+    cst: SourceFile@0..85
+      CreateTableSpaceStmt@0..85
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Tablespace@7..17 "TABLESPACE"
+        Whitespace@17..18 " "
+        Ident@18..19 "x"
+        Whitespace@19..20 " "
+        Owner@20..25 "OWNER"
+        Whitespace@25..26 " "
+        RoleSpec@26..27
+          Ident@26..27 "a"
+        Whitespace@27..28 " "
+        Location@28..36 "LOCATION"
+        Whitespace@36..37 " "
+        Sconst@37..40 "'b'"
+        Whitespace@40..41 " "
+        With@41..45 "WITH"
+        Whitespace@45..46 " "
+        Ascii40@46..47 "("
+        DefElem@47..66
+          Ident@47..63 "random_page_cost"
+          Ascii61@63..64 "="
+          Iconst@64..66 "42"
+        Ascii44@66..67 ","
+        Whitespace@67..68 " "
+        DefElem@68..83
+          Ident@68..81 "seq_page_cost"
+          Ascii61@81..82 "="
+          Iconst@82..83 "3"
+        Ascii41@83..84 ")"
+        Ascii59@84..85 ";"
     ,
     errors: [],
     stmts: [
@@ -101,7 +100,7 @@ Parse {
                     ],
                 },
             ),
-            range: 0..85,
+            range: 0..84,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0051@10.snap b/crates/parser/tests/snapshots/statements/valid/0051@10.snap
index 2b4a41ff..f4348651 100644
--- a/crates/parser/tests/snapshots/statements/valid/0051@10.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0051@10.snap
@@ -1,39 +1,38 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE INDEX pointloc ON points USING gist (box(location,location));"
+description: "CREATE INDEX pointloc ON points USING gist (box(location,location));"
 ---
 Parse {
-    cst: SourceFile@0..69
-      Newline@0..1 "\n"
-      IndexStmt@1..69
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Index@8..13 "INDEX"
-        Whitespace@13..14 " "
-        Ident@14..22 "pointloc"
-        Whitespace@22..23 " "
-        On@23..25 "ON"
-        Whitespace@25..26 " "
-        RangeVar@26..32
-          Ident@26..32 "points"
-        Whitespace@32..33 " "
-        Using@33..38 "USING"
-        Whitespace@38..39 " "
-        Ident@39..43 "gist"
-        Whitespace@43..44 " "
-        Ascii40@44..45 "("
-        IndexElem@45..66
-          FuncCall@45..66
-            Ident@45..48 "box"
-            Ascii40@48..49 "("
-            ColumnRef@49..57
-              Location@49..57 "location"
-            Ascii44@57..58 ","
-            ColumnRef@58..66
-              Location@58..66 "location"
+    cst: SourceFile@0..68
+      IndexStmt@0..68
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Index@7..12 "INDEX"
+        Whitespace@12..13 " "
+        Ident@13..21 "pointloc"
+        Whitespace@21..22 " "
+        On@22..24 "ON"
+        Whitespace@24..25 " "
+        RangeVar@25..31
+          Ident@25..31 "points"
+        Whitespace@31..32 " "
+        Using@32..37 "USING"
+        Whitespace@37..38 " "
+        Ident@38..42 "gist"
+        Whitespace@42..43 " "
+        Ascii40@43..44 "("
+        IndexElem@44..65
+          FuncCall@44..65
+            Ident@44..47 "box"
+            Ascii40@47..48 "("
+            ColumnRef@48..56
+              Location@48..56 "location"
+            Ascii44@56..57 ","
+            ColumnRef@57..65
+              Location@57..65 "location"
+        Ascii41@65..66 ")"
         Ascii41@66..67 ")"
-        Ascii41@67..68 ")"
-        Ascii59@68..69 ";"
+        Ascii59@67..68 ";"
     ,
     errors: [],
     stmts: [
@@ -164,7 +163,7 @@ Parse {
                     reset_default_tblspc: false,
                 },
             ),
-            range: 0..68,
+            range: 0..67,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0051@11.snap b/crates/parser/tests/snapshots/statements/valid/0051@11.snap
index ebf1e154..e75bffb7 100644
--- a/crates/parser/tests/snapshots/statements/valid/0051@11.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0051@11.snap
@@ -1,29 +1,28 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE INDEX CONCURRENTLY sales_quantity_index ON sales_table (quantity);"
+description: CREATE INDEX CONCURRENTLY sales_quantity_index ON sales_table (quantity);
 ---
 Parse {
-    cst: SourceFile@0..74
-      Newline@0..1 "\n"
-      IndexStmt@1..74
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Index@8..13 "INDEX"
-        Whitespace@13..14 " "
-        Concurrently@14..26 "CONCURRENTLY"
-        Whitespace@26..27 " "
-        Ident@27..47 "sales_quantity_index"
-        Whitespace@47..48 " "
-        On@48..50 "ON"
-        Whitespace@50..51 " "
-        RangeVar@51..62
-          Ident@51..62 "sales_table"
-        Whitespace@62..63 " "
-        Ascii40@63..64 "("
-        IndexElem@64..72
-          Ident@64..72 "quantity"
-        Ascii41@72..73 ")"
-        Ascii59@73..74 ";"
+    cst: SourceFile@0..73
+      IndexStmt@0..73
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Index@7..12 "INDEX"
+        Whitespace@12..13 " "
+        Concurrently@13..25 "CONCURRENTLY"
+        Whitespace@25..26 " "
+        Ident@26..46 "sales_quantity_index"
+        Whitespace@46..47 " "
+        On@47..49 "ON"
+        Whitespace@49..50 " "
+        RangeVar@50..61
+          Ident@50..61 "sales_table"
+        Whitespace@61..62 " "
+        Ascii40@62..63 "("
+        IndexElem@63..71
+          Ident@63..71 "quantity"
+        Ascii41@71..72 ")"
+        Ascii59@72..73 ";"
     ,
     errors: [],
     stmts: [
@@ -83,7 +82,7 @@ Parse {
                     reset_default_tblspc: false,
                 },
             ),
-            range: 0..73,
+            range: 0..72,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0051@2.snap b/crates/parser/tests/snapshots/statements/valid/0051@2.snap
index 17dd3971..69e76c3a 100644
--- a/crates/parser/tests/snapshots/statements/valid/0051@2.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0051@2.snap
@@ -1,40 +1,39 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE UNIQUE INDEX title_idx ON films (title) INCLUDE (director, rating);"
+description: "CREATE UNIQUE INDEX title_idx ON films (title) INCLUDE (director, rating);"
 ---
 Parse {
-    cst: SourceFile@0..75
-      Newline@0..1 "\n"
-      IndexStmt@1..75
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Unique@8..14 "UNIQUE"
-        Whitespace@14..15 " "
-        Index@15..20 "INDEX"
-        Whitespace@20..21 " "
-        Ident@21..30 "title_idx"
-        Whitespace@30..31 " "
-        On@31..33 "ON"
-        Whitespace@33..34 " "
-        RangeVar@34..39
-          Ident@34..39 "films"
-        Whitespace@39..40 " "
-        Ascii40@40..41 "("
-        IndexElem@41..46
-          Ident@41..46 "title"
-        Ascii41@46..47 ")"
-        Whitespace@47..48 " "
-        Include@48..55 "INCLUDE"
-        Whitespace@55..56 " "
-        Ascii40@56..57 "("
-        IndexElem@57..65
-          Ident@57..65 "director"
-        Ascii44@65..66 ","
-        Whitespace@66..67 " "
-        IndexElem@67..73
-          Ident@67..73 "rating"
-        Ascii41@73..74 ")"
-        Ascii59@74..75 ";"
+    cst: SourceFile@0..74
+      IndexStmt@0..74
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Unique@7..13 "UNIQUE"
+        Whitespace@13..14 " "
+        Index@14..19 "INDEX"
+        Whitespace@19..20 " "
+        Ident@20..29 "title_idx"
+        Whitespace@29..30 " "
+        On@30..32 "ON"
+        Whitespace@32..33 " "
+        RangeVar@33..38
+          Ident@33..38 "films"
+        Whitespace@38..39 " "
+        Ascii40@39..40 "("
+        IndexElem@40..45
+          Ident@40..45 "title"
+        Ascii41@45..46 ")"
+        Whitespace@46..47 " "
+        Include@47..54 "INCLUDE"
+        Whitespace@54..55 " "
+        Ascii40@55..56 "("
+        IndexElem@56..64
+          Ident@56..64 "director"
+        Ascii44@64..65 ","
+        Whitespace@65..66 " "
+        IndexElem@66..72
+          Ident@66..72 "rating"
+        Ascii41@72..73 ")"
+        Ascii59@73..74 ";"
     ,
     errors: [],
     stmts: [
@@ -127,7 +126,7 @@ Parse {
                     reset_default_tblspc: false,
                 },
             ),
-            range: 0..74,
+            range: 0..73,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0051@3.snap b/crates/parser/tests/snapshots/statements/valid/0051@3.snap
index d27d6d9a..a2a0436b 100644
--- a/crates/parser/tests/snapshots/statements/valid/0051@3.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0051@3.snap
@@ -1,39 +1,38 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE INDEX title_idx ON films (title) WITH (deduplicate_items = off);"
+description: CREATE INDEX title_idx ON films (title) WITH (deduplicate_items = off);
 ---
 Parse {
-    cst: SourceFile@0..72
-      Newline@0..1 "\n"
-      IndexStmt@1..72
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Index@8..13 "INDEX"
-        Whitespace@13..14 " "
-        Ident@14..23 "title_idx"
-        Whitespace@23..24 " "
-        On@24..26 "ON"
-        Whitespace@26..27 " "
-        RangeVar@27..32
-          Ident@27..32 "films"
-        Whitespace@32..33 " "
-        Ascii40@33..34 "("
-        IndexElem@34..39
-          Ident@34..39 "title"
-        Ascii41@39..40 ")"
-        Whitespace@40..41 " "
-        With@41..45 "WITH"
-        Whitespace@45..46 " "
-        Ascii40@46..47 "("
-        DefElem@47..70
-          Ident@47..64 "deduplicate_items"
-          Whitespace@64..65 " "
-          Ascii61@65..66 "="
-          Whitespace@66..67 " "
-          TypeName@67..70
-            Off@67..70 "off"
-        Ascii41@70..71 ")"
-        Ascii59@71..72 ";"
+    cst: SourceFile@0..71
+      IndexStmt@0..71
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Index@7..12 "INDEX"
+        Whitespace@12..13 " "
+        Ident@13..22 "title_idx"
+        Whitespace@22..23 " "
+        On@23..25 "ON"
+        Whitespace@25..26 " "
+        RangeVar@26..31
+          Ident@26..31 "films"
+        Whitespace@31..32 " "
+        Ascii40@32..33 "("
+        IndexElem@33..38
+          Ident@33..38 "title"
+        Ascii41@38..39 ")"
+        Whitespace@39..40 " "
+        With@40..44 "WITH"
+        Whitespace@44..45 " "
+        Ascii40@45..46 "("
+        DefElem@46..69
+          Ident@46..63 "deduplicate_items"
+          Whitespace@63..64 " "
+          Ascii61@64..65 "="
+          Whitespace@65..66 " "
+          TypeName@66..69
+            Off@66..69 "off"
+        Ascii41@69..70 ")"
+        Ascii59@70..71 ";"
     ,
     errors: [],
     stmts: [
@@ -134,7 +133,7 @@ Parse {
                     reset_default_tblspc: false,
                 },
             ),
-            range: 0..71,
+            range: 0..70,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0051@4.snap b/crates/parser/tests/snapshots/statements/valid/0051@4.snap
index cce880d5..a516e1df 100644
--- a/crates/parser/tests/snapshots/statements/valid/0051@4.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0051@4.snap
@@ -1,32 +1,31 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE INDEX ON films ((lower(title)));"
+description: CREATE INDEX ON films ((lower(title)));
 ---
 Parse {
-    cst: SourceFile@0..40
-      Newline@0..1 "\n"
-      IndexStmt@1..40
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Index@8..13 "INDEX"
-        Whitespace@13..14 " "
-        On@14..16 "ON"
-        Whitespace@16..17 " "
-        RangeVar@17..22
-          Ident@17..22 "films"
-        Whitespace@22..23 " "
+    cst: SourceFile@0..39
+      IndexStmt@0..39
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Index@7..12 "INDEX"
+        Whitespace@12..13 " "
+        On@13..15 "ON"
+        Whitespace@15..16 " "
+        RangeVar@16..21
+          Ident@16..21 "films"
+        Whitespace@21..22 " "
+        Ascii40@22..23 "("
         Ascii40@23..24 "("
-        Ascii40@24..25 "("
-        IndexElem@25..36
-          FuncCall@25..36
-            Ident@25..30 "lower"
-            Ascii40@30..31 "("
-            ColumnRef@31..36
-              Ident@31..36 "title"
+        IndexElem@24..35
+          FuncCall@24..35
+            Ident@24..29 "lower"
+            Ascii40@29..30 "("
+            ColumnRef@30..35
+              Ident@30..35 "title"
+        Ascii41@35..36 ")"
         Ascii41@36..37 ")"
         Ascii41@37..38 ")"
-        Ascii41@38..39 ")"
-        Ascii59@39..40 ";"
+        Ascii59@38..39 ";"
     ,
     errors: [],
     stmts: [
@@ -137,7 +136,7 @@ Parse {
                     reset_default_tblspc: false,
                 },
             ),
-            range: 0..39,
+            range: 0..38,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0051@5.snap b/crates/parser/tests/snapshots/statements/valid/0051@5.snap
index 8df7df36..ed65b7e7 100644
--- a/crates/parser/tests/snapshots/statements/valid/0051@5.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0051@5.snap
@@ -1,31 +1,30 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE INDEX title_idx_german ON films (title COLLATE \"de_DE\");"
+description: "CREATE INDEX title_idx_german ON films (title COLLATE \"de_DE\");"
 ---
 Parse {
-    cst: SourceFile@0..64
-      Newline@0..1 "\n"
-      IndexStmt@1..64
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Index@8..13 "INDEX"
-        Whitespace@13..14 " "
-        Ident@14..30 "title_idx_german"
-        Whitespace@30..31 " "
-        On@31..33 "ON"
-        Whitespace@33..34 " "
-        RangeVar@34..39
-          Ident@34..39 "films"
-        Whitespace@39..40 " "
-        Ascii40@40..41 "("
-        IndexElem@41..62
-          Ident@41..46 "title"
-          Whitespace@46..47 " "
-          Collate@47..54 "COLLATE"
-          Whitespace@54..55 " "
-          Ident@55..62 "\"de_DE\""
-        Ascii41@62..63 ")"
-        Ascii59@63..64 ";"
+    cst: SourceFile@0..63
+      IndexStmt@0..63
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Index@7..12 "INDEX"
+        Whitespace@12..13 " "
+        Ident@13..29 "title_idx_german"
+        Whitespace@29..30 " "
+        On@30..32 "ON"
+        Whitespace@32..33 " "
+        RangeVar@33..38
+          Ident@33..38 "films"
+        Whitespace@38..39 " "
+        Ascii40@39..40 "("
+        IndexElem@40..61
+          Ident@40..45 "title"
+          Whitespace@45..46 " "
+          Collate@46..53 "COLLATE"
+          Whitespace@53..54 " "
+          Ident@54..61 "\"de_DE\""
+        Ascii41@61..62 ")"
+        Ascii59@62..63 ";"
     ,
     errors: [],
     stmts: [
@@ -95,7 +94,7 @@ Parse {
                     reset_default_tblspc: false,
                 },
             ),
-            range: 0..63,
+            range: 0..62,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0051@6.snap b/crates/parser/tests/snapshots/statements/valid/0051@6.snap
index a1cb6700..8c3a5294 100644
--- a/crates/parser/tests/snapshots/statements/valid/0051@6.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0051@6.snap
@@ -1,31 +1,30 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE INDEX title_idx_nulls_low ON films (title NULLS FIRST);"
+description: CREATE INDEX title_idx_nulls_low ON films (title NULLS FIRST);
 ---
 Parse {
-    cst: SourceFile@0..63
-      Newline@0..1 "\n"
-      IndexStmt@1..63
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Index@8..13 "INDEX"
-        Whitespace@13..14 " "
-        Ident@14..33 "title_idx_nulls_low"
-        Whitespace@33..34 " "
-        On@34..36 "ON"
-        Whitespace@36..37 " "
-        RangeVar@37..42
-          Ident@37..42 "films"
-        Whitespace@42..43 " "
-        Ascii40@43..44 "("
-        IndexElem@44..61
-          Ident@44..49 "title"
-          Whitespace@49..50 " "
-          NullsP@50..55 "NULLS"
-          Whitespace@55..56 " "
-          FirstP@56..61 "FIRST"
-        Ascii41@61..62 ")"
-        Ascii59@62..63 ";"
+    cst: SourceFile@0..62
+      IndexStmt@0..62
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Index@7..12 "INDEX"
+        Whitespace@12..13 " "
+        Ident@13..32 "title_idx_nulls_low"
+        Whitespace@32..33 " "
+        On@33..35 "ON"
+        Whitespace@35..36 " "
+        RangeVar@36..41
+          Ident@36..41 "films"
+        Whitespace@41..42 " "
+        Ascii40@42..43 "("
+        IndexElem@43..60
+          Ident@43..48 "title"
+          Whitespace@48..49 " "
+          NullsP@49..54 "NULLS"
+          Whitespace@54..55 " "
+          FirstP@55..60 "FIRST"
+        Ascii41@60..61 ")"
+        Ascii59@61..62 ";"
     ,
     errors: [],
     stmts: [
@@ -85,7 +84,7 @@ Parse {
                     reset_default_tblspc: false,
                 },
             ),
-            range: 0..62,
+            range: 0..61,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0051@7.snap b/crates/parser/tests/snapshots/statements/valid/0051@7.snap
index 5c837102..f608de5e 100644
--- a/crates/parser/tests/snapshots/statements/valid/0051@7.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0051@7.snap
@@ -1,40 +1,39 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE UNIQUE INDEX title_idx ON films (title) WITH (fillfactor = 70);"
+description: CREATE UNIQUE INDEX title_idx ON films (title) WITH (fillfactor = 70);
 ---
 Parse {
-    cst: SourceFile@0..71
-      Newline@0..1 "\n"
-      IndexStmt@1..71
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Unique@8..14 "UNIQUE"
-        Whitespace@14..15 " "
-        Index@15..20 "INDEX"
-        Whitespace@20..21 " "
-        Ident@21..30 "title_idx"
-        Whitespace@30..31 " "
-        On@31..33 "ON"
-        Whitespace@33..34 " "
-        RangeVar@34..39
-          Ident@34..39 "films"
-        Whitespace@39..40 " "
-        Ascii40@40..41 "("
-        IndexElem@41..46
-          Ident@41..46 "title"
-        Ascii41@46..47 ")"
-        Whitespace@47..48 " "
-        With@48..52 "WITH"
-        Whitespace@52..53 " "
-        Ascii40@53..54 "("
-        DefElem@54..69
-          Ident@54..64 "fillfactor"
-          Whitespace@64..65 " "
-          Ascii61@65..66 "="
-          Whitespace@66..67 " "
-          Iconst@67..69 "70"
-        Ascii41@69..70 ")"
-        Ascii59@70..71 ";"
+    cst: SourceFile@0..70
+      IndexStmt@0..70
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Unique@7..13 "UNIQUE"
+        Whitespace@13..14 " "
+        Index@14..19 "INDEX"
+        Whitespace@19..20 " "
+        Ident@20..29 "title_idx"
+        Whitespace@29..30 " "
+        On@30..32 "ON"
+        Whitespace@32..33 " "
+        RangeVar@33..38
+          Ident@33..38 "films"
+        Whitespace@38..39 " "
+        Ascii40@39..40 "("
+        IndexElem@40..45
+          Ident@40..45 "title"
+        Ascii41@45..46 ")"
+        Whitespace@46..47 " "
+        With@47..51 "WITH"
+        Whitespace@51..52 " "
+        Ascii40@52..53 "("
+        DefElem@53..68
+          Ident@53..63 "fillfactor"
+          Whitespace@63..64 " "
+          Ascii61@64..65 "="
+          Whitespace@65..66 " "
+          Iconst@66..68 "70"
+        Ascii41@68..69 ")"
+        Ascii59@69..70 ";"
     ,
     errors: [],
     stmts: [
@@ -118,7 +117,7 @@ Parse {
                     reset_default_tblspc: false,
                 },
             ),
-            range: 0..70,
+            range: 0..69,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0051@8.snap b/crates/parser/tests/snapshots/statements/valid/0051@8.snap
index 6105e849..5bd6febc 100644
--- a/crates/parser/tests/snapshots/statements/valid/0051@8.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0051@8.snap
@@ -1,43 +1,42 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE INDEX gin_idx ON documents_table USING GIN (locations) WITH (fastupdate = off);"
+description: CREATE INDEX gin_idx ON documents_table USING GIN (locations) WITH (fastupdate = off);
 ---
 Parse {
-    cst: SourceFile@0..87
-      Newline@0..1 "\n"
-      IndexStmt@1..87
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Index@8..13 "INDEX"
-        Whitespace@13..14 " "
-        Ident@14..21 "gin_idx"
-        Whitespace@21..22 " "
-        On@22..24 "ON"
-        Whitespace@24..25 " "
-        RangeVar@25..40
-          Ident@25..40 "documents_table"
-        Whitespace@40..41 " "
-        Using@41..46 "USING"
-        Whitespace@46..47 " "
-        Ident@47..50 "GIN"
-        Whitespace@50..51 " "
-        Ascii40@51..52 "("
-        IndexElem@52..61
-          Ident@52..61 "locations"
-        Ascii41@61..62 ")"
-        Whitespace@62..63 " "
-        With@63..67 "WITH"
-        Whitespace@67..68 " "
-        Ascii40@68..69 "("
-        DefElem@69..85
-          Ident@69..79 "fastupdate"
-          Whitespace@79..80 " "
-          Ascii61@80..81 "="
-          Whitespace@81..82 " "
-          TypeName@82..85
-            Off@82..85 "off"
-        Ascii41@85..86 ")"
-        Ascii59@86..87 ";"
+    cst: SourceFile@0..86
+      IndexStmt@0..86
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Index@7..12 "INDEX"
+        Whitespace@12..13 " "
+        Ident@13..20 "gin_idx"
+        Whitespace@20..21 " "
+        On@21..23 "ON"
+        Whitespace@23..24 " "
+        RangeVar@24..39
+          Ident@24..39 "documents_table"
+        Whitespace@39..40 " "
+        Using@40..45 "USING"
+        Whitespace@45..46 " "
+        Ident@46..49 "GIN"
+        Whitespace@49..50 " "
+        Ascii40@50..51 "("
+        IndexElem@51..60
+          Ident@51..60 "locations"
+        Ascii41@60..61 ")"
+        Whitespace@61..62 " "
+        With@62..66 "WITH"
+        Whitespace@66..67 " "
+        Ascii40@67..68 "("
+        DefElem@68..84
+          Ident@68..78 "fastupdate"
+          Whitespace@78..79 " "
+          Ascii61@79..80 "="
+          Whitespace@80..81 " "
+          TypeName@81..84
+            Off@81..84 "off"
+        Ascii41@84..85 ")"
+        Ascii59@85..86 ";"
     ,
     errors: [],
     stmts: [
@@ -138,7 +137,7 @@ Parse {
                     reset_default_tblspc: false,
                 },
             ),
-            range: 0..86,
+            range: 0..85,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0051@9.snap b/crates/parser/tests/snapshots/statements/valid/0051@9.snap
index a5d346ff..a9be4d38 100644
--- a/crates/parser/tests/snapshots/statements/valid/0051@9.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0051@9.snap
@@ -1,31 +1,30 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE INDEX code_idx ON films (code) TABLESPACE indexspace;"
+description: CREATE INDEX code_idx ON films (code) TABLESPACE indexspace;
 ---
 Parse {
-    cst: SourceFile@0..61
-      Newline@0..1 "\n"
-      IndexStmt@1..61
-        Create@1..7 "CREATE"
-        Whitespace@7..8 " "
-        Index@8..13 "INDEX"
-        Whitespace@13..14 " "
-        Ident@14..22 "code_idx"
-        Whitespace@22..23 " "
-        On@23..25 "ON"
-        Whitespace@25..26 " "
-        RangeVar@26..31
-          Ident@26..31 "films"
-        Whitespace@31..32 " "
-        Ascii40@32..33 "("
-        IndexElem@33..37
-          Ident@33..37 "code"
-        Ascii41@37..38 ")"
-        Whitespace@38..39 " "
-        Tablespace@39..49 "TABLESPACE"
-        Whitespace@49..50 " "
-        Ident@50..60 "indexspace"
-        Ascii59@60..61 ";"
+    cst: SourceFile@0..60
+      IndexStmt@0..60
+        Create@0..6 "CREATE"
+        Whitespace@6..7 " "
+        Index@7..12 "INDEX"
+        Whitespace@12..13 " "
+        Ident@13..21 "code_idx"
+        Whitespace@21..22 " "
+        On@22..24 "ON"
+        Whitespace@24..25 " "
+        RangeVar@25..30
+          Ident@25..30 "films"
+        Whitespace@30..31 " "
+        Ascii40@31..32 "("
+        IndexElem@32..36
+          Ident@32..36 "code"
+        Ascii41@36..37 ")"
+        Whitespace@37..38 " "
+        Tablespace@38..48 "TABLESPACE"
+        Whitespace@48..49 " "
+        Ident@49..59 "indexspace"
+        Ascii59@59..60 ";"
     ,
     errors: [],
     stmts: [
@@ -85,7 +84,7 @@ Parse {
                     reset_default_tblspc: false,
                 },
             ),
-            range: 0..60,
+            range: 0..59,
         },
     ],
 }
diff --git a/crates/parser/tests/snapshots/statements/valid/0052@2.snap b/crates/parser/tests/snapshots/statements/valid/0052@2.snap
index 94171c5c..7815a6e0 100644
--- a/crates/parser/tests/snapshots/statements/valid/0052@2.snap
+++ b/crates/parser/tests/snapshots/statements/valid/0052@2.snap
@@ -1,78 +1,77 @@
 ---
 source: crates/parser/tests/statement_parser_test.rs
-description: "\nCREATE PROCEDURE insert_data(a integer, b integer) LANGUAGE SQL BEGIN ATOMIC INSERT INTO tbl VALUES (a); INSERT INTO tbl VALUES (b); END;"
+description: "CREATE PROCEDURE insert_data(a integer, b integer) LANGUAGE SQL BEGIN ATOMIC INSERT INTO tbl VALUES (a); INSERT INTO tbl VALUES (b); END;"
 ---
 Parse {
-    cst: SourceFile@0..135
-      Newline@0..1 "\n"
-      Create@1..7 "CREATE"
-      Whitespace@7..8 " "
-      Procedure@8..17 "PROCEDURE"
-      Whitespace@17..18 " "
-      Ident@18..29 "insert_data"
-      Ascii40@29..30 "("
-      Ident@30..31 "a"
-      Whitespace@31..32 " "
-      Integer@32..39 "integer"
-      Ascii44@39..40 ","
-      Whitespace@40..41 " "
-      Ident@41..42 "b"
-      Whitespace@42..43 " "
-      Integer@43..50 "integer"
-      Ascii41@50..51 ")"
-      Whitespace@51..52 " "
-      Language@52..60 "LANGUAGE"
-      Whitespace@60..61 " "
-      SqlP@61..64 "SQL"
-      BeginP@64..69 "BEGIN"
-      Whitespace@69..70 " "
-      Atomic@70..76 "ATOMIC"
-      InsertStmt@76..103
-        Insert@76..82 "INSERT"
-        Whitespace@82..83 " "
-        Into@83..87 "INTO"
-        Whitespace@87..88 " "
-        RangeVar@88..91
-          Ident@88..91 "tbl"
-        Whitespace@91..92 " "
-        SelectStmt@92..101
-          Values@92..98 "VALUES"
-          Whitespace@98..99 " "
-          Ascii40@99..100 "("
-          List@100..101
-            ColumnRef@100..101
-              Ident@100..101 "a"
-        Ascii41@101..102 ")"
-        Ascii59@102..103 ";"
-      InsertStmt@103..130
-        Insert@103..109 "INSERT"
-        Whitespace@109..110 " "
-        Into@110..114 "INTO"
-        Whitespace@114..115 " "
-        RangeVar@115..118
-          Ident@115..118 "tbl"
-        Whitespace@118..119 " "
-        SelectStmt@119..128
-          Values@119..125 "VALUES"
-          Whitespace@125..126 " "
-          Ascii40@126..127 "("
-          List@127..128
-            ColumnRef@127..128
-              Ident@127..128 "b"
-        Ascii41@128..129 ")"
-        Ascii59@129..130 ";"
-      Whitespace@130..131 " "
-      EndP@131..134 "END"
-      Ascii59@134..135 ";"
+    cst: SourceFile@0..134
+      Create@0..6 "CREATE"
+      Whitespace@6..7 " "
+      Procedure@7..16 "PROCEDURE"
+      Whitespace@16..17 " "
+      Ident@17..28 "insert_data"
+      Ascii40@28..29 "("
+      Ident@29..30 "a"
+      Whitespace@30..31 " "
+      Integer@31..38 "integer"
+      Ascii44@38..39 ","
+      Whitespace@39..40 " "
+      Ident@40..41 "b"
+      Whitespace@41..42 " "
+      Integer@42..49 "integer"
+      Ascii41@49..50 ")"
+      Whitespace@50..51 " "
+      Language@51..59 "LANGUAGE"
+      Whitespace@59..60 " "
+      SqlP@60..63 "SQL"
+      BeginP@63..68 "BEGIN"
+      Whitespace@68..69 " "
+      Atomic@69..75 "ATOMIC"
+      InsertStmt@75..102
+        Insert@75..81 "INSERT"
+        Whitespace@81..82 " "
+        Into@82..86 "INTO"
+        Whitespace@86..87 " "
+        RangeVar@87..90
+          Ident@87..90 "tbl"
+        Whitespace@90..91 " "
+        SelectStmt@91..100
+          Values@91..97 "VALUES"
+          Whitespace@97..98 " "
+          Ascii40@98..99 "("
+          List@99..100
+            ColumnRef@99..100
+              Ident@99..100 "a"
+        Ascii41@100..101 ")"
+        Ascii59@101..102 ";"
+      InsertStmt@102..129
+        Insert@102..108 "INSERT"
+        Whitespace@108..109 " "
+        Into@109..113 "INTO"
+        Whitespace@113..114 " "
+        RangeVar@114..117
+          Ident@114..117 "tbl"
+        Whitespace@117..118 " "
+        SelectStmt@118..127
+          Values@118..124 "VALUES"
+          Whitespace@124..125 " "
+          Ascii40@125..126 "("
+          List@126..127
+            ColumnRef@126..127
+              Ident@126..127 "b"
+        Ascii41@127..128 ")"
+        Ascii59@128..129 ";"
+      Whitespace@129..130 " "
+      EndP@130..133 "END"
+      Ascii59@133..134 ";"
     ,
     errors: [
         SyntaxError(
             "Expected Ascii59, found Whitespace",
-            77..77,
+            76..76,
         ),
         SyntaxError(
             "Invalid statement: syntax error at or near \"ATOMIC\"",
-            21..24,
+            20..23,
         ),
     ],
     stmts: [
@@ -158,7 +157,7 @@ Parse {
                     r#override: OverridingNotSet,
                 },
             ),
-            range: 77..105,
+            range: 76..104,
         },
         RawStmt {
             stmt: InsertStmt(
@@ -242,7 +241,7 @@ Parse {
                     r#override: OverridingNotSet,
                 },
             ),
-            range: 105..133,
+            range: 104..132,
         },
     ],
 }
diff --git a/crates/parser/tests/statement_parser_test.rs b/crates/parser/tests/statement_parser_test.rs
index 0718897c..93bb19d7 100644
--- a/crates/parser/tests/statement_parser_test.rs
+++ b/crates/parser/tests/statement_parser_test.rs
@@ -26,7 +26,7 @@ fn valid_statements() {
         let cases = split_with_parser(&contents).unwrap();
 
         for (i, case) in cases.iter().enumerate() {
-            let case = format!("{};", case);
+            let case = format!("{};", case.trim());
 
             debug!("Parsing statement {}\n{}", test_name, case);