Repository: sqlfluff/sqlfluff
Pull request: Fix parsing types and add check to test in future
<!--Thanks for adding this feature!-->

<!--Please give the Pull Request a meaningful title for the release notes-->

### Brief summary of the change made
<!--Please include `fixes #XXXX` to automatically close any corresponding issue when the pull request is merged. Alternatively if not fully closed you can say `makes progress on #XXXX`.-->
Fixes #2650 which was caused by statements which did not have a `type` set, so fell back to `base` type whereas rule L052 expected them to be statements.

I've also added a change to L052 to raise these errors in future instead of a debugging error that is not checked in CI.

I also added types to all other segments that were missing them.

Finally I added a check to the generate_parse_fixture_yml.py script to check if any segment is set to `base` or `unparsable` and alert in this case so we can catch this in future.

### Are there any other side effects of this change that we should be aware of?
As per above.

### Pull Request checklist
- [x] Please confirm you have completed any of the necessary steps below.

- Included test cases to demonstrate any code changes, which may be one or more of the following:
  - `.yml` rule test cases in `test/fixtures/rules/std_rule_cases`.
  - `.sql`/`.yml` parser test cases in `test/fixtures/dialects` (note YML files can be auto generated with `tox -e generate-fixture-yml`).
  - Full autofix test cases in `test/fixtures/linter/autofix`.
  - Other.
- Added appropriate documentation for the change.
- Created GitHub issues for any relevant followup/future enhancements if appropriate.


Problem statement:
L052 Error: unable to identify statement terminated by `;`
<!--If this is a parsing or linting issue, please include a minimal SQL example which reproduces the issue, along with the `sqlfluff parse` output, `sqlfluff lint` output and `sqlfluff fix` output when relevant.-->

## Expected Behaviour
No error from L052; previously worked w/o throwing error. 

This is happening on several test files in Spark3 dialect. A few listed below.
- `test/fixtures/dialects/spark3/create_database.sql`
- `test/fixtures/dialects/spark3/create_table_datasource.sql`
- `test/fixtures/dialects/spark3/select_cluster_by.sql`

## Observed Behaviour
```bash
INFO       LINTING (test/fixtures/dialects/spark3/select_sort_by.sql)
== [test/fixtures/dialects/spark3/select_sort_by.sql] LINTING
ERROR      [L052] Unable to identify statement terminated by <SymbolSegment: ([L:  8, P:  9]) ';'>
ERROR      [L052] Unable to identify statement terminated by <SymbolSegment: ([L: 16, P:  9]) ';'>
ERROR      [L052] Unable to identify statement terminated by <SymbolSegment: ([L: 24, P: 10]) ';'>
ERROR      [L052] Unable to identify statement terminated by <SymbolSegment: ([L: 31, P: 10]) ';'>
ERROR      [L052] Unable to identify statement terminated by <SymbolSegment: ([L: 41, P: 19]) ';'>
ERROR      [L052] Unable to identify statement terminated by <SymbolSegment: ([L: 49, P: 19]) ';'>
ERROR      [L052] Unable to identify statement terminated by <SymbolSegment: ([L: 59, P: 13]) ';'>
ERROR      [L052] Unable to identify statement terminated by <SymbolSegment: ([L: 67, P: 13]) ';'>
ERROR      [L052] Unable to identify statement terminated by <SymbolSegment: ([L: 77, P: 25]) ';'>
ERROR      [L052] Unable to identify statement terminated by <SymbolSegment: ([L: 85, P: 25]) ';'>
ERROR      [L052] Unable to identify statement terminated by <SymbolSegment: ([L: 96, P: 23]) ';'>
ERROR      [L052] Unable to identify statement terminated by <SymbolSegment: ([L:104, P: 23]) ';'>
ERROR      [L052] Unable to identify statement terminated by <SymbolSegment: ([L:112, P: 44]) ';'>
== [test/fixtures/dialects/spark3/select_sort_by.sql] PASS
==== summary ====
files:             1 violations:        0
clean files:       1 unclean files:     0
avg per file:   0.00 unclean rate:     0%
status:         PASS
All Finished 📜 🎉!
```

## Steps to Reproduce
```bash
sqlfluff lint --dialect spark3 test/fixtures/dialects/spark3/select_cluster_by.sql
```

## Dialect
Spark3

## Version
<!-- Include the output of `sqlfluff --version` along with your Python version.
If you are using dbt then please additionally include the dbt version. -->
0.9.4

## Configuration
```bash
==== sqlfluff ====
sqlfluff:                0.9.4 python:                 3.9.10
implementation:        cpython dialect:                spark3
verbosity:                   3 templater:               jinja
```

Hints from issue discussion:

Commit message: Update src/sqlfluff/rules/L052.py

Co-authored-by: Barry Hart <barrywhart@yahoo.com>

Patch to review:
diff --git a/src/sqlfluff/dialects/dialect_ansi.py b/src/sqlfluff/dialects/dialect_ansi.py
index 2a2d9306109..e8179b24190 100644
--- a/src/sqlfluff/dialects/dialect_ansi.py
+++ b/src/sqlfluff/dialects/dialect_ansi.py
@@ -3058,6 +3058,7 @@ class SetClauseSegment(BaseSegment):
 class FunctionDefinitionGrammar(BaseSegment):
     """This is the body of a `CREATE FUNCTION AS` statement."""
 
+    type = "function_definition"
     match_grammar = Sequence(
         "AS",
         Ref("QuotedLiteralSegment"),
@@ -3113,6 +3114,7 @@ class CreateFunctionStatementSegment(BaseSegment):
 class FunctionParameterListGrammar(BaseSegment):
     """The parameters for a function ie. `(string, number)`."""
 
+    type = "function_parameter_list"
     # Function parameter list
     match_grammar = Bracketed(
         Delimited(
diff --git a/src/sqlfluff/dialects/dialect_bigquery.py b/src/sqlfluff/dialects/dialect_bigquery.py
index 6bace8ab1ba..c46a654bbfd 100644
--- a/src/sqlfluff/dialects/dialect_bigquery.py
+++ b/src/sqlfluff/dialects/dialect_bigquery.py
@@ -467,6 +467,7 @@ class FunctionSegment(BaseSegment):
 class FunctionDefinitionGrammar(BaseSegment):
     """This is the body of a `CREATE FUNCTION AS` statement."""
 
+    type = "function_definition"
     match_grammar = Sequence(
         AnyNumberOf(
             Sequence(
@@ -599,6 +600,7 @@ class FunctionParameterListGrammar(BaseSegment):
 
     # Function parameter list. Note that the only difference from the ANSI
     # grammar is that BigQuery provides overrides bracket_pairs_set.
+    type = "function_parameter_list"
     match_grammar = Bracketed(
         Delimited(
             Ref("FunctionParameterGrammar"),
diff --git a/src/sqlfluff/dialects/dialect_mysql.py b/src/sqlfluff/dialects/dialect_mysql.py
index aa59bee9ee2..aa472627f9c 100644
--- a/src/sqlfluff/dialects/dialect_mysql.py
+++ b/src/sqlfluff/dialects/dialect_mysql.py
@@ -685,6 +685,7 @@ class CreateProcedureStatementSegment(BaseSegment):
 class FunctionDefinitionGrammar(BaseSegment):
     """This is the body of a `CREATE FUNCTION` statement."""
 
+    type = "function_definition"
     match_grammar = Ref("TransactionStatementSegment")
 
 
@@ -848,6 +849,7 @@ class AlterTableStatementSegment(BaseSegment):
 class ProcedureParameterListGrammar(BaseSegment):
     """The parameters for a procedure ie. `(in/out/inout name datatype)`."""
 
+    type = "procedure_parameter_list"
     match_grammar = Bracketed(
         Delimited(
             Ref("ProcedureParameterGrammar"),
diff --git a/src/sqlfluff/dialects/dialect_postgres.py b/src/sqlfluff/dialects/dialect_postgres.py
index 01a06bbc146..d299a8fa400 100644
--- a/src/sqlfluff/dialects/dialect_postgres.py
+++ b/src/sqlfluff/dialects/dialect_postgres.py
@@ -871,6 +871,7 @@ class FunctionDefinitionGrammar(BaseSegment):
     https://www.postgresql.org/docs/13/sql-createfunction.html
     """
 
+    type = "function_definition"
     match_grammar = Sequence(
         AnyNumberOf(
             Ref("LanguageClauseSegment"),
@@ -2212,6 +2213,7 @@ class PartitionBoundSpecSegment(BaseSegment):
     As per https://www.postgresql.org/docs/13/sql-altertable.html.
     """
 
+    type = "partition_bound_segment"
     match_grammar = OneOf(
         Sequence(
             "IN",
@@ -2322,6 +2324,7 @@ class TableConstraintUsingIndexSegment(BaseSegment):
     As specified in: https://www.postgresql.org/docs/13/sql-altertable.html.
     """
 
+    type = "table_constraint_segment"
     match_grammar = Sequence(
         Sequence(  # [ CONSTRAINT <Constraint name> ]
             "CONSTRAINT", Ref("ObjectReferenceSegment"), optional=True
diff --git a/src/sqlfluff/dialects/dialect_snowflake.py b/src/sqlfluff/dialects/dialect_snowflake.py
index a5d05dcf46d..4c48770e40e 100644
--- a/src/sqlfluff/dialects/dialect_snowflake.py
+++ b/src/sqlfluff/dialects/dialect_snowflake.py
@@ -520,6 +520,7 @@ class ValuesClauseSegment(BaseSegment):
 class FunctionDefinitionGrammar(BaseSegment):
     """This is the body of a `CREATE FUNCTION AS` statement."""
 
+    type = "function_definition"
     match_grammar = Sequence(
         "AS",
         OneOf(Ref("QuotedLiteralSegment"), Ref("DollarQuotedLiteralSegment")),
@@ -3359,6 +3360,7 @@ class DescribeStatementSegment(BaseSegment):
     https://docs.snowflake.com/en/sql-reference/sql/desc.html
     """
 
+    type = "describe_statement"
     match_grammar = Sequence(
         OneOf("DESCRIBE", "DESC"),
         OneOf(
@@ -3535,6 +3537,7 @@ class TransactionStatementSegment(BaseSegment):
     https://docs.snowflake.com/en/sql-reference/sql/rollback.html
     """
 
+    type = "transaction_statement_segment"
     match_grammar = OneOf(
         Sequence(
             "BEGIN",
diff --git a/src/sqlfluff/dialects/dialect_spark3.py b/src/sqlfluff/dialects/dialect_spark3.py
index 829035aaaf4..e6bfdc64b3e 100644
--- a/src/sqlfluff/dialects/dialect_spark3.py
+++ b/src/sqlfluff/dialects/dialect_spark3.py
@@ -1553,6 +1553,7 @@ class RefreshFunctionStatementSegment(BaseSegment):
 class StatementSegment(BaseSegment):
     """Overriding StatementSegment to allow for additional segment parsing."""
 
+    type = "statement"
     match_grammar = ansi_dialect.get_segment("StatementSegment").match_grammar.copy()
 
     parse_grammar = ansi_dialect.get_segment("StatementSegment").parse_grammar.copy(
diff --git a/src/sqlfluff/dialects/dialect_tsql.py b/src/sqlfluff/dialects/dialect_tsql.py
index 8b23a4b615e..10657008952 100644
--- a/src/sqlfluff/dialects/dialect_tsql.py
+++ b/src/sqlfluff/dialects/dialect_tsql.py
@@ -2969,6 +2969,7 @@ class PostTableExpressionGrammar(BaseSegment):
     https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-ver15
     """
 
+    type = "post_table_expression_grammar"
     match_grammar = Sequence(
         Sequence("WITH", optional=True),
         Bracketed(
diff --git a/src/sqlfluff/rules/L052.py b/src/sqlfluff/rules/L052.py
index 79633faa132..5bbb4e460be 100644
--- a/src/sqlfluff/rules/L052.py
+++ b/src/sqlfluff/rules/L052.py
@@ -152,10 +152,11 @@ def _eval(self, context: RuleContext) -> Optional[LintResult]:
                             break
                         except ValueError:  # pragma: no cover
                             pass
-            else:
-                self.logger.error(
-                    "Unable to identify statement terminated by %r", context.segment
-                )
+            elif memory["ended_statements"]:
+                # Unless it's an empty statement we shouldn't reach here
+                raise ValueError(
+                    f"Unable to identify statement terminated by {context.segment!r}"
+                )  # pragma: no cover
 
             # Locate semicolon and search back over the raw stack
             # to find the end of the preceding statement.
diff --git a/test/fixtures/dialects/ansi/create_function.yml b/test/fixtures/dialects/ansi/create_function.yml
index 7f45bfed9dc..ce8418a1ab4 100644
--- a/test/fixtures/dialects/ansi/create_function.yml
+++ b/test/fixtures/dialects/ansi/create_function.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 561d6ce111232861a4bab77ecf23c9cba4b2ed492c6f1538b35f4c59a2e579f4
+_hash: 464777673d070691ae11a20dc3510745429b36256e61c9269c0b247409701c7a
 file:
   statement:
     create_function_statement:
@@ -11,7 +11,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: add
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -23,7 +23,7 @@ file:
     - keyword: RETURNS
     - data_type:
         data_type_identifier: integer
-    - base:
+    - function_definition:
       - keyword: AS
       - literal: "'select $1 + $2;'"
       - keyword: LANGUAGE
diff --git a/test/fixtures/dialects/ansi/create_function_no_args.yml b/test/fixtures/dialects/ansi/create_function_no_args.yml
index fd2bc0a6218..0ab303ee655 100644
--- a/test/fixtures/dialects/ansi/create_function_no_args.yml
+++ b/test/fixtures/dialects/ansi/create_function_no_args.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: f23c156e64e82141c241dbef04aba9cc6d118493c80e4f7e266da13145682b96
+_hash: 19e4092a664affa9d51bbe9365080cbc88e9003c5b17dc2c9259f549b2bc03e2
 file:
   statement:
     create_function_statement:
@@ -11,14 +11,14 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: add
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           end_bracket: )
     - keyword: RETURNS
     - data_type:
         data_type_identifier: integer
-    - base:
+    - function_definition:
       - keyword: AS
       - literal: "'select $1 + $2;'"
       - keyword: LANGUAGE
diff --git a/test/fixtures/dialects/ansi/create_zero_argument_function.yml b/test/fixtures/dialects/ansi/create_zero_argument_function.yml
index d1b2b6fc8a2..e8905f8390b 100644
--- a/test/fixtures/dialects/ansi/create_zero_argument_function.yml
+++ b/test/fixtures/dialects/ansi/create_zero_argument_function.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 70f3b48d6b9e3569b60dbe7b4860155a93958fb624d2cd0f554c2010a6523abb
+_hash: 519f26f25605bc9c2ea3d93c0758bb28d57354f445d527cbb2ffc53a9260f9ed
 file:
 - statement:
     create_function_statement:
@@ -13,14 +13,14 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: a
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           end_bracket: )
     - keyword: RETURNS
     - data_type:
         data_type_identifier: integer
-    - base:
+    - function_definition:
       - keyword: AS
       - literal: "'\n    SELECT 1;\n'"
       - keyword: LANGUAGE
@@ -32,14 +32,14 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: a
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           end_bracket: )
     - keyword: RETURNS
     - data_type:
         data_type_identifier: integer
-    - base:
+    - function_definition:
       - keyword: AS
       - literal: "'\n    SELECT 1;\n'"
       - keyword: LANGUAGE
diff --git a/test/fixtures/dialects/bigquery/create_function_no_args.yml b/test/fixtures/dialects/bigquery/create_function_no_args.yml
index 9c4c2ce56b0..01d3966c7c8 100644
--- a/test/fixtures/dialects/bigquery/create_function_no_args.yml
+++ b/test/fixtures/dialects/bigquery/create_function_no_args.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: fa012a4e84dfe072b317e5e5ace48d266ab98c320b14d91491ff85e1f5c33243
+_hash: 71492f64ce880f27b02655dd780bd1c63233f5c037c5c3a0fe99aa0611be442e
 file:
   statement:
     create_function_statement:
@@ -11,14 +11,14 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: add
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           end_bracket: )
     - keyword: RETURNS
     - data_type:
         data_type_identifier: integer
-    - base:
+    - function_definition:
       - keyword: AS
       - udf_body: "'select $1 + $2;'"
       - keyword: LANGUAGE
diff --git a/test/fixtures/dialects/bigquery/create_js_function_complex_types.yml b/test/fixtures/dialects/bigquery/create_js_function_complex_types.yml
index 01bb6634847..fc63da3a5a9 100644
--- a/test/fixtures/dialects/bigquery/create_js_function_complex_types.yml
+++ b/test/fixtures/dialects/bigquery/create_js_function_complex_types.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 4dd3e99e4321a5c62fecad2e1703d9c001452eab142905bbb364c177a361b78b
+_hash: 2a9fb25f37a507a705e3e12b3cb8a48cac10c161235b595779629e6d1577cd46
 file:
   statement:
     create_function_statement:
@@ -12,7 +12,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: qs
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - parameter: foo1
@@ -87,7 +87,7 @@ file:
             data_type_identifier: INT64
           end_angle_bracket: '>'
         end_angle_bracket: '>'
-    - base:
+    - function_definition:
       - keyword: LANGUAGE
       - parameter: js
       - keyword: AS
diff --git a/test/fixtures/dialects/bigquery/create_js_function_deterministic.yml b/test/fixtures/dialects/bigquery/create_js_function_deterministic.yml
index cd9d8a3d5e0..352619b0f42 100644
--- a/test/fixtures/dialects/bigquery/create_js_function_deterministic.yml
+++ b/test/fixtures/dialects/bigquery/create_js_function_deterministic.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: f4691f284b1f46350285c6dc91a444e7e4198352ba0e960b8c0ef8f2d1d9411d
+_hash: 7f2513b695990453252859cc64731f0c691a79916219ee57e43a3bdc67f41aa8
 file:
   statement:
     create_function_statement:
@@ -11,14 +11,14 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: qs
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: y
           data_type:
             data_type_identifier: STRING
           end_bracket: )
-    - base:
+    - function_definition:
       - keyword: DETERMINISTIC
       - keyword: LANGUAGE
       - parameter: js
diff --git a/test/fixtures/dialects/bigquery/create_js_function_options_library_array.yml b/test/fixtures/dialects/bigquery/create_js_function_options_library_array.yml
index 0577671f09b..f6c8545bef6 100644
--- a/test/fixtures/dialects/bigquery/create_js_function_options_library_array.yml
+++ b/test/fixtures/dialects/bigquery/create_js_function_options_library_array.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 65b77a68deca7c57c1220bb182f25aa394e4959608b3b637bfc4789c19537125
+_hash: 74febd125c1eb7fe516c95ef631e854e7c83649e5b3f32a1ec417a20e23d07ce
 file:
   statement:
     create_function_statement:
@@ -12,7 +12,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: parseTopSellers
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: arr_str
@@ -35,7 +35,7 @@ file:
             data_type_identifier: FLOAT64
         - end_angle_bracket: '>'
         end_angle_bracket: '>'
-    - base:
+    - function_definition:
       - keyword: LANGUAGE
       - parameter: js
       - keyword: OPTIONS
diff --git a/test/fixtures/dialects/bigquery/create_js_function_quoted_name.yml b/test/fixtures/dialects/bigquery/create_js_function_quoted_name.yml
index f337fb6e660..afbe5a5f143 100644
--- a/test/fixtures/dialects/bigquery/create_js_function_quoted_name.yml
+++ b/test/fixtures/dialects/bigquery/create_js_function_quoted_name.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: fe1d8471b24961aea092895d11ae6a6bfc12fdfe321c7b29caf58bbbd84f8312
+_hash: a93c7bb9defb272cbc85dcc80feea185c38a95cdfa7c272f4bdbee43d6ac5f61
 file:
   statement:
     create_function_statement:
@@ -12,7 +12,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: qs
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: y
@@ -31,7 +31,7 @@ file:
             data_type_identifier: INT64
           end_angle_bracket: '>'
         end_angle_bracket: '>'
-    - base:
+    - function_definition:
       - keyword: LANGUAGE
       - parameter: js
       - keyword: AS
diff --git a/test/fixtures/dialects/bigquery/create_js_function_simple.yml b/test/fixtures/dialects/bigquery/create_js_function_simple.yml
index 3faedcccee6..baaf3641666 100644
--- a/test/fixtures/dialects/bigquery/create_js_function_simple.yml
+++ b/test/fixtures/dialects/bigquery/create_js_function_simple.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 96f88fcc9be589d88561ea790a1deb4ed794c11d9f0279ece2eedcd28cdc7dcd
+_hash: 72b8e6ab4471c0c42038231a70bd81ba9ec1773a23875d126a643e655e7c0eec
 file:
   statement:
     create_function_statement:
@@ -11,14 +11,14 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: qs
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: y
           data_type:
             data_type_identifier: STRING
           end_bracket: )
-    - base:
+    - function_definition:
       - keyword: LANGUAGE
       - parameter: js
       - keyword: AS
diff --git a/test/fixtures/dialects/bigquery/create_js_function_underscore_name.yml b/test/fixtures/dialects/bigquery/create_js_function_underscore_name.yml
index d4acaa33b94..685025c586e 100644
--- a/test/fixtures/dialects/bigquery/create_js_function_underscore_name.yml
+++ b/test/fixtures/dialects/bigquery/create_js_function_underscore_name.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: bd322689d0aa4899145a6cfdfcd77d3f3e79b3f0266c9c0c5d9de54d501e71b5
+_hash: 6225c8e8fd5fc886b0c3bc51018a8adeece2404bda8db61d56cf8a43b21f27f2
 file:
   statement:
     create_function_statement:
@@ -12,7 +12,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: _qs
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: y
@@ -31,7 +31,7 @@ file:
             data_type_identifier: INT64
           end_angle_bracket: '>'
         end_angle_bracket: '>'
-    - base:
+    - function_definition:
       - keyword: LANGUAGE
       - parameter: js
       - keyword: AS
diff --git a/test/fixtures/dialects/bigquery/create_or_replace_sql_function_any_type.yml b/test/fixtures/dialects/bigquery/create_or_replace_sql_function_any_type.yml
index 69179e8cf76..8dfb2ec74bb 100644
--- a/test/fixtures/dialects/bigquery/create_or_replace_sql_function_any_type.yml
+++ b/test/fixtures/dialects/bigquery/create_or_replace_sql_function_any_type.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 829d94004b6f7732db54b153758beb4d10786c0c2bbdc48424961f25a8d26291
+_hash: 431703b4d0a66ff3e61f9b9ccff63d697d8c1b9de772ece1d0f976b300095a0f
 file:
   statement:
     create_function_statement:
@@ -13,14 +13,14 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: qs
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - parameter: y
         - keyword: ANY
         - keyword: TYPE
         - end_bracket: )
-    - base:
+    - function_definition:
         keyword: AS
         bracketed:
           start_bracket: (
diff --git a/test/fixtures/dialects/bigquery/create_temp_function_with_select.yml b/test/fixtures/dialects/bigquery/create_temp_function_with_select.yml
index 11010ceeaf8..78f75dd57a8 100644
--- a/test/fixtures/dialects/bigquery/create_temp_function_with_select.yml
+++ b/test/fixtures/dialects/bigquery/create_temp_function_with_select.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 5f0bdf6abac2afed58fb03c667615a345bd0e9eeb99001180b1238f9008c7c57
+_hash: a1b9bcf079dc470b3b5e80d77b9aa62a8b86bd91015b60e566e315b88f3e37b3
 file:
   statement:
     create_function_statement:
@@ -12,7 +12,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: URLDECODE
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: url
@@ -22,7 +22,7 @@ file:
     - keyword: RETURNS
     - data_type:
         data_type_identifier: STRING
-    - base:
+    - function_definition:
         keyword: AS
         bracketed:
           start_bracket: (
diff --git a/test/fixtures/dialects/mysql/delimiter_function.yml b/test/fixtures/dialects/mysql/delimiter_function.yml
index 8a0ffa9da1d..8bf330338b9 100644
--- a/test/fixtures/dialects/mysql/delimiter_function.yml
+++ b/test/fixtures/dialects/mysql/delimiter_function.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 3d097ef2368b6e68ffe0089c51c104a0f90e44f5a87d64e363152538ea1615a5
+_hash: 0e22a413b43bc00247b9355906363c6c59c0eff2043eb579436d45560bc4474a
 file:
 - statement:
     delimiter_statement:
@@ -15,7 +15,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         identifier: '`add`'
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: test
@@ -34,7 +34,7 @@ file:
       - keyword: SQL
       - keyword: SECURITY
       - keyword: DEFINER
-    - base:
+    - function_definition:
         transaction_statement:
           keyword: BEGIN
           statement:
diff --git a/test/fixtures/dialects/mysql/delimiter_procedure.yml b/test/fixtures/dialects/mysql/delimiter_procedure.yml
index 2d2e70fb56a..ee969fa7aa7 100644
--- a/test/fixtures/dialects/mysql/delimiter_procedure.yml
+++ b/test/fixtures/dialects/mysql/delimiter_procedure.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: e6a883be9385ea8549b194c9e8fb3b93bf686be5ef162fd33520affe7627817d
+_hash: 1f8b24338b24f7bcb5dcc756c24474049fe5e87953e2b2b4687b791fe7abeb77
 file:
 - statement:
     delimiter_statement:
@@ -15,7 +15,7 @@ file:
     - keyword: PROCEDURE
     - function_name:
         identifier: '`testprocedure`'
-    - base:
+    - procedure_parameter_list:
         bracketed:
           start_bracket: (
           parameter: test
@@ -31,7 +31,7 @@ file:
       - keyword: SQL
       - keyword: SECURITY
       - keyword: DEFINER
-    - base:
+    - function_definition:
         transaction_statement:
           keyword: BEGIN
           statement:
diff --git a/test/fixtures/dialects/mysql/function_comment.yml b/test/fixtures/dialects/mysql/function_comment.yml
index a59afdb179b..9ceeae4b89b 100644
--- a/test/fixtures/dialects/mysql/function_comment.yml
+++ b/test/fixtures/dialects/mysql/function_comment.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 598515dd90adb0c3596303b4c4ca61ba08ef798e0d321c37451135fffa7af73c
+_hash: 5d9935583538b830106393572b5f9c6d3e47da1853793ebfa68bcf36ed1b75b1
 file:
   statement:
     create_function_statement:
@@ -11,7 +11,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         identifier: '`testfunction`'
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: var1
@@ -26,7 +26,7 @@ file:
         literal: "'this is a comment'"
     - characteristic_statement:
         keyword: DETERMINISTIC
-    - base:
+    - function_definition:
         transaction_statement:
           keyword: BEGIN
           statement:
diff --git a/test/fixtures/dialects/mysql/function_definer.yml b/test/fixtures/dialects/mysql/function_definer.yml
index c9b3717c478..7de186a3b3e 100644
--- a/test/fixtures/dialects/mysql/function_definer.yml
+++ b/test/fixtures/dialects/mysql/function_definer.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 825703d9ccbe3ebd7abb438da2ca4861c507cfc4911c31bd0638a260db386d5b
+_hash: 62acb49cd406b6de44feae6687de9fddfe89613bd6f4e4b9901849b75e7c2d59
 file:
 - statement:
     create_function_statement:
@@ -18,7 +18,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         identifier: '`testfunction`'
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           end_bracket: )
@@ -27,7 +27,7 @@ file:
         data_type_identifier: longtext
     - characteristic_statement:
         keyword: DETERMINISTIC
-    - base:
+    - function_definition:
         transaction_statement:
           keyword: BEGIN
           statement:
diff --git a/test/fixtures/dialects/mysql/function_modifies_sql.yml b/test/fixtures/dialects/mysql/function_modifies_sql.yml
index 4faaefa3022..c2fca33f952 100644
--- a/test/fixtures/dialects/mysql/function_modifies_sql.yml
+++ b/test/fixtures/dialects/mysql/function_modifies_sql.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: c68bba1058bb7a958186d98c48d9f7aa693712a196a0c5aa9e11c71d6903227b
+_hash: ab198ec62164a761f21882f3341f087a8f29e02fad4c5c7e8b705d9963915df8
 file:
 - statement:
     create_function_statement:
@@ -11,7 +11,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         identifier: '`add`'
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: test
@@ -26,7 +26,7 @@ file:
       - keyword: MODIFIES
       - keyword: SQL
       - keyword: DATA
-    - base:
+    - function_definition:
         transaction_statement:
           keyword: BEGIN
           statement:
diff --git a/test/fixtures/dialects/mysql/function_no_sql.yml b/test/fixtures/dialects/mysql/function_no_sql.yml
index e03620990d8..e92f9e3f199 100644
--- a/test/fixtures/dialects/mysql/function_no_sql.yml
+++ b/test/fixtures/dialects/mysql/function_no_sql.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: a799194edad44255b723b20fd6c75874e67b505e8dff521d708404f996d4e56e
+_hash: b93eb1443e0f7daf816911bd9a0da375aecdc6f9fd468caf832b04d48a7faa0f
 file:
 - statement:
     create_function_statement:
@@ -11,7 +11,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         identifier: '`add`'
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: test
@@ -25,7 +25,7 @@ file:
       - keyword: DETERMINISTIC
       - keyword: 'NO'
       - keyword: SQL
-    - base:
+    - function_definition:
         transaction_statement:
           keyword: BEGIN
           statement:
diff --git a/test/fixtures/dialects/mysql/function_notdeterministic.yml b/test/fixtures/dialects/mysql/function_notdeterministic.yml
index 16a346d71a1..9d4044eb8ad 100644
--- a/test/fixtures/dialects/mysql/function_notdeterministic.yml
+++ b/test/fixtures/dialects/mysql/function_notdeterministic.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 9fc5ab01cb2cd99ad09d51434e626f37b48658a1743780d21ff69a7488aa6f34
+_hash: 671d427403e8964f85f34390b78d75f7b478e20a004c92460deb6d2c587ebcd3
 file:
 - statement:
     create_function_statement:
@@ -11,7 +11,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         identifier: '`add`'
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: test
@@ -24,7 +24,7 @@ file:
     - characteristic_statement:
       - keyword: NOT
       - keyword: DETERMINISTIC
-    - base:
+    - function_definition:
         transaction_statement:
           keyword: BEGIN
           statement:
diff --git a/test/fixtures/dialects/mysql/function_reads_sql.yml b/test/fixtures/dialects/mysql/function_reads_sql.yml
index c3a87d35642..969ebf1580b 100644
--- a/test/fixtures/dialects/mysql/function_reads_sql.yml
+++ b/test/fixtures/dialects/mysql/function_reads_sql.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: fa327194a7113d82df73d66820aa752da135bc4e366f8eec5a504280ce0675a8
+_hash: e7aa4a47c4b8238baac08bc11a0ac1f2bc4c5c96d8b49badf6489a661c606f91
 file:
 - statement:
     create_function_statement:
@@ -11,7 +11,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         identifier: '`add`'
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: test
@@ -26,7 +26,7 @@ file:
       - keyword: READS
       - keyword: SQL
       - keyword: DATA
-    - base:
+    - function_definition:
         transaction_statement:
           keyword: BEGIN
           statement:
diff --git a/test/fixtures/dialects/mysql/function_sql_security_definer.yml b/test/fixtures/dialects/mysql/function_sql_security_definer.yml
index f31582a2e16..be26b887993 100644
--- a/test/fixtures/dialects/mysql/function_sql_security_definer.yml
+++ b/test/fixtures/dialects/mysql/function_sql_security_definer.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 5ba85d8033d97a052032ddad3a3084a34b1e7e604a5532e7498a1e4c7c6fa258
+_hash: 0cebc1ca03c0db47673cc5b441dd87061a5f3e8732902acfa780548497abd294
 file:
 - statement:
     create_function_statement:
@@ -11,7 +11,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         identifier: '`add`'
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: test
@@ -26,7 +26,7 @@ file:
       - keyword: SQL
       - keyword: SECURITY
       - keyword: DEFINER
-    - base:
+    - function_definition:
         transaction_statement:
           keyword: BEGIN
           statement:
diff --git a/test/fixtures/dialects/mysql/function_sql_security_invoker.yml b/test/fixtures/dialects/mysql/function_sql_security_invoker.yml
index 8945768a72a..7e2c5879de6 100644
--- a/test/fixtures/dialects/mysql/function_sql_security_invoker.yml
+++ b/test/fixtures/dialects/mysql/function_sql_security_invoker.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 7862c9d017d7a42d1837d731184f1ac4e709f55c810c6b0c2318c4fd2ac3173e
+_hash: 8efdbb6d099da8db6f95959a9e3c33c6d11375dbdc085fc6603dcb41715b88fc
 file:
 - statement:
     create_function_statement:
@@ -11,7 +11,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         identifier: '`add`'
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: test
@@ -26,7 +26,7 @@ file:
       - keyword: SQL
       - keyword: SECURITY
       - keyword: INVOKER
-    - base:
+    - function_definition:
         transaction_statement:
           keyword: BEGIN
           statement:
diff --git a/test/fixtures/dialects/mysql/procedure_definer.yml b/test/fixtures/dialects/mysql/procedure_definer.yml
index 7c0f2616db6..05f3252f44d 100644
--- a/test/fixtures/dialects/mysql/procedure_definer.yml
+++ b/test/fixtures/dialects/mysql/procedure_definer.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 7a203bebbd4da82117b8e84656c2011f0c1c2f35fad9d45cdd8ad97b68ba016b
+_hash: a84f68a7a15546561ae5ac2563ab59c0ba1e272b2ed819972e2422d84909ebd7
 file:
   statement:
     create_procedure_statement:
@@ -18,11 +18,11 @@ file:
     - keyword: PROCEDURE
     - function_name:
         identifier: '`testprocedure`'
-    - base:
+    - procedure_parameter_list:
         bracketed:
           start_bracket: (
           end_bracket: )
-    - base:
+    - function_definition:
         transaction_statement:
           keyword: BEGIN
           statement:
diff --git a/test/fixtures/dialects/mysql/procedure_in_param.yml b/test/fixtures/dialects/mysql/procedure_in_param.yml
index 252a814825b..0eb3859e91b 100644
--- a/test/fixtures/dialects/mysql/procedure_in_param.yml
+++ b/test/fixtures/dialects/mysql/procedure_in_param.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: fbf003bc53534ec30aee2c4fe021b3f3254188d257916c357542389405d70578
+_hash: 405c8a418e307a64cb47dd492c352606718efe94caa66caf636a8ec0bd431d54
 file:
   statement:
     create_procedure_statement:
@@ -11,7 +11,7 @@ file:
     - keyword: PROCEDURE
     - function_name:
         identifier: '`testprocedure`'
-    - base:
+    - procedure_parameter_list:
         bracketed:
           start_bracket: (
           parameter_direction: in
@@ -19,7 +19,7 @@ file:
           data_type:
             data_type_identifier: int
           end_bracket: )
-    - base:
+    - function_definition:
         transaction_statement:
           keyword: BEGIN
           statement:
diff --git a/test/fixtures/dialects/mysql/procedure_inout_param.yml b/test/fixtures/dialects/mysql/procedure_inout_param.yml
index f7d491a8d60..d842d0c0419 100644
--- a/test/fixtures/dialects/mysql/procedure_inout_param.yml
+++ b/test/fixtures/dialects/mysql/procedure_inout_param.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 0dcc669cca11e8400b6914d172b71d1c83a349f2c89a41557cd78df4bb523337
+_hash: 1692eb3ed371c8c3cab9fcf8f51d84b36022e88d09062f880a9dbccc8fc0823b
 file:
   statement:
     create_procedure_statement:
@@ -11,7 +11,7 @@ file:
     - keyword: PROCEDURE
     - function_name:
         identifier: '`testprocedure`'
-    - base:
+    - procedure_parameter_list:
         bracketed:
           start_bracket: (
           parameter_direction: inout
@@ -19,7 +19,7 @@ file:
           data_type:
             data_type_identifier: int
           end_bracket: )
-    - base:
+    - function_definition:
         transaction_statement:
           keyword: BEGIN
           statement:
diff --git a/test/fixtures/dialects/mysql/procedure_out_param.yml b/test/fixtures/dialects/mysql/procedure_out_param.yml
index 188fd9e2889..49fd4cc8680 100644
--- a/test/fixtures/dialects/mysql/procedure_out_param.yml
+++ b/test/fixtures/dialects/mysql/procedure_out_param.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 0b45ba47e47d5b5737c0e25902c4a3c173c3d8e70f820df31d652c83f65b99b5
+_hash: cd25f03fcda7508e8c13da26410db84ecffa169a8b8bf9b60fba2036c4d0deff
 file:
   statement:
     create_procedure_statement:
@@ -11,7 +11,7 @@ file:
     - keyword: PROCEDURE
     - function_name:
         identifier: '`testprocedure`'
-    - base:
+    - procedure_parameter_list:
         bracketed:
           start_bracket: (
           parameter_direction: out
@@ -19,7 +19,7 @@ file:
           data_type:
             data_type_identifier: int
           end_bracket: )
-    - base:
+    - function_definition:
         transaction_statement:
           keyword: BEGIN
           statement:
diff --git a/test/fixtures/dialects/postgres/postgres_alter_function.yml b/test/fixtures/dialects/postgres/postgres_alter_function.yml
index 894c15939fa..6e764b87adb 100644
--- a/test/fixtures/dialects/postgres/postgres_alter_function.yml
+++ b/test/fixtures/dialects/postgres/postgres_alter_function.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 3d7f4385ee6cf816a55a9f5cfc772d5936328055f4d4b156e0a39b30e0c426c9
+_hash: b34eb8e8919a4cee40f68d0f1247a983c3eb86515034a200aa1d8d56599899aa
 file:
 - statement:
     alter_function_statement:
@@ -21,7 +21,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -168,7 +168,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: arg1
@@ -190,7 +190,7 @@ file:
         identifier: public
         dot: .
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: arg1
@@ -223,7 +223,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -275,7 +275,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -307,7 +307,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
@@ -344,7 +344,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: arg1
@@ -441,7 +441,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -460,7 +460,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -482,7 +482,7 @@ file:
         identifier: public
         dot: .
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -502,7 +502,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
@@ -517,7 +517,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
@@ -533,7 +533,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: arg
@@ -549,7 +549,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: arg
@@ -585,7 +585,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -604,7 +604,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -645,7 +645,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: arg
@@ -662,7 +662,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: arg
@@ -701,7 +701,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -723,7 +723,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -769,7 +769,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -789,7 +789,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -854,7 +854,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - parameter: arg1
@@ -879,7 +879,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - parameter: arg1
@@ -915,7 +915,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: arg
@@ -943,7 +943,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
@@ -981,7 +981,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -1000,7 +1000,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
@@ -1040,7 +1040,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -1060,7 +1060,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -1101,7 +1101,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - parameter: arg1
@@ -1122,7 +1122,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - parameter: arg1
@@ -1165,7 +1165,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - parameter: arg1
@@ -1192,7 +1192,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - parameter: arg1
@@ -1242,7 +1242,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -1261,7 +1261,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -1330,7 +1330,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -1351,7 +1351,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -1437,7 +1437,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - parameter: arg1
@@ -1461,7 +1461,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
@@ -1480,7 +1480,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -1502,7 +1502,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -1533,7 +1533,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
@@ -1553,7 +1553,7 @@ file:
         identifier: public
         dot: .
         function_name_identifier: fn
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
diff --git a/test/fixtures/dialects/postgres/postgres_alter_table.yml b/test/fixtures/dialects/postgres/postgres_alter_table.yml
index d1ed4333de3..c75bcc27833 100644
--- a/test/fixtures/dialects/postgres/postgres_alter_table.yml
+++ b/test/fixtures/dialects/postgres/postgres_alter_table.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: bc77d03157e3ce8516d662706bca4f3cc3a7054cb0db202cc8bb90925970a146
+_hash: b31c436d97c3b61bdcc3ef8623170e7c01dc01a620d533fd07a01113847d3086
 file:
 - statement:
     alter_table_statement:
@@ -943,7 +943,7 @@ file:
     - comma: ','
     - alter_table_action_segment:
         keyword: ADD
-        base:
+        table_constraint_segment:
         - keyword: CONSTRAINT
         - object_reference:
             identifier: distributors_pkey
@@ -964,7 +964,7 @@ file:
     - parameter: measurement_y2016m07
     - keyword: FOR
     - keyword: VALUES
-    - base:
+    - partition_bound_segment:
       - keyword: FROM
       - bracketed:
           start_bracket: (
@@ -989,7 +989,7 @@ file:
     - parameter: cities_ab
     - keyword: FOR
     - keyword: VALUES
-    - base:
+    - partition_bound_segment:
         keyword: IN
         bracketed:
         - start_bracket: (
@@ -1011,7 +1011,7 @@ file:
     - parameter: orders_p4
     - keyword: FOR
     - keyword: VALUES
-    - base:
+    - partition_bound_segment:
         keyword: WITH
         bracketed:
         - start_bracket: (
diff --git a/test/fixtures/dialects/postgres/postgres_comment_on.yml b/test/fixtures/dialects/postgres/postgres_comment_on.yml
index 93965bb33b5..86585beb65c 100644
--- a/test/fixtures/dialects/postgres/postgres_comment_on.yml
+++ b/test/fixtures/dialects/postgres/postgres_comment_on.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 842f9ce28e2eb10dc6e532b73d49b0bb48d4fdef2bfbcc78b53943e432e5bd3c
+_hash: 7c90e4bdbadff9a7fecebca8a640802da706cc7761e116f2cc81ab9e85e30697
 file:
 - statement:
     comment_on_statement:
@@ -197,7 +197,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: my_function
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
diff --git a/test/fixtures/dialects/postgres/postgres_create_dollar_quoted_function.yml b/test/fixtures/dialects/postgres/postgres_create_dollar_quoted_function.yml
index 41121ddeaf9..b028761cefa 100644
--- a/test/fixtures/dialects/postgres/postgres_create_dollar_quoted_function.yml
+++ b/test/fixtures/dialects/postgres/postgres_create_dollar_quoted_function.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 27176df70e32a3a08f809afdfec755794268c9da7dcbdc5b8235d787c6ce4a6c
+_hash: 961658295b93671ad1cb2a3df0d35c9de55d1b3d3031d9f5bd49d9992b6773ed
 file:
   statement:
     create_function_statement:
@@ -11,7 +11,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: foo
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -23,7 +23,7 @@ file:
     - keyword: RETURNS
     - data_type:
         keyword: integer
-    - base:
+    - function_definition:
         keyword: AS
         literal: $$ select $1 + $2; $$
         language_clause:
diff --git a/test/fixtures/dialects/postgres/postgres_create_function.yml b/test/fixtures/dialects/postgres/postgres_create_function.yml
index 512f14eaa35..bfd1b894df1 100644
--- a/test/fixtures/dialects/postgres/postgres_create_function.yml
+++ b/test/fixtures/dialects/postgres/postgres_create_function.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 38740d06578e7fc57aef6895215bbef34bca3af6a3cdde9cf9bda621f611f3ae
+_hash: 883ae124c9672f9d02813f810fcfa80649a0ddf4d188972162c323a19b9b45b8
 file:
 - statement:
     create_function_statement:
@@ -11,7 +11,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: add
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -23,7 +23,7 @@ file:
     - keyword: RETURNS
     - data_type:
         keyword: integer
-    - base:
+    - function_definition:
         keyword: AS
         literal: "'select $1 + $2;'"
         language_clause:
@@ -38,7 +38,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: increment
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: i
@@ -48,7 +48,7 @@ file:
     - keyword: RETURNS
     - data_type:
         keyword: integer
-    - base:
+    - function_definition:
       - keyword: AS
       - literal: "'\n    BEGIN\n        RETURN i + 1;\n    END;\n'"
       - language_clause:
@@ -64,7 +64,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: increment
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: i
@@ -74,7 +74,7 @@ file:
     - keyword: RETURNS
     - data_type:
         keyword: integer
-    - base:
+    - function_definition:
       - keyword: AS
       - literal: "'\n    BEGIN\n        RETURN i + 1;\n    END;\n'"
       - language_clause:
@@ -108,7 +108,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: increment
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: i
@@ -118,7 +118,7 @@ file:
     - keyword: RETURNS
     - data_type:
         keyword: integer
-    - base:
+    - function_definition:
       - keyword: AS
       - literal: "'C:\\\\my_file.c'"
       - comma: ','
@@ -161,7 +161,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: increment
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: i
@@ -171,7 +171,7 @@ file:
     - keyword: RETURNS
     - data_type:
         keyword: integer
-    - base:
+    - function_definition:
       - keyword: PARALLEL
       - keyword: UNSAFE
       - keyword: AS
@@ -188,7 +188,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: add
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -200,7 +200,7 @@ file:
     - keyword: RETURNS
     - data_type:
         keyword: integer
-    - base:
+    - function_definition:
       - keyword: AS
       - literal: "'select $1 + $2;'"
       - language_clause:
@@ -221,7 +221,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: increment
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: i
@@ -231,7 +231,7 @@ file:
     - keyword: RETURNS
     - data_type:
         keyword: integer
-    - base:
+    - function_definition:
         keyword: AS
         literal: "$$\n        BEGIN\n                RETURN i + 1;\n        END;\n\
           $$"
@@ -245,7 +245,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: dup
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - keyword: in
@@ -262,7 +262,7 @@ file:
         - data_type:
             keyword: text
         - end_bracket: )
-    - base:
+    - function_definition:
         keyword: AS
         literal: "$$ SELECT $1, CAST($1 AS text) || ' is text' $$"
         language_clause:
@@ -313,7 +313,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: dup
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
@@ -322,7 +322,7 @@ file:
     - keyword: RETURNS
     - data_type:
         data_type_identifier: dup_result
-    - base:
+    - function_definition:
         keyword: AS
         literal: "$$ SELECT $1, CAST($1 AS text) || ' is text' $$"
         language_clause:
@@ -357,7 +357,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: dup
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
@@ -375,7 +375,7 @@ file:
       - data_type:
           keyword: text
       - end_bracket: )
-    - base:
+    - function_definition:
         keyword: AS
         literal: "$$ SELECT $1, CAST($1 AS text) || ' is text' $$"
         language_clause:
@@ -410,7 +410,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: check_password
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - parameter: uname
@@ -424,7 +424,7 @@ file:
     - keyword: RETURNS
     - data_type:
         keyword: BOOLEAN
-    - base:
+    - function_definition:
       - keyword: AS
       - literal: "$$\nDECLARE passed BOOLEAN;\nBEGIN\n        SELECT  (pwd = $2) INTO\
           \ passed\n        FROM    pwds\n        WHERE   username = $1;\n\n     \
@@ -452,7 +452,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: check_password
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - parameter: uname
@@ -466,7 +466,7 @@ file:
     - keyword: RETURNS
     - data_type:
         keyword: BOOLEAN
-    - base:
+    - function_definition:
       - keyword: AS
       - literal: "$$\nDECLARE passed BOOLEAN;\nBEGIN\n        SELECT  (pwd = $2) INTO\
           \ passed\n        FROM    pwds\n        WHERE   username = $1;\n\n     \
@@ -485,7 +485,7 @@ file:
     - keyword: FUNCTION
     - object_reference:
         identifier: check_password
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - parameter: uname
@@ -508,7 +508,7 @@ file:
     - keyword: FUNCTION
     - object_reference:
         identifier: check_password
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - parameter: uname
@@ -537,7 +537,7 @@ file:
         identifier: public
         dot: .
         function_name_identifier: setof_test
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           end_bracket: )
@@ -545,7 +545,7 @@ file:
     - keyword: SETOF
     - data_type:
         keyword: text
-    - base:
+    - function_definition:
       - language_clause:
           keyword: LANGUAGE
           parameter: sql
@@ -564,7 +564,7 @@ file:
         identifier: public
         dot: .
         function_name_identifier: foo
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - parameter: _a
@@ -578,7 +578,7 @@ file:
     - keyword: RETURNS
     - data_type:
         keyword: FLOAT
-    - base:
+    - function_definition:
       - keyword: AS
       - literal: "$$\n  RETURN 0.0\n$$"
       - language_clause:
@@ -594,7 +594,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: _add
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -606,7 +606,7 @@ file:
     - keyword: RETURNS
     - data_type:
         keyword: integer
-    - base:
+    - function_definition:
         keyword: AS
         literal: "'select $1 + $2;'"
         language_clause:
@@ -619,7 +619,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: _$add
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -631,7 +631,7 @@ file:
     - keyword: RETURNS
     - data_type:
         keyword: integer
-    - base:
+    - function_definition:
         keyword: AS
         literal: "'select $1 + $2;'"
         language_clause:
diff --git a/test/fixtures/dialects/postgres/postgres_create_procedure.yml b/test/fixtures/dialects/postgres/postgres_create_procedure.yml
index 5d0b02c3899..578ed55c5aa 100644
--- a/test/fixtures/dialects/postgres/postgres_create_procedure.yml
+++ b/test/fixtures/dialects/postgres/postgres_create_procedure.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: ae4af36aa481b4a94889684e06ddd83cc6f7d8e5f94a691d0f0ae56433e732da
+_hash: c3b4c04072380df8946cd93f66d490b70ad0b3f3245887aef53bbaa17b0c731e
 file:
 - statement:
     create_procedure_statement:
@@ -13,14 +13,14 @@ file:
     - keyword: PROCEDURE
     - function_name:
         function_name_identifier: create_account
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: _account_uuid
           data_type:
             keyword: UUID
           end_bracket: )
-    - base:
+    - function_definition:
         keyword: AS
         literal: "$$\nBEGIN\n    RETURN;\nEND;\n$$"
         language_clause:
@@ -33,7 +33,7 @@ file:
     - keyword: PROCEDURE
     - function_name:
         function_name_identifier: insert_data
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - parameter: a
@@ -44,7 +44,7 @@ file:
         - data_type:
             keyword: integer
         - end_bracket: )
-    - base:
+    - function_definition:
         language_clause:
           keyword: LANGUAGE
           parameter: SQL
diff --git a/test/fixtures/dialects/postgres/postgres_create_table.yml b/test/fixtures/dialects/postgres/postgres_create_table.yml
index c3c6cba64e7..d9a8a6082cc 100644
--- a/test/fixtures/dialects/postgres/postgres_create_table.yml
+++ b/test/fixtures/dialects/postgres/postgres_create_table.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 97264f8d61d2c75949200de92737617871092e995a14997c2c85cf3fb004ac99
+_hash: c0b9968260c0cbb2f0d613a047dc6f42e80714c38b8fd17f3cc0a9b66bffa857
 file:
 - statement:
     create_table_statement:
@@ -663,7 +663,7 @@ file:
         end_bracket: )
     - keyword: FOR
     - keyword: VALUES
-    - base:
+    - partition_bound_segment:
       - keyword: FROM
       - bracketed:
           start_bracket: (
@@ -689,7 +689,7 @@ file:
         identifier: measurement_year_month
     - keyword: FOR
     - keyword: VALUES
-    - base:
+    - partition_bound_segment:
       - keyword: FROM
       - bracketed:
         - start_bracket: (
@@ -723,7 +723,7 @@ file:
         identifier: measurement_year_month
     - keyword: FOR
     - keyword: VALUES
-    - base:
+    - partition_bound_segment:
       - keyword: FROM
       - bracketed:
         - start_bracket: (
@@ -755,7 +755,7 @@ file:
         identifier: measurement_year_month
     - keyword: FOR
     - keyword: VALUES
-    - base:
+    - partition_bound_segment:
       - keyword: FROM
       - bracketed:
         - start_bracket: (
@@ -787,7 +787,7 @@ file:
         identifier: measurement_year_month
     - keyword: FOR
     - keyword: VALUES
-    - base:
+    - partition_bound_segment:
       - keyword: FROM
       - bracketed:
         - start_bracket: (
@@ -837,7 +837,7 @@ file:
         end_bracket: )
     - keyword: FOR
     - keyword: VALUES
-    - base:
+    - partition_bound_segment:
         keyword: IN
         bracketed:
         - start_bracket: (
@@ -878,7 +878,7 @@ file:
         end_bracket: )
     - keyword: FOR
     - keyword: VALUES
-    - base:
+    - partition_bound_segment:
         keyword: IN
         bracketed:
         - start_bracket: (
@@ -909,7 +909,7 @@ file:
         identifier: cities_ab
     - keyword: FOR
     - keyword: VALUES
-    - base:
+    - partition_bound_segment:
       - keyword: FROM
       - bracketed:
           start_bracket: (
@@ -935,7 +935,7 @@ file:
         identifier: orders
     - keyword: FOR
     - keyword: VALUES
-    - base:
+    - partition_bound_segment:
         keyword: WITH
         bracketed:
         - start_bracket: (
@@ -958,7 +958,7 @@ file:
         identifier: orders
     - keyword: FOR
     - keyword: VALUES
-    - base:
+    - partition_bound_segment:
         keyword: WITH
         bracketed:
         - start_bracket: (
@@ -981,7 +981,7 @@ file:
         identifier: orders
     - keyword: FOR
     - keyword: VALUES
-    - base:
+    - partition_bound_segment:
         keyword: WITH
         bracketed:
         - start_bracket: (
@@ -1004,7 +1004,7 @@ file:
         identifier: orders
     - keyword: FOR
     - keyword: VALUES
-    - base:
+    - partition_bound_segment:
         keyword: WITH
         bracketed:
         - start_bracket: (
diff --git a/test/fixtures/dialects/postgres/postgres_create_zero_argument_function.yml b/test/fixtures/dialects/postgres/postgres_create_zero_argument_function.yml
index c8b3f4619ff..30e2e1deb3b 100644
--- a/test/fixtures/dialects/postgres/postgres_create_zero_argument_function.yml
+++ b/test/fixtures/dialects/postgres/postgres_create_zero_argument_function.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: d1ea3c063fd102c0b50cf42a6c23646e04541ded5e85347ddb13e66ed9293830
+_hash: ab89cab1a226ed635f189ce538227d920c733882db4426a277b17bb5ad249b69
 file:
   statement:
     create_function_statement:
@@ -13,14 +13,14 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: a
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           end_bracket: )
     - keyword: RETURNS
     - data_type:
         keyword: integer
-    - base:
+    - function_definition:
         keyword: AS
         literal: "$$\n    SELECT 1;\n$$"
         language_clause:
diff --git a/test/fixtures/dialects/postgres/postgres_drop_function.yml b/test/fixtures/dialects/postgres/postgres_drop_function.yml
index 2841f0661fe..f4da47bc5d4 100644
--- a/test/fixtures/dialects/postgres/postgres_drop_function.yml
+++ b/test/fixtures/dialects/postgres/postgres_drop_function.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: b43b58e3cc8010a31884e461bc505592c46994abf42a3d3057833a6c802a2fd8
+_hash: af4657c34d959e21cd5ac7fa31e0be4aed673cb2baf503b2a9b1431c2270f063
 file:
 - statement:
     drop_function_statement:
@@ -11,7 +11,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: sqrt
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
@@ -24,7 +24,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: sqrt
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
@@ -33,7 +33,7 @@ file:
     - comma: ','
     - function_name:
         function_name_identifier: sqrt
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
@@ -53,7 +53,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: update_employee_salaries
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           end_bracket: )
@@ -66,7 +66,7 @@ file:
     - keyword: EXISTS
     - function_name:
         function_name_identifier: foo
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - keyword: IN
diff --git a/test/fixtures/dialects/postgres/postgres_drop_procedure.yml b/test/fixtures/dialects/postgres/postgres_drop_procedure.yml
index 77b6e9c0f57..cb599de8009 100644
--- a/test/fixtures/dialects/postgres/postgres_drop_procedure.yml
+++ b/test/fixtures/dialects/postgres/postgres_drop_procedure.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: b00221d5457567ff2b2311c96ce3cdffc9afd70fac0ceaffc8ccf313e18190a1
+_hash: 9412d5773862ec85a0ca1370edef125b7c70bf59d502b73cf9419c88241353e6
 file:
 - statement:
     drop_procedure_statement:
@@ -11,7 +11,7 @@ file:
     - keyword: PROCEDURE
     - function_name:
         function_name_identifier: do_db_maintenance
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           end_bracket: )
@@ -29,7 +29,7 @@ file:
     - keyword: procedure
     - function_name:
         function_name_identifier: insert_actor
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
@@ -42,7 +42,7 @@ file:
     - keyword: procedure
     - function_name:
         function_name_identifier: insert_actor
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -79,7 +79,7 @@ file:
     - keyword: procedure
     - function_name:
         function_name_identifier: delete_actor
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           keyword: in
@@ -94,7 +94,7 @@ file:
     - keyword: procedure
     - function_name:
         function_name_identifier: insert_actor
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
@@ -106,7 +106,7 @@ file:
     - comma: ','
     - function_name:
         function_name_identifier: insert_actor2
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - data_type:
diff --git a/test/fixtures/dialects/snowflake/describe_statements.yml b/test/fixtures/dialects/snowflake/describe_statements.yml
index 320a0cfe4d1..de9ed8b5181 100644
--- a/test/fixtures/dialects/snowflake/describe_statements.yml
+++ b/test/fixtures/dialects/snowflake/describe_statements.yml
@@ -3,22 +3,22 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 8c884e8b32379f7fd5c7ce717acb8aeb4da193dd9436dbb10024992e6d447229
+_hash: e4ccba07f84315656aae040f39b983e98e1b0624712ac9861d24b4d9c42e3b0d
 file:
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: RESULT
     - literal: "'f2f07bdb-6a08-4689-9ad8-a1ba968a44b6'"
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: RESULT
     - literal: "'f2f07bdb-6a08-4689-9ad8-a1ba968a44b6'"
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: RESULT
     - keyword: LAST_QUERY_ID
@@ -27,7 +27,7 @@ file:
         end_bracket: )
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: RESULT
     - keyword: LAST_QUERY_ID
@@ -36,7 +36,7 @@ file:
         end_bracket: )
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: NETWORK
     - keyword: POLICY
@@ -44,7 +44,7 @@ file:
         identifier: my_policy
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: NETWORK
     - keyword: POLICY
@@ -52,21 +52,21 @@ file:
         identifier: my_policy
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: SHARE
     - object_reference:
         identifier: sales_s
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: SHARE
     - object_reference:
         identifier: sales_s
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: SHARE
     - object_reference:
@@ -75,7 +75,7 @@ file:
       - identifier: sales_s
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: SHARE
     - object_reference:
@@ -84,63 +84,63 @@ file:
       - identifier: sales_s
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: USER
     - object_reference:
         identifier: test_user
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: USER
     - object_reference:
         identifier: test_user
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: WAREHOUSE
     - object_reference:
         identifier: my_warehouse
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: WAREHOUSE
     - object_reference:
         identifier: my_warehouse
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: WAREHOUSE
     - object_reference:
         identifier: '"my warehouse"'
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: WAREHOUSE
     - object_reference:
         identifier: '"my warehouse"'
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: DATABASE
     - database_reference:
         identifier: my_database
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: DATABASE
     - database_reference:
         identifier: my_database
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: API
     - keyword: INTEGRATION
@@ -148,7 +148,7 @@ file:
         identifier: my_integration
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: API
     - keyword: INTEGRATION
@@ -156,7 +156,7 @@ file:
         identifier: my_integration
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: NOTIFICATION
     - keyword: INTEGRATION
@@ -164,7 +164,7 @@ file:
         identifier: my_integration
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: NOTIFICATION
     - keyword: INTEGRATION
@@ -172,7 +172,7 @@ file:
         identifier: my_integration
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: SECURITY
     - keyword: INTEGRATION
@@ -180,7 +180,7 @@ file:
         identifier: my_integration
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: SECURITY
     - keyword: INTEGRATION
@@ -188,7 +188,7 @@ file:
         identifier: my_integration
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: STORAGE
     - keyword: INTEGRATION
@@ -196,7 +196,7 @@ file:
         identifier: my_integration
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: STORAGE
     - keyword: INTEGRATION
@@ -204,7 +204,7 @@ file:
         identifier: my_integration
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: SESSION
     - keyword: POLICY
@@ -212,7 +212,7 @@ file:
         identifier: my_session_policy
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: SESSION
     - keyword: POLICY
@@ -220,21 +220,21 @@ file:
         identifier: my_session_policy
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: SCHEMA
     - schema_reference:
         identifier: my_schema
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: SCHEMA
     - schema_reference:
         identifier: my_schema
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: SCHEMA
     - schema_reference:
@@ -243,7 +243,7 @@ file:
       - identifier: my_schema
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: SCHEMA
     - schema_reference:
@@ -252,21 +252,21 @@ file:
       - identifier: my_schema
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: TABLE
     - table_reference:
         identifier: my_table
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: TABLE
     - table_reference:
         identifier: my_table
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: TABLE
     - table_reference:
@@ -277,7 +277,7 @@ file:
       - identifier: my_table
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: TABLE
     - table_reference:
@@ -288,7 +288,7 @@ file:
       - identifier: my_table
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: TABLE
     - table_reference:
@@ -299,7 +299,7 @@ file:
     - keyword: COLUMNS
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: TABLE
     - table_reference:
@@ -310,7 +310,7 @@ file:
     - keyword: COLUMNS
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: TABLE
     - table_reference:
@@ -321,7 +321,7 @@ file:
     - keyword: STAGE
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: TABLE
     - table_reference:
@@ -332,7 +332,7 @@ file:
     - keyword: STAGE
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: EXTERNAL
     - keyword: TABLE
@@ -340,7 +340,7 @@ file:
         identifier: my_table
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: EXTERNAL
     - keyword: TABLE
@@ -348,7 +348,7 @@ file:
         identifier: my_table
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: EXTERNAL
     - keyword: TABLE
@@ -360,7 +360,7 @@ file:
     - keyword: COLUMNS
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: EXTERNAL
     - keyword: TABLE
@@ -372,7 +372,7 @@ file:
     - keyword: COLUMNS
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: EXTERNAL
     - keyword: TABLE
@@ -384,7 +384,7 @@ file:
     - keyword: STAGE
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: EXTERNAL
     - keyword: TABLE
@@ -396,21 +396,21 @@ file:
     - keyword: STAGE
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: VIEW
     - table_reference:
         identifier: my_view
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: VIEW
     - table_reference:
         identifier: my_view
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: VIEW
     - table_reference:
@@ -421,7 +421,7 @@ file:
       - identifier: my_view
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: VIEW
     - table_reference:
@@ -432,7 +432,7 @@ file:
       - identifier: my_view
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: MATERIALIZED
     - keyword: VIEW
@@ -440,7 +440,7 @@ file:
         identifier: my_view
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: MATERIALIZED
     - keyword: VIEW
@@ -448,7 +448,7 @@ file:
         identifier: my_view
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: MATERIALIZED
     - keyword: VIEW
@@ -460,7 +460,7 @@ file:
       - identifier: my_view
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: MATERIALIZED
     - keyword: VIEW
@@ -472,21 +472,21 @@ file:
       - identifier: my_view
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: SEQUENCE
     - sequence_reference:
         identifier: my_sequence
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: SEQUENCE
     - sequence_reference:
         identifier: my_sequence
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: MASKING
     - keyword: POLICY
@@ -494,7 +494,7 @@ file:
         identifier: my_masking_policy
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: MASKING
     - keyword: POLICY
@@ -502,7 +502,7 @@ file:
         identifier: my_masking_policy
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: ROW
     - keyword: ACCESS
@@ -511,7 +511,7 @@ file:
         identifier: my_row_access_policy
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: ROW
     - keyword: ACCESS
@@ -520,7 +520,7 @@ file:
         identifier: my_row_access_policy
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: FILE
     - keyword: FORMAT
@@ -528,7 +528,7 @@ file:
         identifier: my_file_format
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: FILE
     - keyword: FORMAT
@@ -536,63 +536,63 @@ file:
         identifier: my_file_format
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: STAGE
     - object_reference:
         identifier: my_stage
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: STAGE
     - object_reference:
         identifier: my_stage
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: PIPE
     - object_reference:
         identifier: my_pipe
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: PIPE
     - object_reference:
         identifier: my_pipe
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: STREAM
     - object_reference:
         identifier: my_stream
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: STREAM
     - object_reference:
         identifier: my_stream
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: TASK
     - object_reference:
         identifier: my_task
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: TASK
     - object_reference:
         identifier: my_task
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: FUNCTION
     - function_name:
@@ -607,7 +607,7 @@ file:
       - end_bracket: )
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: FUNCTION
     - function_name:
@@ -622,7 +622,7 @@ file:
       - end_bracket: )
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: PROCEDURE
     - function_name:
@@ -632,7 +632,7 @@ file:
         end_bracket: )
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: PROCEDURE
     - function_name:
@@ -642,7 +642,7 @@ file:
         end_bracket: )
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESCRIBE
     - keyword: PROCEDURE
     - function_name:
@@ -654,7 +654,7 @@ file:
         end_bracket: )
 - statement_terminator: ;
 - statement:
-    base:
+    describe_statement:
     - keyword: DESC
     - keyword: PROCEDURE
     - function_name:
diff --git a/test/fixtures/dialects/snowflake/snowflake_alter_function.yml b/test/fixtures/dialects/snowflake/snowflake_alter_function.yml
index e9ebd00b99d..ec167118ddb 100644
--- a/test/fixtures/dialects/snowflake/snowflake_alter_function.yml
+++ b/test/fixtures/dialects/snowflake/snowflake_alter_function.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 7a207c48c4c7c64e4bcdafbc14b7323e8ff131bedf82284964066bd396846e9c
+_hash: 8a1936b1d3db7a914b04b28e3a9e8d806de7efe93cf96c8b99850520c4c4a2a7
 file:
 - statement:
     alter_function_statement:
@@ -13,7 +13,7 @@ file:
     - keyword: EXISTS
     - function_name:
         function_name_identifier: function1
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
@@ -32,7 +32,7 @@ file:
     - keyword: EXISTS
     - function_name:
         function_name_identifier: function2
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
@@ -47,7 +47,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: function3
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           end_bracket: )
diff --git a/test/fixtures/dialects/snowflake/snowflake_create_function.yml b/test/fixtures/dialects/snowflake/snowflake_create_function.yml
index 79b839c584f..9c70a3757e7 100644
--- a/test/fixtures/dialects/snowflake/snowflake_create_function.yml
+++ b/test/fixtures/dialects/snowflake/snowflake_create_function.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: d79411fee00fc0f4056bc7405ba142c2908339829994f03430793ad5f18663b5
+_hash: 4c335cbed2e987284fd671fcddffa6959d127df5951e05e956a0daf0b7771164
 file:
 - statement:
     create_function_statement:
@@ -11,7 +11,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: pi_udf
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           end_bracket: )
@@ -27,7 +27,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: simple_table_function
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           end_bracket: )
@@ -56,7 +56,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: get_countries_for_user
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: id
@@ -93,7 +93,7 @@ file:
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: js_factorial
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: d
diff --git a/test/fixtures/dialects/snowflake/snowflake_create_procedure.yml b/test/fixtures/dialects/snowflake/snowflake_create_procedure.yml
index 89e98db269d..f84b186ac5d 100644
--- a/test/fixtures/dialects/snowflake/snowflake_create_procedure.yml
+++ b/test/fixtures/dialects/snowflake/snowflake_create_procedure.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 3fc8a1fce48f8dcb0488576455226061e2443b6500694349f576808625bf8fa7
+_hash: f75c5ea627915ae5e2514712f363f7616b2ddd951141022c7eca340bb2dccb45
 file:
 - statement:
     create_procedure_statement:
@@ -13,7 +13,7 @@ file:
     - keyword: procedure
     - function_name:
         function_name_identifier: sp_pi
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           end_bracket: )
@@ -35,7 +35,7 @@ file:
     - keyword: procedure
     - function_name:
         function_name_identifier: stproc1
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           parameter: FLOAT_PARAM1
@@ -69,7 +69,7 @@ file:
         identifier: public
         dot: .
         function_name_identifier: test_procedure
-    - base:
+    - function_parameter_list:
         bracketed:
         - start_bracket: (
         - parameter: test_table
diff --git a/test/fixtures/dialects/snowflake/snowflake_grant_revoke.yml b/test/fixtures/dialects/snowflake/snowflake_grant_revoke.yml
index af0e6556399..41bd3eabee9 100644
--- a/test/fixtures/dialects/snowflake/snowflake_grant_revoke.yml
+++ b/test/fixtures/dialects/snowflake/snowflake_grant_revoke.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 40776a3244a7816c6ea515052ba922643a91946bdbe9033bdcfa9d0b6abb77ea
+_hash: cf8ee6e9f790d90ee0bef093f8874bda64b18448a5a7d109c854c19d5889264e
 file:
 - statement:
     access_statement:
@@ -183,7 +183,7 @@ file:
     - keyword: function
     - object_reference:
         identifier: add5
-    - base:
+    - function_parameter_list:
         bracketed:
           start_bracket: (
           data_type:
diff --git a/test/fixtures/dialects/snowflake/snowflake_transactions.yml b/test/fixtures/dialects/snowflake/snowflake_transactions.yml
index c453f3c0ed0..68595410ad4 100644
--- a/test/fixtures/dialects/snowflake/snowflake_transactions.yml
+++ b/test/fixtures/dialects/snowflake/snowflake_transactions.yml
@@ -3,31 +3,31 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: edb9a85fc338df4d07be8e6d5881efc1fa5f83ff480d508ee17409dddbb99093
+_hash: 82a3e1bc27c3ff96a0ce69270abaf7e2adbe1a80242adbe1ebf1d27a720f8709
 file:
 - statement:
-    base:
+    transaction_statement_segment:
       keyword: begin
 - statement_terminator: ;
 - statement:
-    base:
+    transaction_statement_segment:
     - keyword: begin
     - keyword: work
 - statement_terminator: ;
 - statement:
-    base:
+    transaction_statement_segment:
     - keyword: begin
     - keyword: transaction
 - statement_terminator: ;
 - statement:
-    base:
+    transaction_statement_segment:
     - keyword: begin
     - keyword: name
     - object_reference:
         identifier: t4
 - statement_terminator: ;
 - statement:
-    base:
+    transaction_statement_segment:
     - keyword: begin
     - keyword: work
     - keyword: name
@@ -35,7 +35,7 @@ file:
         identifier: t4
 - statement_terminator: ;
 - statement:
-    base:
+    transaction_statement_segment:
     - keyword: begin
     - keyword: transaction
     - keyword: name
@@ -43,12 +43,12 @@ file:
         identifier: t4
 - statement_terminator: ;
 - statement:
-    base:
+    transaction_statement_segment:
     - keyword: start
     - keyword: transaction
 - statement_terminator: ;
 - statement:
-    base:
+    transaction_statement_segment:
     - keyword: start
     - keyword: transaction
     - keyword: name
@@ -56,10 +56,10 @@ file:
         identifier: t4
 - statement_terminator: ;
 - statement:
-    base:
+    transaction_statement_segment:
       keyword: rollback
 - statement_terminator: ;
 - statement:
-    base:
+    transaction_statement_segment:
       keyword: commit
 - statement_terminator: ;
diff --git a/test/fixtures/dialects/spark3/alter_database.yml b/test/fixtures/dialects/spark3/alter_database.yml
index 297728b672e..bf41bc660eb 100644
--- a/test/fixtures/dialects/spark3/alter_database.yml
+++ b/test/fixtures/dialects/spark3/alter_database.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: bc800772bddcc5a5dc88ade38635d1ba1bb1ccef103cfbb178b88df146e8ecb4
+_hash: 5205c91839b6898aa282fd1946aa2cb8c539707096d88f34ca546868d858524d
 file:
-- base:
+- statement:
     alter_database_statement:
     - keyword: ALTER
     - keyword: DATABASE
@@ -21,7 +21,7 @@ file:
       - literal: "'John'"
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_database_statement:
     - keyword: ALTER
     - keyword: DATABASE
@@ -42,7 +42,7 @@ file:
       - literal: "'01/01/2001'"
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_database_statement:
     - keyword: ALTER
     - keyword: SCHEMA
@@ -58,7 +58,7 @@ file:
       - literal: "'John'"
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_database_statement:
     - keyword: ALTER
     - keyword: SCHEMA
diff --git a/test/fixtures/dialects/spark3/alter_table.yml b/test/fixtures/dialects/spark3/alter_table.yml
index 56efa3b0fae..baaccf4fba0 100644
--- a/test/fixtures/dialects/spark3/alter_table.yml
+++ b/test/fixtures/dialects/spark3/alter_table.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 042c721d3689b3ce3c9b22bc5fd459ce50833088561b9bd7d31fe97b6c9b17c4
+_hash: 5d6c3e2e8f14dedf4ce5a212eee1d0fdffeb31f4a71f71838f55cef3f378595e
 file:
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -16,7 +16,7 @@ file:
     - table_reference:
         identifier: StudentInfo
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -45,7 +45,7 @@ file:
         literal: "'15'"
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -68,7 +68,7 @@ file:
               keyword: TIMESTAMP
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -81,7 +81,7 @@ file:
     - keyword: COMMENT
     - literal: '"new comment"'
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -94,7 +94,7 @@ file:
     - keyword: COMMENT
     - literal: '"new comment"'
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -114,7 +114,7 @@ file:
         literal: '18'
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -143,7 +143,7 @@ file:
         literal: '20'
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -162,7 +162,7 @@ file:
         literal: '18'
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -180,7 +180,7 @@ file:
       - literal: "'loser'"
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -198,7 +198,7 @@ file:
       - literal: "'A table comment.'"
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -216,7 +216,7 @@ file:
       - literal: "'This is a new comment.'"
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -231,7 +231,7 @@ file:
         literal: "'winner'"
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -252,7 +252,7 @@ file:
       - literal: '"val2"'
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -262,7 +262,7 @@ file:
     - keyword: SERDE
     - literal: "'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'"
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -288,7 +288,7 @@ file:
       - literal: "'vee'"
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -298,7 +298,7 @@ file:
     - keyword: FILEFORMAT
     - keyword: ORC
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -323,7 +323,7 @@ file:
     - keyword: FILEFORMAT
     - keyword: PARQUET
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
@@ -350,7 +350,7 @@ file:
     - keyword: LOCATION
     - literal: "'/path/to/part/ways'"
 - statement_terminator: ;
-- base:
+- statement:
     alter_table_statement:
     - keyword: ALTER
     - keyword: TABLE
diff --git a/test/fixtures/dialects/spark3/alter_view.yml b/test/fixtures/dialects/spark3/alter_view.yml
index dda23ee5f3f..68844469a31 100644
--- a/test/fixtures/dialects/spark3/alter_view.yml
+++ b/test/fixtures/dialects/spark3/alter_view.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 1eab6d2ef472eff8df68975182f9a4baf6759a437159c7b2aeeb0c42e8e0aea4
+_hash: 562476d80501c42f792c4e0ee9fdd5f971d20f6e18b471590800782f0bb67ccb
 file:
-- base:
+- statement:
     alter_view_statement:
     - keyword: ALTER
     - keyword: VIEW
@@ -16,7 +16,7 @@ file:
     - table_reference:
         identifier: view_identifier
 - statement_terminator: ;
-- base:
+- statement:
     alter_view_statement:
     - keyword: ALTER
     - keyword: VIEW
@@ -31,7 +31,7 @@ file:
       - dot: .
       - identifier: v2
 - statement_terminator: ;
-- base:
+- statement:
     alter_view_statement:
     - keyword: ALTER
     - keyword: VIEW
@@ -47,7 +47,7 @@ file:
       - literal: '"property_val"'
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_view_statement:
     - keyword: ALTER
     - keyword: VIEW
@@ -70,7 +70,7 @@ file:
       - literal: "'01-01-2001'"
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_view_statement:
     - keyword: ALTER
     - keyword: VIEW
@@ -83,7 +83,7 @@ file:
         literal: '"property_key"'
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_view_statement:
     - keyword: ALTER
     - keyword: VIEW
@@ -98,7 +98,7 @@ file:
         literal: '"property_key"'
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_view_statement:
     - keyword: ALTER
     - keyword: VIEW
@@ -115,7 +115,7 @@ file:
       - literal: "'created.date'"
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_view_statement:
     - keyword: ALTER
     - keyword: VIEW
@@ -142,7 +142,7 @@ file:
                   - identifier: v1
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     alter_view_statement:
     - keyword: ALTER
     - keyword: VIEW
diff --git a/test/fixtures/dialects/spark3/bytes_literal.yml b/test/fixtures/dialects/spark3/bytes_literal.yml
index 644b76fc639..5eb44848cc7 100644
--- a/test/fixtures/dialects/spark3/bytes_literal.yml
+++ b/test/fixtures/dialects/spark3/bytes_literal.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: e3ff5b9e5e6a222428e1f399c038610c806c31213803dffdcde92db6d469a022
+_hash: fca63553bdb6ee1a0880fa57b87fede8ba2b61d7975f1209fe59ae494faacc90
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
@@ -15,7 +15,7 @@ file:
             keyword: AS
             identifier: col
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
diff --git a/test/fixtures/dialects/spark3/common_table_expressions.yml b/test/fixtures/dialects/spark3/common_table_expressions.yml
index 2900a93acab..6ee842e9742 100644
--- a/test/fixtures/dialects/spark3/common_table_expressions.yml
+++ b/test/fixtures/dialects/spark3/common_table_expressions.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 8cdecb88c8fcbbd731095683c83501deb36e39584984bc33dfe134993348fb24
+_hash: 7068b60485f3d9f4e1b8e0e14224226b5cfdc8a06e457c8a33522b65ab1c1306
 file:
-- base:
+- statement:
     with_compound_statement:
       keyword: WITH
       common_table_expression:
@@ -58,7 +58,7 @@ file:
               raw_comparison_operator: '='
           - literal: '2'
 - statement_terminator: ;
-- base:
+- statement:
     with_compound_statement:
       keyword: WITH
       common_table_expression:
@@ -109,7 +109,7 @@ file:
                 table_reference:
                   identifier: t
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
@@ -164,7 +164,7 @@ file:
                               identifier: t
                 end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
@@ -201,7 +201,7 @@ file:
                             identifier: t
               end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     create_view_statement:
     - keyword: CREATE
     - keyword: VIEW
@@ -256,7 +256,7 @@ file:
                   table_reference:
                     identifier: t
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
@@ -272,7 +272,7 @@ file:
               table_reference:
                 identifier: v
 - statement_terminator: ;
-- base:
+- statement:
     with_compound_statement:
     - keyword: WITH
     - common_table_expression:
diff --git a/test/fixtures/dialects/spark3/create_database.yml b/test/fixtures/dialects/spark3/create_database.yml
index 9fee02d0fa7..dcc45d7f5c4 100644
--- a/test/fixtures/dialects/spark3/create_database.yml
+++ b/test/fixtures/dialects/spark3/create_database.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: d104282f7bcd5de8c6c765633bde46812333027b4aee2d57436b4d8f5d471716
+_hash: ccc912fda0cab18eeb10459e3b5298c0a930e0c9cc8b83941d602d6894799990
 file:
-- base:
+- statement:
     create_database_statement:
     - keyword: CREATE
     - keyword: DATABASE
@@ -28,7 +28,7 @@ file:
       - literal: '"property_value"'
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     create_database_statement:
     - keyword: CREATE
     - keyword: SCHEMA
@@ -51,14 +51,14 @@ file:
       - literal: '"property_value"'
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     create_database_statement:
     - keyword: CREATE
     - keyword: DATABASE
     - database_reference:
         identifier: customer_db
 - statement_terminator: ;
-- base:
+- statement:
     create_database_statement:
     - keyword: CREATE
     - keyword: DATABASE
@@ -68,7 +68,7 @@ file:
     - database_reference:
         identifier: customer_db
 - statement_terminator: ;
-- base:
+- statement:
     create_database_statement:
     - keyword: CREATE
     - keyword: DATABASE
@@ -96,7 +96,7 @@ file:
       - literal: "'John'"
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     create_database_statement:
     - keyword: CREATE
     - keyword: DATABASE
diff --git a/test/fixtures/dialects/spark3/create_function.yml b/test/fixtures/dialects/spark3/create_function.yml
index f3b9ba8957d..91c3e515aab 100644
--- a/test/fixtures/dialects/spark3/create_function.yml
+++ b/test/fixtures/dialects/spark3/create_function.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 213d5d5867cbcbf4ea7e66d218e738e09fe3bf1a7b1fb4f6c170f909e5a054e4
+_hash: 3bee12bfaf3f18f18d67fa11abb49e22092fa8919b2209ca3eab7b042b5ef191
 file:
-- base:
+- statement:
     create_function_statement:
     - keyword: CREATE
     - binary_operator: OR
@@ -22,7 +22,7 @@ file:
     - file_type: FILE
     - literal: '"resource_locations"'
 - statement_terminator: ;
-- base:
+- statement:
     create_function_statement:
     - keyword: CREATE
     - keyword: FUNCTION
@@ -33,7 +33,7 @@ file:
     - file_type: JAR
     - literal: "'/tmp/SimpleUdf.jar'"
 - statement_terminator: ;
-- base:
+- statement:
     create_function_statement:
     - keyword: CREATE
     - keyword: TEMPORARY
@@ -45,7 +45,7 @@ file:
     - file_type: JAR
     - literal: "'/tmp/SimpleUdf.jar'"
 - statement_terminator: ;
-- base:
+- statement:
     create_function_statement:
     - keyword: CREATE
     - binary_operator: OR
@@ -58,7 +58,7 @@ file:
     - file_type: JAR
     - literal: "'/tmp/SimpleUdfR.jar'"
 - statement_terminator: ;
-- base:
+- statement:
     create_function_statement:
     - keyword: CREATE
     - keyword: FUNCTION
@@ -66,7 +66,7 @@ file:
     - keyword: AS
     - literal: "'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage'"
 - statement_terminator: ;
-- base:
+- statement:
     create_function_statement:
     - keyword: CREATE
     - keyword: TEMPORARY
diff --git a/test/fixtures/dialects/spark3/create_table_datasource.yml b/test/fixtures/dialects/spark3/create_table_datasource.yml
index 27c4a99159e..87509b4cf48 100644
--- a/test/fixtures/dialects/spark3/create_table_datasource.yml
+++ b/test/fixtures/dialects/spark3/create_table_datasource.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 2e8a2a7473af740794b633ddf989f55250f697fecec012d09cf34f6a6f9c3bc9
+_hash: 2395ceec8c8a9a4173f7c2ba1681cb9c49e39b40d277c2df5f62195ba5e05d96
 file:
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -109,7 +109,7 @@ file:
                 table_reference:
                   identifier: student
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -138,7 +138,7 @@ file:
     - keyword: USING
     - keyword: CSV
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -162,7 +162,7 @@ file:
                 table_reference:
                   identifier: student
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -189,7 +189,7 @@ file:
               keyword: INT
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -228,7 +228,7 @@ file:
       - literal: "'bar'"
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
diff --git a/test/fixtures/dialects/spark3/create_table_hiveformat.yml b/test/fixtures/dialects/spark3/create_table_hiveformat.yml
index 6e63879de3b..44fda028df8 100644
--- a/test/fixtures/dialects/spark3/create_table_hiveformat.yml
+++ b/test/fixtures/dialects/spark3/create_table_hiveformat.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 1712bfa1d11d0fcf171e638b93be7f9fce3414c15bd78c7cfa7e65e522a46e92
+_hash: c9e60e4107d8e23973b4b508706d0b2ed4d9b4d56cdcd047f8d2280ef39d5b6f
 file:
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: EXTERNAL
@@ -113,7 +113,7 @@ file:
                     identifier: table_identifier
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -143,7 +143,7 @@ file:
     - keyword: AS
     - keyword: ORC
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -168,7 +168,7 @@ file:
                 table_reference:
                   identifier: student
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -208,7 +208,7 @@ file:
       - literal: "'bar'"
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -248,7 +248,7 @@ file:
     - keyword: COMMENT
     - literal: "'this is a comment'"
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -282,7 +282,7 @@ file:
     - keyword: AS
     - keyword: ORC
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -316,7 +316,7 @@ file:
               keyword: INT
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -348,7 +348,7 @@ file:
     - keyword: AS
     - file_format: TEXTFILE
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: EXTERNAL
@@ -439,7 +439,7 @@ file:
     - keyword: LOCATION
     - literal: "'/tmp/family/'"
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -468,13 +468,13 @@ file:
           , \"type\":\"string\" }]\n    }'"
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     add_executable_package:
       keyword: ADD
       file_type: JAR
       literal: "'/tmp/hive_serde_example.jar'"
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: EXTERNAL
@@ -509,7 +509,7 @@ file:
     - keyword: LOCATION
     - literal: "'/tmp/family/'"
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -543,7 +543,7 @@ file:
     - keyword: AS
     - keyword: ORC
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
diff --git a/test/fixtures/dialects/spark3/create_table_like.yml b/test/fixtures/dialects/spark3/create_table_like.yml
index ad8898ee027..82e5ada2649 100644
--- a/test/fixtures/dialects/spark3/create_table_like.yml
+++ b/test/fixtures/dialects/spark3/create_table_like.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 3cfff2ad6c3655dc653283adbb87a254ec4a96f42c4a650a09492570f013139b
+_hash: 3da8ca74f75db9ea1c4a6e6707a545906a61400b71ce296d681408f06f80dbc2
 file:
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -46,7 +46,7 @@ file:
     - keyword: LOCATION
     - literal: '"path/to/files"'
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -56,7 +56,7 @@ file:
     - table_reference:
         identifier: student
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -68,7 +68,7 @@ file:
     - keyword: USING
     - keyword: CSV
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
@@ -80,7 +80,7 @@ file:
     - keyword: LOCATION
     - literal: "'/root1/home'"
 - statement_terminator: ;
-- base:
+- statement:
     create_table_statement:
     - keyword: CREATE
     - keyword: TABLE
diff --git a/test/fixtures/dialects/spark3/create_view.yml b/test/fixtures/dialects/spark3/create_view.yml
index ad2dd1b8c38..2a34b9219ef 100644
--- a/test/fixtures/dialects/spark3/create_view.yml
+++ b/test/fixtures/dialects/spark3/create_view.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 49134d230e605ac9d2556dbeb2a1ba95b932dd4bcce55137aa005cdc7d067026
+_hash: 7dea051e261d6f9b1a78aaa8f134f3da7c294c07136bba4424c50c9d5f6859c2
 file:
-- base:
+- statement:
     create_view_statement:
     - keyword: CREATE
     - keyword: VIEW
@@ -27,7 +27,7 @@ file:
                 table_reference:
                   identifier: experienced_employee
 - statement_terminator: ;
-- base:
+- statement:
     create_view_statement:
     - keyword: CREATE
     - binary_operator: OR
@@ -84,7 +84,7 @@ file:
                 table_reference:
                   identifier: temp2
 - statement_terminator: ;
-- base:
+- statement:
     create_view_statement:
     - keyword: CREATE
     - keyword: TEMP
@@ -110,7 +110,7 @@ file:
           keyword: limit
           literal: '2'
 - statement_terminator: ;
-- base:
+- statement:
     create_view_statement:
     - keyword: CREATE
     - binary_operator: OR
diff --git a/test/fixtures/dialects/spark3/drop_database.yml b/test/fixtures/dialects/spark3/drop_database.yml
index e713334a4d7..6c74c43888f 100644
--- a/test/fixtures/dialects/spark3/drop_database.yml
+++ b/test/fixtures/dialects/spark3/drop_database.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: cae367bac9adae2e40474f89a108bfeea5427dd03e3f3f7064f6b02896365657
+_hash: dacbb4e497e140bc837622267c79482ec8f9cf917e73480111bd6704dc836a60
 file:
-- base:
+- statement:
     drop_database_statement:
     - keyword: DROP
     - keyword: DATABASE
@@ -15,7 +15,7 @@ file:
         identifier: dbname
     - keyword: RESTRICT
 - statement_terminator: ;
-- base:
+- statement:
     drop_database_statement:
     - keyword: DROP
     - keyword: DATABASE
@@ -25,7 +25,7 @@ file:
         identifier: dbname
     - keyword: CASCADE
 - statement_terminator: ;
-- base:
+- statement:
     drop_database_statement:
     - keyword: DROP
     - keyword: DATABASE
@@ -33,7 +33,7 @@ file:
         identifier: inventory_db
     - keyword: CASCADE
 - statement_terminator: ;
-- base:
+- statement:
     drop_database_statement:
     - keyword: DROP
     - keyword: DATABASE
diff --git a/test/fixtures/dialects/spark3/drop_function.yml b/test/fixtures/dialects/spark3/drop_function.yml
index b874a6f6941..c1a32421bc7 100644
--- a/test/fixtures/dialects/spark3/drop_function.yml
+++ b/test/fixtures/dialects/spark3/drop_function.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 27ffb62078d30fab80a6a2e4870e5177216cfc877d45d1e3537a662661698d51
+_hash: 3a4bdb250ba955d87c4d9b617ba8b3b561b5701423e49f8fea6e679eb05ca8d3
 file:
-- base:
+- statement:
     drop_function_statement:
     - keyword: DROP
     - keyword: TEMPORARY
@@ -15,14 +15,14 @@ file:
     - function_name:
         function_name_identifier: function_name
 - statement_terminator: ;
-- base:
+- statement:
     drop_function_statement:
     - keyword: DROP
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: test_avg
 - statement_terminator: ;
-- base:
+- statement:
     drop_function_statement:
     - keyword: DROP
     - keyword: TEMPORARY
diff --git a/test/fixtures/dialects/spark3/drop_schema.yml b/test/fixtures/dialects/spark3/drop_schema.yml
index 9276a668979..7eadf236eb9 100644
--- a/test/fixtures/dialects/spark3/drop_schema.yml
+++ b/test/fixtures/dialects/spark3/drop_schema.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: bd18ac46af7cb7909cd959933e095b0b0ee4945aa1e31c62d18e8326065e46fc
+_hash: 098ae4f95405aa8d4841977c9d9c663c2cfb524f8089778e06b798992ca77fa0
 file:
-- base:
+- statement:
     drop_schema_statement:
     - keyword: DROP
     - keyword: SCHEMA
@@ -15,7 +15,7 @@ file:
         identifier: dbname
     - keyword: RESTRICT
 - statement_terminator: ;
-- base:
+- statement:
     drop_schema_statement:
     - keyword: DROP
     - keyword: SCHEMA
@@ -25,7 +25,7 @@ file:
         identifier: dbname
     - keyword: CASCADE
 - statement_terminator: ;
-- base:
+- statement:
     drop_schema_statement:
     - keyword: DROP
     - keyword: SCHEMA
@@ -33,7 +33,7 @@ file:
         identifier: inventory_db
     - keyword: CASCADE
 - statement_terminator: ;
-- base:
+- statement:
     drop_schema_statement:
     - keyword: DROP
     - keyword: SCHEMA
diff --git a/test/fixtures/dialects/spark3/drop_table.yml b/test/fixtures/dialects/spark3/drop_table.yml
index e9767e7e335..1bc7d4c213e 100644
--- a/test/fixtures/dialects/spark3/drop_table.yml
+++ b/test/fixtures/dialects/spark3/drop_table.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: d31fd5767828c82dacb87770b55ae0ad1e5826f1a2e3b41e57384fb961abbcfd
+_hash: d8d2fbb857bf033f2eeca7bad5b0931e2d1911ea790d24606cf6bd9160a099e7
 file:
-- base:
+- statement:
     drop_table_statement:
     - keyword: DROP
     - keyword: TABLE
@@ -14,14 +14,14 @@ file:
     - table_reference:
         identifier: table_identifier
 - statement_terminator: ;
-- base:
+- statement:
     drop_table_statement:
     - keyword: DROP
     - keyword: TABLE
     - table_reference:
         identifier: employeetable
 - statement_terminator: ;
-- base:
+- statement:
     drop_table_statement:
     - keyword: DROP
     - keyword: TABLE
@@ -30,7 +30,7 @@ file:
       - dot: .
       - identifier: employeetable
 - statement_terminator: ;
-- base:
+- statement:
     drop_table_statement:
     - keyword: DROP
     - keyword: TABLE
diff --git a/test/fixtures/dialects/spark3/drop_view.yml b/test/fixtures/dialects/spark3/drop_view.yml
index e266722617e..b1d56d0fee1 100644
--- a/test/fixtures/dialects/spark3/drop_view.yml
+++ b/test/fixtures/dialects/spark3/drop_view.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: ac882335d749597b38c6f8f82140ccd65f7670d890096e8dcf3d658689117f07
+_hash: 2ac22dd2cde7b3f4251ca2ddb9fb824e7b44d0442787601bd585199d8ad862dd
 file:
-- base:
+- statement:
     drop_view_statement:
     - keyword: DROP
     - keyword: VIEW
@@ -14,14 +14,14 @@ file:
     - table_reference:
         identifier: view_identifier
 - statement_terminator: ;
-- base:
+- statement:
     drop_view_statement:
     - keyword: DROP
     - keyword: VIEW
     - table_reference:
         identifier: employeeview
 - statement_terminator: ;
-- base:
+- statement:
     drop_view_statement:
     - keyword: DROP
     - keyword: VIEW
@@ -30,7 +30,7 @@ file:
       - dot: .
       - identifier: employeeview
 - statement_terminator: ;
-- base:
+- statement:
     drop_view_statement:
     - keyword: DROP
     - keyword: VIEW
diff --git a/test/fixtures/dialects/spark3/insert_overwrite_directory.yml b/test/fixtures/dialects/spark3/insert_overwrite_directory.yml
index b6b2450a3ec..cf795430393 100644
--- a/test/fixtures/dialects/spark3/insert_overwrite_directory.yml
+++ b/test/fixtures/dialects/spark3/insert_overwrite_directory.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 38368cb40f359609fcaf4b65fb8180e689f933cd141855f53511803de6c740ad
+_hash: 13224d46521c1c9972f5782d475a3157808eef0334d2e13945fac79bb417a593
 file:
-- base:
+- statement:
     insert_overwrite_directory_statement:
     - keyword: INSERT
     - keyword: OVERWRITE
@@ -46,7 +46,7 @@ file:
                 table_reference:
                   identifier: test_table
 - statement_terminator: ;
-- base:
+- statement:
     insert_overwrite_directory_statement:
     - keyword: INSERT
     - keyword: OVERWRITE
diff --git a/test/fixtures/dialects/spark3/insert_overwrite_directory_hive.yml b/test/fixtures/dialects/spark3/insert_overwrite_directory_hive.yml
index 3550720671d..ba053b10bca 100644
--- a/test/fixtures/dialects/spark3/insert_overwrite_directory_hive.yml
+++ b/test/fixtures/dialects/spark3/insert_overwrite_directory_hive.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: dad8bcff4117c6426aeb4fb40f03cb7f519b520fee2181b55e47a2fe498bed2f
+_hash: 2a256ea29b08e57345d3831a09f779d08e2feaa503894ff495e850ecfcbde7b2
 file:
-- base:
+- statement:
     insert_overwrite_directory_hive_fmt_statement:
     - keyword: INSERT
     - keyword: OVERWRITE
@@ -30,7 +30,7 @@ file:
                 table_reference:
                   identifier: test_table
 - statement_terminator: ;
-- base:
+- statement:
     insert_overwrite_directory_hive_fmt_statement:
     - keyword: INSERT
     - keyword: OVERWRITE
diff --git a/test/fixtures/dialects/spark3/insert_table.yml b/test/fixtures/dialects/spark3/insert_table.yml
index 67309bf9a45..4b4c4241c32 100644
--- a/test/fixtures/dialects/spark3/insert_table.yml
+++ b/test/fixtures/dialects/spark3/insert_table.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 3cf561b407706598eab7f8e4e60a18db30e474530c601c6201275bd2828a316c
+_hash: 1a53ea7cfdc6d98f64d518ee4167659267dec8134d688dfd66cb91dbd6ace494
 file:
-- base:
+- statement:
     insert_table_statement:
     - keyword: INSERT
     - keyword: INTO
@@ -28,7 +28,7 @@ file:
                 literal: '111111'
             - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     insert_table_statement:
     - keyword: INSERT
     - keyword: INTO
@@ -50,7 +50,7 @@ file:
                 literal: '111111'
             - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     insert_table_statement:
     - keyword: INSERT
     - keyword: OVERWRITE
@@ -72,7 +72,7 @@ file:
                 literal: '111111'
             - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     insert_table_statement:
     - keyword: INSERT
     - keyword: INTO
@@ -107,7 +107,7 @@ file:
                 literal: '333333'
             - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     insert_table_statement:
     - keyword: INSERT
     - keyword: OVERWRITE
@@ -142,7 +142,7 @@ file:
                 literal: '333333'
             - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     insert_table_statement:
     - keyword: INSERT
     - keyword: INTO
@@ -183,7 +183,7 @@ file:
               raw_comparison_operator: '='
             literal: '"Dora Williams"'
 - statement_terminator: ;
-- base:
+- statement:
     insert_table_statement:
     - keyword: INSERT
     - keyword: OVERWRITE
@@ -224,7 +224,7 @@ file:
               raw_comparison_operator: '='
             literal: '"Dora Williams"'
 - statement_terminator: ;
-- base:
+- statement:
     insert_table_statement:
     - keyword: INSERT
     - keyword: INTO
@@ -234,7 +234,7 @@ file:
     - table_reference:
         identifier: visiting_students
 - statement_terminator: ;
-- base:
+- statement:
     insert_table_statement:
     - keyword: INSERT
     - keyword: OVERWRITE
@@ -244,7 +244,7 @@ file:
     - table_reference:
         identifier: visiting_students
 - statement_terminator: ;
-- base:
+- statement:
     insert_table_statement:
     - keyword: INSERT
     - keyword: INTO
@@ -271,7 +271,7 @@ file:
             raw_comparison_operator: '='
           literal: 'TRUE'
 - statement_terminator: ;
-- base:
+- statement:
     insert_table_statement:
     - keyword: INSERT
     - keyword: OVERWRITE
@@ -298,7 +298,7 @@ file:
             raw_comparison_operator: '='
           literal: 'TRUE'
 - statement_terminator: ;
-- base:
+- statement:
     insert_table_statement:
     - keyword: INSERT
     - keyword: INTO
@@ -327,7 +327,7 @@ file:
                 literal: "'123 Park Ave, San Jose'"
             - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     insert_table_statement:
     - keyword: INSERT
     - keyword: OVERWRITE
@@ -356,7 +356,7 @@ file:
                 literal: "'123 Park Ave, San Jose'"
             - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     insert_table_statement:
     - keyword: INSERT
     - keyword: INTO
@@ -392,7 +392,7 @@ file:
                 literal: "'Kent Yao Jr.'"
             - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     insert_table_statement:
     - keyword: INSERT
     - keyword: OVERWRITE
diff --git a/test/fixtures/dialects/spark3/join_types.yml b/test/fixtures/dialects/spark3/join_types.yml
index 70321f39186..aadd1406daf 100644
--- a/test/fixtures/dialects/spark3/join_types.yml
+++ b/test/fixtures/dialects/spark3/join_types.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: d9c1438fcd5287a7fcff24bad6c9ca205c63f7bc69da80d9f20425c5d244d4c4
+_hash: 5f560dfbb9dfb1bc61fcc2c5b299666c504b14c7a2cd38480f04aa0c00f95840
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -60,7 +60,7 @@ file:
                 - dot: .
                 - identifier: deptno
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -115,7 +115,7 @@ file:
                 - dot: .
                 - identifier: deptno
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -170,7 +170,7 @@ file:
                 - dot: .
                 - identifier: deptno
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -225,7 +225,7 @@ file:
                 - dot: .
                 - identifier: deptno
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -281,7 +281,7 @@ file:
                 - dot: .
                 - identifier: deptno
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -323,7 +323,7 @@ file:
                 table_reference:
                   identifier: department
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
@@ -360,7 +360,7 @@ file:
                 - dot: .
                 - identifier: deptno
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
@@ -398,7 +398,7 @@ file:
                 - dot: .
                 - identifier: deptno
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
@@ -435,7 +435,7 @@ file:
                 - dot: .
                 - identifier: deptno
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
@@ -473,7 +473,7 @@ file:
                 - dot: .
                 - identifier: deptno
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -516,7 +516,7 @@ file:
                 table_reference:
                   identifier: department
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -559,7 +559,7 @@ file:
                 table_reference:
                   identifier: department
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -602,7 +602,7 @@ file:
                 table_reference:
                   identifier: department
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -645,7 +645,7 @@ file:
                 table_reference:
                   identifier: department
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -689,7 +689,7 @@ file:
                 table_reference:
                   identifier: department
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -732,7 +732,7 @@ file:
                 table_reference:
                   identifier: department
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
@@ -757,7 +757,7 @@ file:
                 table_reference:
                   identifier: department
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
@@ -783,7 +783,7 @@ file:
                 table_reference:
                   identifier: department
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
@@ -808,7 +808,7 @@ file:
                 table_reference:
                   identifier: department
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
diff --git a/test/fixtures/dialects/spark3/load_data.yml b/test/fixtures/dialects/spark3/load_data.yml
index dbabce1b3cd..d3a7ece972c 100644
--- a/test/fixtures/dialects/spark3/load_data.yml
+++ b/test/fixtures/dialects/spark3/load_data.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: dc72128625532346c1ffa429fa9a29bcbbd9ad63d101ff93e5ce19321fb635e8
+_hash: 8a9ab5365ee7f3653d54b75a82620859c51daeab4429e7b86b99968c7db3be2d
 file:
-- base:
+- statement:
     load_data_statement:
     - keyword: LOAD
     - keyword: DATA
@@ -18,7 +18,7 @@ file:
     - table_reference:
         identifier: test_load
 - statement_terminator: ;
-- base:
+- statement:
     load_data_statement:
     - keyword: LOAD
     - keyword: DATA
@@ -46,7 +46,7 @@ file:
       - literal: '3'
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     load_data_statement:
     - keyword: LOAD
     - keyword: DATA
@@ -58,7 +58,7 @@ file:
     - table_reference:
         identifier: test_load
 - statement_terminator: ;
-- base:
+- statement:
     load_data_statement:
     - keyword: LOAD
     - keyword: DATA
@@ -85,7 +85,7 @@ file:
       - literal: '3'
       - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     load_data_statement:
     - keyword: LOAD
     - keyword: DATA
diff --git a/test/fixtures/dialects/spark3/numeric_literal.yml b/test/fixtures/dialects/spark3/numeric_literal.yml
index db9886fd509..63207d6404f 100644
--- a/test/fixtures/dialects/spark3/numeric_literal.yml
+++ b/test/fixtures/dialects/spark3/numeric_literal.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: e460b472afa5960ea7d9d659baaad86776036ecf2ee410db18e9a8d58aafd2ae
+_hash: 5fba4f0d03b1fdc822ee34a5bcd92329068ceba814f0431df751ad0d935b2d83
 file:
-  base:
+  statement:
     select_statement:
       select_clause:
         keyword: SELECT
diff --git a/test/fixtures/dialects/spark3/quoted_literal.yml b/test/fixtures/dialects/spark3/quoted_literal.yml
index b5ac80b57e5..09c7ab129ac 100644
--- a/test/fixtures/dialects/spark3/quoted_literal.yml
+++ b/test/fixtures/dialects/spark3/quoted_literal.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 668f0916babfcb35e4238006feb124a817fb0d3796b4c9e98cbf94b992aee4b3
+_hash: 84c2ac0f762ed2cf2d0c9dc3d3282219c7a34a05c30dc8aa77f0c985a59f9cae
 file:
-  base:
+  statement:
     select_statement:
       select_clause:
         keyword: SELECT
diff --git a/test/fixtures/dialects/spark3/refresh.yml b/test/fixtures/dialects/spark3/refresh.yml
index 4fe866f0fcb..37fe4ed496c 100644
--- a/test/fixtures/dialects/spark3/refresh.yml
+++ b/test/fixtures/dialects/spark3/refresh.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: e1491fda3158262959913d0e9339763d75e4bdb8f1296c273a0bdfced2aa038e
+_hash: b75cae24ddb38c927828dbb1092d772253e4853ceb52446682a27ff8c1d5841f
 file:
-  base:
+  statement:
     refresh_statement:
       keyword: REFRESH
       literal: '"hdfs://path/to/table"'
diff --git a/test/fixtures/dialects/spark3/refresh_function.yml b/test/fixtures/dialects/spark3/refresh_function.yml
index fbed10eb78e..98efc30d7ab 100644
--- a/test/fixtures/dialects/spark3/refresh_function.yml
+++ b/test/fixtures/dialects/spark3/refresh_function.yml
@@ -3,16 +3,16 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 1243bb8be622939f3614af18852629f95ea0e90872dbeb789835773cd716ed7b
+_hash: a81b85cd6a349651265d9239459c0c8ae14217e23b9e77b70ab9d8620ec6edd5
 file:
-- base:
+- statement:
     refresh_function_statement:
     - keyword: REFRESH
     - keyword: FUNCTION
     - function_name:
         function_name_identifier: func1
 - statement_terminator: ;
-- base:
+- statement:
     refresh_function_statement:
     - keyword: REFRESH
     - keyword: FUNCTION
diff --git a/test/fixtures/dialects/spark3/refresh_table.yml b/test/fixtures/dialects/spark3/refresh_table.yml
index ec4724765ad..736b96ba50f 100644
--- a/test/fixtures/dialects/spark3/refresh_table.yml
+++ b/test/fixtures/dialects/spark3/refresh_table.yml
@@ -3,22 +3,22 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 73a5a39d2989bb24385996db20301724bb72b504c9044dcda86d7ce7cfd26fd2
+_hash: e67f6762a3441e4f33ac76ac6e4ba1fde9080771bb0645cfcb7050176b414a75
 file:
-- base:
+- statement:
     refresh_table_statement:
     - keyword: REFRESH
     - keyword: TABLE
     - table_reference:
         identifier: tbl1
 - statement_terminator: ;
-- base:
+- statement:
     refresh_table_statement:
       keyword: REFRESH
       table_reference:
         identifier: tbl1
 - statement_terminator: ;
-- base:
+- statement:
     refresh_table_statement:
     - keyword: REFRESH
     - keyword: TABLE
@@ -27,7 +27,7 @@ file:
       - dot: .
       - identifier: view1
 - statement_terminator: ;
-- base:
+- statement:
     refresh_table_statement:
       keyword: REFRESH
       table_reference:
diff --git a/test/fixtures/dialects/spark3/repair_table.yml b/test/fixtures/dialects/spark3/repair_table.yml
index bde508aaf0b..7c59131bb67 100644
--- a/test/fixtures/dialects/spark3/repair_table.yml
+++ b/test/fixtures/dialects/spark3/repair_table.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 4ed2f62aa738480cdb3833e454d2bc53c76dc47d6fd77c2664a178d37d3d436c
+_hash: d94d1ac226060f46bd9b51f52c3e9cde021a0adf27a6a474bb7db36740a729dd
 file:
-- base:
+- statement:
     msck_repair_table_statement:
     - keyword: MSCK
     - keyword: REPAIR
@@ -15,7 +15,7 @@ file:
     - keyword: ADD
     - keyword: PARTITIONS
 - statement_terminator: ;
-- base:
+- statement:
     msck_repair_table_statement:
     - keyword: MSCK
     - keyword: REPAIR
@@ -25,7 +25,7 @@ file:
     - keyword: DROP
     - keyword: PARTITIONS
 - statement_terminator: ;
-- base:
+- statement:
     msck_repair_table_statement:
     - keyword: MSCK
     - keyword: REPAIR
@@ -35,7 +35,7 @@ file:
     - keyword: SYNC
     - keyword: PARTITIONS
 - statement_terminator: ;
-- base:
+- statement:
     msck_repair_table_statement:
     - keyword: MSCK
     - keyword: REPAIR
@@ -43,7 +43,7 @@ file:
     - table_reference:
         identifier: table_identifier
 - statement_terminator: ;
-- base:
+- statement:
     msck_repair_table_statement:
     - keyword: MSCK
     - keyword: REPAIR
diff --git a/test/fixtures/dialects/spark3/select_cluster_by.yml b/test/fixtures/dialects/spark3/select_cluster_by.yml
index d665210aab1..6deddf9ea0a 100644
--- a/test/fixtures/dialects/spark3/select_cluster_by.yml
+++ b/test/fixtures/dialects/spark3/select_cluster_by.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: bc0662c867945a82da0aef3390d9228fb49063e9c9e9a28b6d88179d94125425
+_hash: 2b157da3900f150a9a2676248a164bb45924583fde57bb652d3b2fecafc926e8
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -29,7 +29,7 @@ file:
       - column_reference:
           identifier: age
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -52,7 +52,7 @@ file:
       - keyword: BY
       - literal: '1'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -79,7 +79,7 @@ file:
       - column_reference:
           identifier: age
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
diff --git a/test/fixtures/dialects/spark3/select_delimited_identifier.yml b/test/fixtures/dialects/spark3/select_delimited_identifier.yml
index b954376ea2e..5c2a3c9fcd8 100644
--- a/test/fixtures/dialects/spark3/select_delimited_identifier.yml
+++ b/test/fixtures/dialects/spark3/select_delimited_identifier.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: ae30696314bed6c27c801c2b9ac3016b10eb239ad156bdbb2e50d8e8d277b9cd
+_hash: 1977f9df4f129c48210d80eb55bcc855c0857fd9d75dc11af1ee31f259e0d030
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -15,7 +15,7 @@ file:
             keyword: as
             identifier: '`delimited_but_regular_identifer_0`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -25,7 +25,7 @@ file:
             keyword: as
             identifier: '`100% unruly-identifier`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
diff --git a/test/fixtures/dialects/spark3/select_delimited_identifier_with_escaped_backticks.yml b/test/fixtures/dialects/spark3/select_delimited_identifier_with_escaped_backticks.yml
index a3276a69b62..e8d149c702f 100644
--- a/test/fixtures/dialects/spark3/select_delimited_identifier_with_escaped_backticks.yml
+++ b/test/fixtures/dialects/spark3/select_delimited_identifier_with_escaped_backticks.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: ac41862a8168d7b798fa081ccae6c0bfaab4d6204dbbc7ebec7e9affa1335ec1
+_hash: aec8fb095882be815f27b983b94b42aad467d6bda1379b69e52ad74f5bc7d956
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -22,7 +22,7 @@ file:
             alias_expression:
               identifier: '`some``alias`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -40,7 +40,7 @@ file:
               keyword: as
               identifier: '`some``alias`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -59,7 +59,7 @@ file:
             alias_expression:
               identifier: '`some````alias`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -78,7 +78,7 @@ file:
             alias_expression:
               identifier: '```some````alias```'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
@@ -97,7 +97,7 @@ file:
             alias_expression:
               identifier: '`some``alias`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
diff --git a/test/fixtures/dialects/spark3/select_distribute_by.yml b/test/fixtures/dialects/spark3/select_distribute_by.yml
index 12f536b5094..e74708eaf5e 100644
--- a/test/fixtures/dialects/spark3/select_distribute_by.yml
+++ b/test/fixtures/dialects/spark3/select_distribute_by.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 0c548c15ee4145b180187a65376ac03eca89bffe027d51901a8a60da3819345c
+_hash: e8d12a79d10158acab955206a1a3661c18693750e06c8d9c347746283e64cc92
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -29,7 +29,7 @@ file:
       - column_reference:
           identifier: age
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -52,7 +52,7 @@ file:
       - keyword: BY
       - literal: '1'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -79,7 +79,7 @@ file:
       - column_reference:
           identifier: age
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
diff --git a/test/fixtures/dialects/spark3/select_from_file.yml b/test/fixtures/dialects/spark3/select_from_file.yml
index 8b2f0fd45fb..9021106c740 100644
--- a/test/fixtures/dialects/spark3/select_from_file.yml
+++ b/test/fixtures/dialects/spark3/select_from_file.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: aa188759fc7de79e364f0c5c76c8c99d4eb147e549e072fbd1d28afeb5555b32
+_hash: 383cb125aae7a42036e3c65f5845b0f9722129b67b1e18ae8ac3f453191eed1f
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -30,7 +30,7 @@ file:
                 dot: .
                 identifier: '`examples/src/main/resources/users.parquet`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -55,7 +55,7 @@ file:
                 dot: .
                 identifier: '`examples/src/main/resources/users`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -80,7 +80,7 @@ file:
                 dot: .
                 identifier: '`examples/src/main/resources/users.orc`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -105,7 +105,7 @@ file:
                 dot: .
                 identifier: '`examples/src/main/resources/people.json`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -130,7 +130,7 @@ file:
                 dot: .
                 identifier: '`examples/src/main/resources/people`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -155,7 +155,7 @@ file:
                 dot: .
                 identifier: '`examples/src/main/resources/people.txt`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -180,7 +180,7 @@ file:
                 dot: .
                 identifier: '`//root/*.txt`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -205,7 +205,7 @@ file:
                 dot: .
                 identifier: '`//root/200?.txt`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -230,7 +230,7 @@ file:
                 dot: .
                 identifier: '`//root/200[23].txt`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -255,7 +255,7 @@ file:
                 dot: .
                 identifier: '`//root/200[^23].txt`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -280,7 +280,7 @@ file:
                 dot: .
                 identifier: '`//root/200[2-5].txt`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -305,7 +305,7 @@ file:
                 dot: .
                 identifier: '`//root/200[^2-5].txt`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -330,7 +330,7 @@ file:
                 dot: .
                 identifier: '`//root/20{04, 05}.txt`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -355,7 +355,7 @@ file:
                 dot: .
                 identifier: '`examples/src/main/resources/people.json`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -380,7 +380,7 @@ file:
                 dot: .
                 identifier: '`/events/events-kafka.json`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -405,7 +405,7 @@ file:
                 dot: .
                 identifier: '`/events/events-kafka`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -430,7 +430,7 @@ file:
                 dot: .
                 identifier: '`/sales/sales.csv`'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
diff --git a/test/fixtures/dialects/spark3/select_from_multiple_values_clauses.yml b/test/fixtures/dialects/spark3/select_from_multiple_values_clauses.yml
index 6cc6851bf72..a688c1b4afd 100644
--- a/test/fixtures/dialects/spark3/select_from_multiple_values_clauses.yml
+++ b/test/fixtures/dialects/spark3/select_from_multiple_values_clauses.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 7b8abf6a50370b547d156aabb25f6311f8f2c0c8567bc04f6993338bc82490a6
+_hash: 8663738dbff79ccc296b32646fde49c6c853b650722ab332e2cfa641a7279124
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -33,7 +33,7 @@ file:
                   scalar_value:
                     literal: '2'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
diff --git a/test/fixtures/dialects/spark3/select_from_values.yml b/test/fixtures/dialects/spark3/select_from_values.yml
index bffb1e16fd8..117955ef5ca 100644
--- a/test/fixtures/dialects/spark3/select_from_values.yml
+++ b/test/fixtures/dialects/spark3/select_from_values.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 599645e137bc6467a278a0d67fc2d30bfc40c8372e1d41d3ed083513e8d2bd6d
+_hash: 4e7a97cdc6ec29644c755516e6f89f66998a87aefeb8c8a4f58ff1fd161e240c
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -24,7 +24,7 @@ file:
                   scalar_value:
                     literal: '1'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -47,7 +47,7 @@ file:
                         literal: '1'
                       end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -73,7 +73,7 @@ file:
                         literal: '2'
                     - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -101,7 +101,7 @@ file:
                       literal: '3'
               end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -141,7 +141,7 @@ file:
                         end_bracket: )
               end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -180,7 +180,7 @@ file:
                       - end_bracket: )
               end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -208,7 +208,7 @@ file:
                   scalar_value:
                     literal: '2'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -276,7 +276,7 @@ file:
                       - end_bracket: )
               end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -324,7 +324,7 @@ file:
                         - end_bracket: )
               end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -346,7 +346,7 @@ file:
                   keyword: as
                   identifier: t
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -382,7 +382,7 @@ file:
                     - identifier: b
                     end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -431,7 +431,7 @@ file:
                 - identifier: b
                 end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -479,7 +479,7 @@ file:
                 - identifier: b
                 end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -500,7 +500,7 @@ file:
                 alias_expression:
                   identifier: t
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -535,7 +535,7 @@ file:
                     - identifier: b
                     end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -583,7 +583,7 @@ file:
                 - identifier: b
                 end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
diff --git a/test/fixtures/dialects/spark3/select_group_by.yml b/test/fixtures/dialects/spark3/select_group_by.yml
index 9e742ce000a..7007072ea62 100644
--- a/test/fixtures/dialects/spark3/select_group_by.yml
+++ b/test/fixtures/dialects/spark3/select_group_by.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 381980bd4a48794cf8b4b6ff24f9ae2b4331991187cf638fb2bc754450c2a2f6
+_hash: 1d96fa108bf0a7d4886ca012d15060c783d1454c539ad1b7158b393d61fcc3ad
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -44,7 +44,7 @@ file:
       - column_reference:
           identifier: id
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -81,7 +81,7 @@ file:
       - keyword: BY
       - literal: '1'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -134,7 +134,7 @@ file:
       - column_reference:
           identifier: id
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -169,7 +169,7 @@ file:
       - column_reference:
           identifier: car_model
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -223,7 +223,7 @@ file:
       - column_reference:
           identifier: id
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -303,7 +303,7 @@ file:
       - column_reference:
           identifier: city
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -355,7 +355,7 @@ file:
       - column_reference:
           identifier: car_model
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -407,7 +407,7 @@ file:
       - column_reference:
           identifier: car_model
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
@@ -429,7 +429,7 @@ file:
               table_reference:
                 identifier: person
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -484,7 +484,7 @@ file:
               table_reference:
                 identifier: person
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -532,7 +532,7 @@ file:
                   identifier: age
             - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
diff --git a/test/fixtures/dialects/spark3/select_having.yml b/test/fixtures/dialects/spark3/select_having.yml
index c54f9af4f4d..3143ee910ff 100644
--- a/test/fixtures/dialects/spark3/select_having.yml
+++ b/test/fixtures/dialects/spark3/select_having.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 10730fd1a61c93351b370fff6de37c2255a5097fc2ea3ae1a28cb1dff1fdee12
+_hash: effa68cc9efc760aa8b7f1f42caf6e4e462a915637813081e083037a5268cd8c
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -47,7 +47,7 @@ file:
             raw_comparison_operator: '='
           literal: "'Fremont'"
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -96,7 +96,7 @@ file:
             raw_comparison_operator: '>'
           literal: '15'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -138,7 +138,7 @@ file:
             raw_comparison_operator: '>'
           literal: '15'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -187,7 +187,7 @@ file:
             raw_comparison_operator: '>'
           literal: '15'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -233,7 +233,7 @@ file:
       - column_reference:
           identifier: city
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: SELECT
diff --git a/test/fixtures/dialects/spark3/select_hints.yml b/test/fixtures/dialects/spark3/select_hints.yml
index 17976005eec..65ff62e5ba0 100644
--- a/test/fixtures/dialects/spark3/select_hints.yml
+++ b/test/fixtures/dialects/spark3/select_hints.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: e13795a3c538e2db8ac00a38dbe255173ddb7aa305bc4b0603b45508a00de084
+_hash: 6b178ad90f1732024ad018d47169c0f030724189c31f0f47410655cc1815903c
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -39,7 +39,7 @@ file:
               table_reference:
                 identifier: t
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -73,7 +73,7 @@ file:
               table_reference:
                 identifier: t
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -107,7 +107,7 @@ file:
               table_reference:
                 identifier: t
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -143,7 +143,7 @@ file:
               table_reference:
                 identifier: t
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -177,7 +177,7 @@ file:
               table_reference:
                 identifier: t
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -213,7 +213,7 @@ file:
               table_reference:
                 identifier: t
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -243,7 +243,7 @@ file:
               table_reference:
                 identifier: t
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -277,7 +277,7 @@ file:
               table_reference:
                 identifier: t
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -329,7 +329,7 @@ file:
               table_reference:
                 identifier: t
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -389,7 +389,7 @@ file:
                 - dot: .
                 - identifier: key
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -449,7 +449,7 @@ file:
                 - dot: .
                 - identifier: key
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -509,7 +509,7 @@ file:
                 - dot: .
                 - identifier: key
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -569,7 +569,7 @@ file:
                 - dot: .
                 - identifier: key
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -629,7 +629,7 @@ file:
                 - dot: .
                 - identifier: key
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -689,7 +689,7 @@ file:
                 - dot: .
                 - identifier: key
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -749,7 +749,7 @@ file:
                 - dot: .
                 - identifier: key
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -809,7 +809,7 @@ file:
                 - dot: .
                 - identifier: key
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
diff --git a/test/fixtures/dialects/spark3/select_like_clause.yml b/test/fixtures/dialects/spark3/select_like_clause.yml
index 23ed2e289b2..b81a2b534bc 100644
--- a/test/fixtures/dialects/spark3/select_like_clause.yml
+++ b/test/fixtures/dialects/spark3/select_like_clause.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 86ba7d44959c1174dd19a0febb1337652cdcb7d0a15f8bf443143aa009c27883
+_hash: 29ffbaedfc4df2f64c3a8d41a08a1517b0e49af81a5d1e149d2b86c03e6e1f57
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -31,7 +31,7 @@ file:
           keyword: LIKE
           literal: "'M%'"
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -57,7 +57,7 @@ file:
           keyword: LIKE
           literal: "'M_ry'"
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -84,7 +84,7 @@ file:
         - keyword: LIKE
         - literal: "'M_ry'"
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -110,7 +110,7 @@ file:
           keyword: RLIKE
           literal: "'M+'"
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -136,7 +136,7 @@ file:
           keyword: REGEXP
           literal: "'M+'"
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -162,7 +162,7 @@ file:
           keyword: LIKE
           literal: "'%\\_%'"
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -190,7 +190,7 @@ file:
         - keyword: ESCAPE
         - literal: "'$'"
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -222,7 +222,7 @@ file:
           - literal: "'%an'"
           - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -254,7 +254,7 @@ file:
           - literal: "'%an'"
           - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -286,7 +286,7 @@ file:
           - literal: "'%an'"
           - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -319,7 +319,7 @@ file:
           - literal: "'%an'"
           - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -352,7 +352,7 @@ file:
           - literal: "'%an'"
           - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
diff --git a/test/fixtures/dialects/spark3/select_limit_clause.yml b/test/fixtures/dialects/spark3/select_limit_clause.yml
index ec4e09c8dcb..ed067f45058 100644
--- a/test/fixtures/dialects/spark3/select_limit_clause.yml
+++ b/test/fixtures/dialects/spark3/select_limit_clause.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 44e82f62b1ae9f46d6eb8dadbb355bcb80ae5afb2b15b12900a5cb60ccaae4c6
+_hash: 190283809cd373c5510165093d1ae63036f72633f59c1c41a5aa757d29540db0
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -32,7 +32,7 @@ file:
         keyword: LIMIT
         literal: '2'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -59,7 +59,7 @@ file:
       - keyword: LIMIT
       - keyword: ALL
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
diff --git a/test/fixtures/dialects/spark3/select_order_by.yml b/test/fixtures/dialects/spark3/select_order_by.yml
index eab181366ed..3c587e34990 100644
--- a/test/fixtures/dialects/spark3/select_order_by.yml
+++ b/test/fixtures/dialects/spark3/select_order_by.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: e20c3956005c3f5d3531b6a94eb53befcc43323a6e87c64a4a72c9af4df3e63f
+_hash: 90328bcd547dea4d15a92535f1d9ad7580044879889b068c48ee49c8e15f85bc
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -29,7 +29,7 @@ file:
       - column_reference:
           identifier: age
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -55,7 +55,7 @@ file:
       - keyword: NULLS
       - keyword: LAST
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -80,7 +80,7 @@ file:
           identifier: age
       - keyword: DESC
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -107,7 +107,7 @@ file:
       - keyword: NULLS
       - keyword: FIRST
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
diff --git a/test/fixtures/dialects/spark3/select_set_operators.yml b/test/fixtures/dialects/spark3/select_set_operators.yml
index 37f91ef69d1..70a69bb603a 100644
--- a/test/fixtures/dialects/spark3/select_set_operators.yml
+++ b/test/fixtures/dialects/spark3/select_set_operators.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 09ac2b90c406fbc03fedb31c442fd6d649b38e4a6ebf9e8dc156c885ceb33a3c
+_hash: 8e444999da5900080d29a3148d640f62f63b2b0242fd5105a6728ee524bc03f7
 file:
-- base:
+- statement:
     set_expression:
     - select_statement:
         select_clause:
@@ -36,7 +36,7 @@ file:
                 table_reference:
                   identifier: number2
 - statement_terminator: ;
-- base:
+- statement:
     set_expression:
       select_statement:
         select_clause:
@@ -71,7 +71,7 @@ file:
                     identifier: number2
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     set_expression:
     - select_statement:
         select_clause:
@@ -102,7 +102,7 @@ file:
                 table_reference:
                   identifier: number2
 - statement_terminator: ;
-- base:
+- statement:
     set_expression:
       select_statement:
         select_clause:
@@ -137,7 +137,7 @@ file:
                     identifier: number2
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     set_expression:
     - bracketed:
         start_bracket: (
@@ -174,7 +174,7 @@ file:
                     identifier: number2
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     set_expression:
     - bracketed:
         start_bracket: (
@@ -212,7 +212,7 @@ file:
                     identifier: number2
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     set_expression:
     - bracketed:
         start_bracket: (
@@ -250,7 +250,7 @@ file:
                     identifier: number2
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     set_expression:
     - bracketed:
         start_bracket: (
@@ -287,7 +287,7 @@ file:
                     identifier: number2
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     set_expression:
     - bracketed:
         start_bracket: (
@@ -325,7 +325,7 @@ file:
                     identifier: number2
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     set_expression:
       select_statement:
         select_clause:
diff --git a/test/fixtures/dialects/spark3/select_sort_by.yml b/test/fixtures/dialects/spark3/select_sort_by.yml
index 2c5c05f8842..15305987273 100644
--- a/test/fixtures/dialects/spark3/select_sort_by.yml
+++ b/test/fixtures/dialects/spark3/select_sort_by.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 013e20883076666f60cecb20b65c41da3b0cfbecc717df808d6f87b88c727202
+_hash: e9f5faadf9cf816b385cd25b192715e3e1d27fd9e7f9d04e25c77a643deff4be
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -44,7 +44,7 @@ file:
       - column_reference:
           identifier: name
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -72,7 +72,7 @@ file:
       - column_reference:
           identifier: name
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -110,7 +110,7 @@ file:
       - keyword: BY
       - literal: '1'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -137,7 +137,7 @@ file:
       - keyword: BY
       - literal: '1'
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -178,7 +178,7 @@ file:
       - keyword: NULLS
       - keyword: LAST
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -208,7 +208,7 @@ file:
       - keyword: NULLS
       - keyword: LAST
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -248,7 +248,7 @@ file:
           identifier: age
       - keyword: DESC
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -277,7 +277,7 @@ file:
           identifier: age
       - keyword: DESC
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -319,7 +319,7 @@ file:
       - keyword: NULLS
       - keyword: FIRST
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -350,7 +350,7 @@ file:
       - keyword: NULLS
       - keyword: FIRST
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -394,7 +394,7 @@ file:
           identifier: age
       - keyword: DESC
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
@@ -427,7 +427,7 @@ file:
           identifier: age
       - keyword: DESC
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
       - keyword: SELECT
diff --git a/test/fixtures/dialects/spark3/table_alias.yml b/test/fixtures/dialects/spark3/table_alias.yml
index f2e3d3c496a..6fb01b2acb9 100644
--- a/test/fixtures/dialects/spark3/table_alias.yml
+++ b/test/fixtures/dialects/spark3/table_alias.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 2f773b804324b2de42e9bf6cc9fd39f72fefd2d88b5ba8b9707007457b296b85
+_hash: ddc5e355f785104a2fc8c2054ba2dcedf18fc99c6af642851fd6651ebbb3ebd7
 file:
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -31,7 +31,7 @@ file:
                 - identifier: b
                 end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -57,7 +57,7 @@ file:
                 - identifier: b
                 end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -83,7 +83,7 @@ file:
                 - identifier: b
                 end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -108,7 +108,7 @@ file:
                 - identifier: b
                 end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -133,7 +133,7 @@ file:
                 - identifier: b
                 end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -158,7 +158,7 @@ file:
                 - identifier: b
                 end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
@@ -183,7 +183,7 @@ file:
                 - identifier: b
                 end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     select_statement:
       select_clause:
         keyword: select
diff --git a/test/fixtures/dialects/spark3/truncate_table.yml b/test/fixtures/dialects/spark3/truncate_table.yml
index 72cfc54216d..74fcb90c0bc 100644
--- a/test/fixtures/dialects/spark3/truncate_table.yml
+++ b/test/fixtures/dialects/spark3/truncate_table.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: d08b60a673b7a607091e271b2376fcef17e158b7f8ca215d319d7f68cc142fa9
+_hash: c68ae5dda87609bc1044152cc9fffb985e99502e48fb1cefb25ab7ab81905caf
 file:
-- base:
+- statement:
     truncate_table_statement:
     - keyword: TRUNCATE
     - keyword: TABLE
@@ -21,7 +21,7 @@ file:
         literal: '10'
         end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     truncate_table_statement:
     - keyword: TRUNCATE
     - keyword: TABLE
diff --git a/test/fixtures/dialects/spark3/use_database.yml b/test/fixtures/dialects/spark3/use_database.yml
index 389bf5eef81..6cf26bb3e1f 100644
--- a/test/fixtures/dialects/spark3/use_database.yml
+++ b/test/fixtures/dialects/spark3/use_database.yml
@@ -3,21 +3,21 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: a3d7022a51f9c96cff2d1d7ceedbf07692014b4646d450db9713023bfa7c087b
+_hash: 4cffb5bc98f03d3a210eeaaedec5f971693c01bc60d66b01623ccee0b6a8d3d3
 file:
-- base:
+- statement:
     use_statement:
       keyword: USE
       database_reference:
         identifier: database_name
 - statement_terminator: ;
-- base:
+- statement:
     use_statement:
       keyword: USE
       database_reference:
         identifier: userdb
 - statement_terminator: ;
-- base:
+- statement:
     use_statement:
       keyword: USE
       database_reference:
diff --git a/test/fixtures/dialects/spark3/values.yml b/test/fixtures/dialects/spark3/values.yml
index 78aeec67f5b..395defeb347 100644
--- a/test/fixtures/dialects/spark3/values.yml
+++ b/test/fixtures/dialects/spark3/values.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 9af54dece12b477ff65b8f8419592e924568af950fcc2c88a659876f7e40a0c9
+_hash: f7acf6e6ebf18063e7a42ef80f9b33467907bf439b56c7cb624b8be1eba6b182
 file:
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
@@ -19,7 +19,7 @@ file:
               literal: '2'
           - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
@@ -43,7 +43,7 @@ file:
               literal: '4'
           - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
@@ -97,7 +97,7 @@ file:
                 - end_bracket: )
           - end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
@@ -107,14 +107,14 @@ file:
       - scalar_value:
           literal: '2'
 - statement_terminator: ;
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
         scalar_value:
           literal: '1'
 - statement_terminator: ;
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
@@ -130,7 +130,7 @@ file:
         keyword: limit
         literal: '1'
 - statement_terminator: ;
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
diff --git a/test/fixtures/dialects/spark3/values_with_alias.yml b/test/fixtures/dialects/spark3/values_with_alias.yml
index 8b5d9f66ba1..d62ab9e7d26 100644
--- a/test/fixtures/dialects/spark3/values_with_alias.yml
+++ b/test/fixtures/dialects/spark3/values_with_alias.yml
@@ -3,9 +3,9 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: 04d24cc13f9e48060677aaa964bac73ba7bc0fac333c4676fa32c0970e9cd1a9
+_hash: 1359d8be6bbbd128387df329b92ccf812cb139dec945bea54405e6c8f309a013
 file:
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
@@ -22,7 +22,7 @@ file:
         keyword: as
         identifier: t
 - statement_terminator: ;
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
@@ -38,7 +38,7 @@ file:
       alias_expression:
         identifier: t
 - statement_terminator: ;
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
@@ -62,7 +62,7 @@ file:
           - identifier: b
           end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
@@ -96,7 +96,7 @@ file:
           - identifier: b
           end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
@@ -119,7 +119,7 @@ file:
           - identifier: b
           end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
@@ -142,7 +142,7 @@ file:
           - identifier: b
           end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
@@ -164,7 +164,7 @@ file:
           - identifier: b
           end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
@@ -197,7 +197,7 @@ file:
           - identifier: b
           end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
@@ -230,7 +230,7 @@ file:
           - identifier: b
           end_bracket: )
 - statement_terminator: ;
-- base:
+- statement:
     values_clause:
       keyword: values
       delimited_values:
diff --git a/test/fixtures/dialects/tsql/hints.yml b/test/fixtures/dialects/tsql/hints.yml
index d697ad5021d..461202fef07 100644
--- a/test/fixtures/dialects/tsql/hints.yml
+++ b/test/fixtures/dialects/tsql/hints.yml
@@ -3,7 +3,7 @@
 # computed by SQLFluff when running the tests. Please run
 # `python test/generate_parse_fixture_yml.py`  to generate them after adding or
 # altering SQL files.
-_hash: c6976fb5117776ea0122563b8d98741bb6c062204c4d4d9707672ac626c7ec33
+_hash: 741e7277d40b88867459b772cd5044842a16abb00e6be634311ee0439bf4d50c
 file:
 - batch:
     statement:
@@ -635,7 +635,7 @@ file:
         - identifier: Production
         - dot: .
         - identifier: Product
-        base:
+        post_table_expression_grammar:
           keyword: WITH
           bracketed:
             start_bracket: (
@@ -697,7 +697,7 @@ file:
                 alias_expression:
                   keyword: AS
                   identifier: d
-                base:
+                post_table_expression_grammar:
                   keyword: WITH
                   bracketed:
                     start_bracket: (
@@ -796,7 +796,7 @@ file:
                 alias_expression:
                   keyword: AS
                   identifier: d
-                base:
+                post_table_expression_grammar:
                   keyword: WITH
                   bracketed:
                     start_bracket: (
@@ -904,7 +904,7 @@ file:
                 alias_expression:
                   keyword: AS
                   identifier: d
-                base:
+                post_table_expression_grammar:
                   keyword: WITH
                   bracketed:
                     start_bracket: (
@@ -974,7 +974,7 @@ file:
                 - identifier: dbo
                 - dot: .
                 - identifier: tableX
-              base:
+              post_table_expression_grammar:
                 keyword: WITH
                 bracketed:
                   start_bracket: (
diff --git a/test/generate_parse_fixture_yml.py b/test/generate_parse_fixture_yml.py
index ac1021d0a6e..b07cf83e246 100644
--- a/test/generate_parse_fixture_yml.py
+++ b/test/generate_parse_fixture_yml.py
@@ -5,6 +5,7 @@
 import yaml
 
 from conftest import compute_parse_tree_hash, get_parse_fixtures, parse_example_file
+from sqlfluff.core.errors import SQLParseError
 
 
 def generate_parse_fixture(example):
@@ -17,7 +18,16 @@ def generate_parse_fixture(example):
     path = os.path.join("test", "fixtures", "dialects", dialect, root + ".yml")
     with open(path, "w", newline="\n") as f:
         r = None
+
         if tree:
+
+            # Check we don't have any base types or unparsable sections
+            types = tree.type_set()
+            if "base" in types:
+                raise SQLParseError(f"Unnamed base section when parsing: {f.name}")
+            if "unparsable" in types:
+                raise SQLParseError(f"Could not parse: {f.name}")
+
             r = dict(
                 [("_hash", _hash)]
                 + list(tree.as_record(code_only=True, show_raw=True).items())


Code review comments:
diff_hunk: @@ -2212,6 +2213,7 @@ class PartitionBoundSpecSegment(BaseSegment):
     As per https://www.postgresql.org/docs/13/sql-altertable.html.
     """
 
+    type = "partition_bound_segment"
path: src/sqlfluff/dialects/dialect_postgres.py
text: @user1:
Could we name it this instead? Having a segment whose type mentions `segment` seems redundant. `partition_bound_spec` is the term used in the docs linked above.
```suggestion
    type = "partition_bound_spec"
```

@author:
Done.

diff_hunk: @@ -3535,6 +3537,7 @@ class TransactionStatementSegment(BaseSegment):
     https://docs.snowflake.com/en/sql-reference/sql/rollback.html
     """
 
+    type = "transaction_statement_segment"
path: src/sqlfluff/dialects/dialect_snowflake.py
text: @user1:
```suggestion
    type = "transaction_statement"
```

@author:
Done.

diff_hunk: @@ -2969,6 +2969,7 @@ class PostTableExpressionGrammar(BaseSegment):
     https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-ver15
     """
 
+    type = "post_table_expression_grammar"
path: src/sqlfluff/dialects/dialect_tsql.py
text: @user1:
```suggestion
    type = "post_table_expression"
```

@author:
Done.

diff_hunk: @@ -2322,6 +2324,7 @@ class TableConstraintUsingIndexSegment(BaseSegment):
     As specified in: https://www.postgresql.org/docs/13/sql-altertable.html.
     """
 
+    type = "table_constraint_segment"
path: src/sqlfluff/dialects/dialect_postgres.py
text: @user1:
```suggestion
    type = "table_constraint"
```

@author:
This is a bit bigger as already set to `table_constraint_segment` in other dialects. Agree we should change it though. But don't be surprised when even more YAMLs change now!

@author:
Done.