Skip to main content

mz_sql_parser/mnt/build/debug/build/mz-sql-parser-a49ab1accfcb2745/out/
visit.rs

1pub trait Visit<'ast, T: AstInfo, > {
2    fn visit_abbreviated_grant_or_revoke_statement(&mut self, node: &'ast AbbreviatedGrantOrRevokeStatement<T>) {
3        visit_abbreviated_grant_or_revoke_statement(self, node)
4    }
5    fn visit_abbreviated_grant_statement(&mut self, node: &'ast AbbreviatedGrantStatement<T>) {
6        visit_abbreviated_grant_statement(self, node)
7    }
8    fn visit_abbreviated_revoke_statement(&mut self, node: &'ast AbbreviatedRevokeStatement<T>) {
9        visit_abbreviated_revoke_statement(self, node)
10    }
11    fn visit_alter_cluster_action(&mut self, node: &'ast AlterClusterAction<T>) {
12        visit_alter_cluster_action(self, node)
13    }
14    fn visit_alter_cluster_statement(&mut self, node: &'ast AlterClusterStatement<T>) {
15        visit_alter_cluster_statement(self, node)
16    }
17    fn visit_alter_connection_action(&mut self, node: &'ast AlterConnectionAction<T>) {
18        visit_alter_connection_action(self, node)
19    }
20    fn visit_alter_connection_option(&mut self, node: &'ast AlterConnectionOption<T>) {
21        visit_alter_connection_option(self, node)
22    }
23    fn visit_alter_connection_option_name(&mut self, node: &'ast AlterConnectionOptionName) {
24        visit_alter_connection_option_name(self, node)
25    }
26    fn visit_alter_connection_statement(&mut self, node: &'ast AlterConnectionStatement<T>) {
27        visit_alter_connection_statement(self, node)
28    }
29    fn visit_alter_default_privileges_statement(&mut self, node: &'ast AlterDefaultPrivilegesStatement<T>) {
30        visit_alter_default_privileges_statement(self, node)
31    }
32    fn visit_alter_index_action(&mut self, node: &'ast AlterIndexAction<T>) {
33        visit_alter_index_action(self, node)
34    }
35    fn visit_alter_index_statement(&mut self, node: &'ast AlterIndexStatement<T>) {
36        visit_alter_index_statement(self, node)
37    }
38    fn visit_alter_materialized_view_apply_replacement_statement(&mut self, node: &'ast AlterMaterializedViewApplyReplacementStatement) {
39        visit_alter_materialized_view_apply_replacement_statement(self, node)
40    }
41    fn visit_alter_network_policy_statement(&mut self, node: &'ast AlterNetworkPolicyStatement<T>) {
42        visit_alter_network_policy_statement(self, node)
43    }
44    fn visit_alter_object_rename_statement(&mut self, node: &'ast AlterObjectRenameStatement) {
45        visit_alter_object_rename_statement(self, node)
46    }
47    fn visit_alter_object_swap_statement(&mut self, node: &'ast AlterObjectSwapStatement) {
48        visit_alter_object_swap_statement(self, node)
49    }
50    fn visit_alter_owner_statement(&mut self, node: &'ast AlterOwnerStatement<T>) {
51        visit_alter_owner_statement(self, node)
52    }
53    fn visit_alter_retain_history_statement(&mut self, node: &'ast AlterRetainHistoryStatement<T>) {
54        visit_alter_retain_history_statement(self, node)
55    }
56    fn visit_alter_role_option(&mut self, node: &'ast AlterRoleOption) {
57        visit_alter_role_option(self, node)
58    }
59    fn visit_alter_role_statement(&mut self, node: &'ast AlterRoleStatement<T>) {
60        visit_alter_role_statement(self, node)
61    }
62    fn visit_alter_secret_statement(&mut self, node: &'ast AlterSecretStatement<T>) {
63        visit_alter_secret_statement(self, node)
64    }
65    fn visit_alter_set_cluster_statement(&mut self, node: &'ast AlterSetClusterStatement<T>) {
66        visit_alter_set_cluster_statement(self, node)
67    }
68    fn visit_alter_sink_action(&mut self, node: &'ast AlterSinkAction<T>) {
69        visit_alter_sink_action(self, node)
70    }
71    fn visit_alter_sink_statement(&mut self, node: &'ast AlterSinkStatement<T>) {
72        visit_alter_sink_statement(self, node)
73    }
74    fn visit_alter_source_action(&mut self, node: &'ast AlterSourceAction<T>) {
75        visit_alter_source_action(self, node)
76    }
77    fn visit_alter_source_add_subsource_option(&mut self, node: &'ast AlterSourceAddSubsourceOption<T>) {
78        visit_alter_source_add_subsource_option(self, node)
79    }
80    fn visit_alter_source_add_subsource_option_name(&mut self, node: &'ast AlterSourceAddSubsourceOptionName) {
81        visit_alter_source_add_subsource_option_name(self, node)
82    }
83    fn visit_alter_source_statement(&mut self, node: &'ast AlterSourceStatement<T>) {
84        visit_alter_source_statement(self, node)
85    }
86    fn visit_alter_system_reset_all_statement(&mut self, node: &'ast AlterSystemResetAllStatement) {
87        visit_alter_system_reset_all_statement(self, node)
88    }
89    fn visit_alter_system_reset_statement(&mut self, node: &'ast AlterSystemResetStatement) {
90        visit_alter_system_reset_statement(self, node)
91    }
92    fn visit_alter_system_set_statement(&mut self, node: &'ast AlterSystemSetStatement) {
93        visit_alter_system_set_statement(self, node)
94    }
95    fn visit_alter_table_add_column_statement(&mut self, node: &'ast AlterTableAddColumnStatement<T>) {
96        visit_alter_table_add_column_statement(self, node)
97    }
98    fn visit_as_of(&mut self, node: &'ast AsOf<T>) {
99        visit_as_of(self, node)
100    }
101    fn visit_assignment(&mut self, node: &'ast Assignment<T>) {
102        visit_assignment(self, node)
103    }
104    fn visit_avro_doc_on(&mut self, node: &'ast AvroDocOn<T>) {
105        visit_avro_doc_on(self, node)
106    }
107    fn visit_avro_schema(&mut self, node: &'ast AvroSchema<T>) {
108        visit_avro_schema(self, node)
109    }
110    fn visit_avro_schema_option(&mut self, node: &'ast AvroSchemaOption<T>) {
111        visit_avro_schema_option(self, node)
112    }
113    fn visit_avro_schema_option_name(&mut self, node: &'ast AvroSchemaOptionName) {
114        visit_avro_schema_option_name(self, node)
115    }
116    fn visit_catalog_name(&mut self, node: &'ast CatalogName) {
117        visit_catalog_name(self, node)
118    }
119    fn visit_close_statement(&mut self, node: &'ast CloseStatement) {
120        visit_close_statement(self, node)
121    }
122    fn visit_cluster_alter_option(&mut self, node: &'ast ClusterAlterOption<T>) {
123        visit_cluster_alter_option(self, node)
124    }
125    fn visit_cluster_alter_option_name(&mut self, node: &'ast ClusterAlterOptionName) {
126        visit_cluster_alter_option_name(self, node)
127    }
128    fn visit_cluster_alter_option_value(&mut self, node: &'ast ClusterAlterOptionValue<T>) {
129        visit_cluster_alter_option_value(self, node)
130    }
131    fn visit_cluster_alter_until_ready_option(&mut self, node: &'ast ClusterAlterUntilReadyOption<T>) {
132        visit_cluster_alter_until_ready_option(self, node)
133    }
134    fn visit_cluster_alter_until_ready_option_name(&mut self, node: &'ast ClusterAlterUntilReadyOptionName) {
135        visit_cluster_alter_until_ready_option_name(self, node)
136    }
137    fn visit_cluster_feature(&mut self, node: &'ast ClusterFeature<T>) {
138        visit_cluster_feature(self, node)
139    }
140    fn visit_cluster_feature_name(&mut self, node: &'ast ClusterFeatureName) {
141        visit_cluster_feature_name(self, node)
142    }
143    fn visit_cluster_option(&mut self, node: &'ast ClusterOption<T>) {
144        visit_cluster_option(self, node)
145    }
146    fn visit_cluster_option_name(&mut self, node: &'ast ClusterOptionName) {
147        visit_cluster_option_name(self, node)
148    }
149    fn visit_cluster_schedule_option_value(&mut self, node: &'ast ClusterScheduleOptionValue) {
150        visit_cluster_schedule_option_value(self, node)
151    }
152    fn visit_column_def(&mut self, node: &'ast ColumnDef<T>) {
153        visit_column_def(self, node)
154    }
155    fn visit_column_name(&mut self, node: &'ast ColumnName<T>) {
156        visit_column_name(self, node)
157    }
158    fn visit_column_option(&mut self, node: &'ast ColumnOption<T>) {
159        visit_column_option(self, node)
160    }
161    fn visit_column_option_def(&mut self, node: &'ast ColumnOptionDef<T>) {
162        visit_column_option_def(self, node)
163    }
164    fn visit_column_versioned(&mut self, node: &'ast ColumnVersioned) {
165        visit_column_versioned(self, node)
166    }
167    fn visit_comment_object_type(&mut self, node: &'ast CommentObjectType<T>) {
168        visit_comment_object_type(self, node)
169    }
170    fn visit_comment_statement(&mut self, node: &'ast CommentStatement<T>) {
171        visit_comment_statement(self, node)
172    }
173    fn visit_commit_statement(&mut self, node: &'ast CommitStatement) {
174        visit_commit_statement(self, node)
175    }
176    fn visit_connection_default_aws_privatelink(&mut self, node: &'ast ConnectionDefaultAwsPrivatelink<T>) {
177        visit_connection_default_aws_privatelink(self, node)
178    }
179    fn visit_connection_option(&mut self, node: &'ast ConnectionOption<T>) {
180        visit_connection_option(self, node)
181    }
182    fn visit_connection_option_name(&mut self, node: &'ast ConnectionOptionName) {
183        visit_connection_option_name(self, node)
184    }
185    fn visit_connection_rule_pattern(&mut self, node: &'ast ConnectionRulePattern) {
186        visit_connection_rule_pattern(self, node)
187    }
188    fn visit_copy_direction(&mut self, node: &'ast CopyDirection) {
189        visit_copy_direction(self, node)
190    }
191    fn visit_copy_option(&mut self, node: &'ast CopyOption<T>) {
192        visit_copy_option(self, node)
193    }
194    fn visit_copy_option_name(&mut self, node: &'ast CopyOptionName) {
195        visit_copy_option_name(self, node)
196    }
197    fn visit_copy_relation(&mut self, node: &'ast CopyRelation<T>) {
198        visit_copy_relation(self, node)
199    }
200    fn visit_copy_statement(&mut self, node: &'ast CopyStatement<T>) {
201        visit_copy_statement(self, node)
202    }
203    fn visit_copy_target(&mut self, node: &'ast CopyTarget<T>) {
204        visit_copy_target(self, node)
205    }
206    fn visit_create_cluster_replica_statement(&mut self, node: &'ast CreateClusterReplicaStatement<T>) {
207        visit_create_cluster_replica_statement(self, node)
208    }
209    fn visit_create_cluster_statement(&mut self, node: &'ast CreateClusterStatement<T>) {
210        visit_create_cluster_statement(self, node)
211    }
212    fn visit_create_connection_option(&mut self, node: &'ast CreateConnectionOption<T>) {
213        visit_create_connection_option(self, node)
214    }
215    fn visit_create_connection_option_name(&mut self, node: &'ast CreateConnectionOptionName) {
216        visit_create_connection_option_name(self, node)
217    }
218    fn visit_create_connection_statement(&mut self, node: &'ast CreateConnectionStatement<T>) {
219        visit_create_connection_statement(self, node)
220    }
221    fn visit_create_connection_type(&mut self, node: &'ast CreateConnectionType) {
222        visit_create_connection_type(self, node)
223    }
224    fn visit_create_database_statement(&mut self, node: &'ast CreateDatabaseStatement) {
225        visit_create_database_statement(self, node)
226    }
227    fn visit_create_index_statement(&mut self, node: &'ast CreateIndexStatement<T>) {
228        visit_create_index_statement(self, node)
229    }
230    fn visit_create_materialized_view_statement(&mut self, node: &'ast CreateMaterializedViewStatement<T>) {
231        visit_create_materialized_view_statement(self, node)
232    }
233    fn visit_create_network_policy_statement(&mut self, node: &'ast CreateNetworkPolicyStatement<T>) {
234        visit_create_network_policy_statement(self, node)
235    }
236    fn visit_create_role_statement(&mut self, node: &'ast CreateRoleStatement) {
237        visit_create_role_statement(self, node)
238    }
239    fn visit_create_schema_statement(&mut self, node: &'ast CreateSchemaStatement) {
240        visit_create_schema_statement(self, node)
241    }
242    fn visit_create_secret_statement(&mut self, node: &'ast CreateSecretStatement<T>) {
243        visit_create_secret_statement(self, node)
244    }
245    fn visit_create_sink_connection(&mut self, node: &'ast CreateSinkConnection<T>) {
246        visit_create_sink_connection(self, node)
247    }
248    fn visit_create_sink_option(&mut self, node: &'ast CreateSinkOption<T>) {
249        visit_create_sink_option(self, node)
250    }
251    fn visit_create_sink_option_name(&mut self, node: &'ast CreateSinkOptionName) {
252        visit_create_sink_option_name(self, node)
253    }
254    fn visit_create_sink_statement(&mut self, node: &'ast CreateSinkStatement<T>) {
255        visit_create_sink_statement(self, node)
256    }
257    fn visit_create_source_connection(&mut self, node: &'ast CreateSourceConnection<T>) {
258        visit_create_source_connection(self, node)
259    }
260    fn visit_create_source_option(&mut self, node: &'ast CreateSourceOption<T>) {
261        visit_create_source_option(self, node)
262    }
263    fn visit_create_source_option_name(&mut self, node: &'ast CreateSourceOptionName) {
264        visit_create_source_option_name(self, node)
265    }
266    fn visit_create_source_statement(&mut self, node: &'ast CreateSourceStatement<T>) {
267        visit_create_source_statement(self, node)
268    }
269    fn visit_create_subsource_option(&mut self, node: &'ast CreateSubsourceOption<T>) {
270        visit_create_subsource_option(self, node)
271    }
272    fn visit_create_subsource_option_name(&mut self, node: &'ast CreateSubsourceOptionName) {
273        visit_create_subsource_option_name(self, node)
274    }
275    fn visit_create_subsource_statement(&mut self, node: &'ast CreateSubsourceStatement<T>) {
276        visit_create_subsource_statement(self, node)
277    }
278    fn visit_create_table_from_source_statement(&mut self, node: &'ast CreateTableFromSourceStatement<T>) {
279        visit_create_table_from_source_statement(self, node)
280    }
281    fn visit_create_table_statement(&mut self, node: &'ast CreateTableStatement<T>) {
282        visit_create_table_statement(self, node)
283    }
284    fn visit_create_type_as(&mut self, node: &'ast CreateTypeAs<T>) {
285        visit_create_type_as(self, node)
286    }
287    fn visit_create_type_list_option(&mut self, node: &'ast CreateTypeListOption<T>) {
288        visit_create_type_list_option(self, node)
289    }
290    fn visit_create_type_list_option_name(&mut self, node: &'ast CreateTypeListOptionName) {
291        visit_create_type_list_option_name(self, node)
292    }
293    fn visit_create_type_map_option(&mut self, node: &'ast CreateTypeMapOption<T>) {
294        visit_create_type_map_option(self, node)
295    }
296    fn visit_create_type_map_option_name(&mut self, node: &'ast CreateTypeMapOptionName) {
297        visit_create_type_map_option_name(self, node)
298    }
299    fn visit_create_type_statement(&mut self, node: &'ast CreateTypeStatement<T>) {
300        visit_create_type_statement(self, node)
301    }
302    fn visit_create_view_statement(&mut self, node: &'ast CreateViewStatement<T>) {
303        visit_create_view_statement(self, node)
304    }
305    fn visit_create_webhook_source_body(&mut self, node: &'ast CreateWebhookSourceBody) {
306        visit_create_webhook_source_body(self, node)
307    }
308    fn visit_create_webhook_source_check(&mut self, node: &'ast CreateWebhookSourceCheck<T>) {
309        visit_create_webhook_source_check(self, node)
310    }
311    fn visit_create_webhook_source_check_options(&mut self, node: &'ast CreateWebhookSourceCheckOptions<T>) {
312        visit_create_webhook_source_check_options(self, node)
313    }
314    fn visit_create_webhook_source_filter_header(&mut self, node: &'ast CreateWebhookSourceFilterHeader) {
315        visit_create_webhook_source_filter_header(self, node)
316    }
317    fn visit_create_webhook_source_header(&mut self, node: &'ast CreateWebhookSourceHeader) {
318        visit_create_webhook_source_header(self, node)
319    }
320    fn visit_create_webhook_source_include_headers(&mut self, node: &'ast CreateWebhookSourceIncludeHeaders) {
321        visit_create_webhook_source_include_headers(self, node)
322    }
323    fn visit_create_webhook_source_map_header(&mut self, node: &'ast CreateWebhookSourceMapHeader) {
324        visit_create_webhook_source_map_header(self, node)
325    }
326    fn visit_create_webhook_source_secret(&mut self, node: &'ast CreateWebhookSourceSecret<T>) {
327        visit_create_webhook_source_secret(self, node)
328    }
329    fn visit_create_webhook_source_statement(&mut self, node: &'ast CreateWebhookSourceStatement<T>) {
330        visit_create_webhook_source_statement(self, node)
331    }
332    fn visit_csr_config_option(&mut self, node: &'ast CsrConfigOption<T>) {
333        visit_csr_config_option(self, node)
334    }
335    fn visit_csr_config_option_name(&mut self, node: &'ast CsrConfigOptionName<T>) {
336        visit_csr_config_option_name(self, node)
337    }
338    fn visit_csr_connection(&mut self, node: &'ast CsrConnection<T>) {
339        visit_csr_connection(self, node)
340    }
341    fn visit_csr_connection_avro(&mut self, node: &'ast CsrConnectionAvro<T>) {
342        visit_csr_connection_avro(self, node)
343    }
344    fn visit_csr_connection_protobuf(&mut self, node: &'ast CsrConnectionProtobuf<T>) {
345        visit_csr_connection_protobuf(self, node)
346    }
347    fn visit_csr_seed_avro(&mut self, node: &'ast CsrSeedAvro) {
348        visit_csr_seed_avro(self, node)
349    }
350    fn visit_csr_seed_protobuf(&mut self, node: &'ast CsrSeedProtobuf) {
351        visit_csr_seed_protobuf(self, node)
352    }
353    fn visit_csr_seed_protobuf_schema(&mut self, node: &'ast CsrSeedProtobufSchema) {
354        visit_csr_seed_protobuf_schema(self, node)
355    }
356    fn visit_csv_columns(&mut self, node: &'ast CsvColumns) {
357        visit_csv_columns(self, node)
358    }
359    fn visit_cte(&mut self, node: &'ast Cte<T>) {
360        visit_cte(self, node)
361    }
362    fn visit_cte_block(&mut self, node: &'ast CteBlock<T>) {
363        visit_cte_block(self, node)
364    }
365    fn visit_cte_mut_rec(&mut self, node: &'ast CteMutRec<T>) {
366        visit_cte_mut_rec(self, node)
367    }
368    fn visit_cte_mut_rec_column_def(&mut self, node: &'ast CteMutRecColumnDef<T>) {
369        visit_cte_mut_rec_column_def(self, node)
370    }
371    fn visit_date_time_field(&mut self, node: &'ast DateTimeField) {
372        visit_date_time_field(self, node)
373    }
374    fn visit_deallocate_statement(&mut self, node: &'ast DeallocateStatement) {
375        visit_deallocate_statement(self, node)
376    }
377    fn visit_declare_statement(&mut self, node: &'ast DeclareStatement<T>) {
378        visit_declare_statement(self, node)
379    }
380    fn visit_deferred_item_name(&mut self, node: &'ast DeferredItemName<T>) {
381        visit_deferred_item_name(self, node)
382    }
383    fn visit_delete_statement(&mut self, node: &'ast DeleteStatement<T>) {
384        visit_delete_statement(self, node)
385    }
386    fn visit_discard_statement(&mut self, node: &'ast DiscardStatement) {
387        visit_discard_statement(self, node)
388    }
389    fn visit_discard_target(&mut self, node: &'ast DiscardTarget) {
390        visit_discard_target(self, node)
391    }
392    fn visit_distinct(&mut self, node: &'ast Distinct<T>) {
393        visit_distinct(self, node)
394    }
395    fn visit_doc_on_identifier(&mut self, node: &'ast DocOnIdentifier<T>) {
396        visit_doc_on_identifier(self, node)
397    }
398    fn visit_doc_on_schema(&mut self, node: &'ast DocOnSchema) {
399        visit_doc_on_schema(self, node)
400    }
401    fn visit_drop_objects_statement(&mut self, node: &'ast DropObjectsStatement) {
402        visit_drop_objects_statement(self, node)
403    }
404    fn visit_drop_owned_statement(&mut self, node: &'ast DropOwnedStatement<T>) {
405        visit_drop_owned_statement(self, node)
406    }
407    fn visit_execute_statement(&mut self, node: &'ast ExecuteStatement<T>) {
408        visit_execute_statement(self, node)
409    }
410    fn visit_execute_unit_test_statement(&mut self, node: &'ast ExecuteUnitTestStatement<T>) {
411        visit_execute_unit_test_statement(self, node)
412    }
413    fn visit_expected_result_def(&mut self, node: &'ast ExpectedResultDef<T>) {
414        visit_expected_result_def(self, node)
415    }
416    fn visit_explain_analyze_cluster_statement(&mut self, node: &'ast ExplainAnalyzeClusterStatement) {
417        visit_explain_analyze_cluster_statement(self, node)
418    }
419    fn visit_explain_analyze_computation_properties(&mut self, node: &'ast ExplainAnalyzeComputationProperties) {
420        visit_explain_analyze_computation_properties(self, node)
421    }
422    fn visit_explain_analyze_computation_property(&mut self, node: &'ast ExplainAnalyzeComputationProperty) {
423        visit_explain_analyze_computation_property(self, node)
424    }
425    fn visit_explain_analyze_object_statement(&mut self, node: &'ast ExplainAnalyzeObjectStatement<T>) {
426        visit_explain_analyze_object_statement(self, node)
427    }
428    fn visit_explain_analyze_property(&mut self, node: &'ast ExplainAnalyzeProperty) {
429        visit_explain_analyze_property(self, node)
430    }
431    fn visit_explain_format(&mut self, node: &'ast ExplainFormat) {
432        visit_explain_format(self, node)
433    }
434    fn visit_explain_plan_option(&mut self, node: &'ast ExplainPlanOption<T>) {
435        visit_explain_plan_option(self, node)
436    }
437    fn visit_explain_plan_option_name(&mut self, node: &'ast ExplainPlanOptionName) {
438        visit_explain_plan_option_name(self, node)
439    }
440    fn visit_explain_plan_statement(&mut self, node: &'ast ExplainPlanStatement<T>) {
441        visit_explain_plan_statement(self, node)
442    }
443    fn visit_explain_pushdown_statement(&mut self, node: &'ast ExplainPushdownStatement<T>) {
444        visit_explain_pushdown_statement(self, node)
445    }
446    fn visit_explain_sink_schema_for(&mut self, node: &'ast ExplainSinkSchemaFor) {
447        visit_explain_sink_schema_for(self, node)
448    }
449    fn visit_explain_sink_schema_statement(&mut self, node: &'ast ExplainSinkSchemaStatement<T>) {
450        visit_explain_sink_schema_statement(self, node)
451    }
452    fn visit_explain_stage(&mut self, node: &'ast ExplainStage) {
453        visit_explain_stage(self, node)
454    }
455    fn visit_explain_timestamp_statement(&mut self, node: &'ast ExplainTimestampStatement<T>) {
456        visit_explain_timestamp_statement(self, node)
457    }
458    fn visit_explainee(&mut self, node: &'ast Explainee<T>) {
459        visit_explainee(self, node)
460    }
461    fn visit_expr(&mut self, node: &'ast Expr<T>) {
462        visit_expr(self, node)
463    }
464    fn visit_external_reference_export(&mut self, node: &'ast ExternalReferenceExport) {
465        visit_external_reference_export(self, node)
466    }
467    fn visit_external_references(&mut self, node: &'ast ExternalReferences) {
468        visit_external_references(self, node)
469    }
470    fn visit_fetch_direction(&mut self, node: &'ast FetchDirection) {
471        visit_fetch_direction(self, node)
472    }
473    fn visit_fetch_option(&mut self, node: &'ast FetchOption<T>) {
474        visit_fetch_option(self, node)
475    }
476    fn visit_fetch_option_name(&mut self, node: &'ast FetchOptionName) {
477        visit_fetch_option_name(self, node)
478    }
479    fn visit_fetch_statement(&mut self, node: &'ast FetchStatement<T>) {
480        visit_fetch_statement(self, node)
481    }
482    fn visit_format(&mut self, node: &'ast Format<T>) {
483        visit_format(self, node)
484    }
485    fn visit_format_specifier(&mut self, node: &'ast FormatSpecifier<T>) {
486        visit_format_specifier(self, node)
487    }
488    fn visit_function(&mut self, node: &'ast Function<T>) {
489        visit_function(self, node)
490    }
491    fn visit_function_args(&mut self, node: &'ast FunctionArgs<T>) {
492        visit_function_args(self, node)
493    }
494    fn visit_grant_privileges_statement(&mut self, node: &'ast GrantPrivilegesStatement<T>) {
495        visit_grant_privileges_statement(self, node)
496    }
497    fn visit_grant_role_statement(&mut self, node: &'ast GrantRoleStatement<T>) {
498        visit_grant_role_statement(self, node)
499    }
500    fn visit_grant_target_all_specification(&mut self, node: &'ast GrantTargetAllSpecification<T>) {
501        visit_grant_target_all_specification(self, node)
502    }
503    fn visit_grant_target_specification(&mut self, node: &'ast GrantTargetSpecification<T>) {
504        visit_grant_target_specification(self, node)
505    }
506    fn visit_grant_target_specification_inner(&mut self, node: &'ast GrantTargetSpecificationInner<T>) {
507        visit_grant_target_specification_inner(self, node)
508    }
509    fn visit_homogenizing_function(&mut self, node: &'ast HomogenizingFunction) {
510        visit_homogenizing_function(self, node)
511    }
512    fn visit_iceberg_sink_config_option(&mut self, node: &'ast IcebergSinkConfigOption<T>) {
513        visit_iceberg_sink_config_option(self, node)
514    }
515    fn visit_iceberg_sink_config_option_name(&mut self, node: &'ast IcebergSinkConfigOptionName) {
516        visit_iceberg_sink_config_option_name(self, node)
517    }
518    fn visit_iceberg_sink_mode(&mut self, node: &'ast IcebergSinkMode) {
519        visit_iceberg_sink_mode(self, node)
520    }
521    fn visit_ident(&mut self, node: &'ast Ident) {
522        visit_ident(self, node)
523    }
524    fn visit_ident_error(&mut self, node: &'ast IdentError) {
525        visit_ident_error(self, node)
526    }
527    fn visit_if_exists_behavior(&mut self, node: &'ast IfExistsBehavior) {
528        visit_if_exists_behavior(self, node)
529    }
530    fn visit_index_option(&mut self, node: &'ast IndexOption<T>) {
531        visit_index_option(self, node)
532    }
533    fn visit_index_option_name(&mut self, node: &'ast IndexOptionName) {
534        visit_index_option_name(self, node)
535    }
536    fn visit_insert_source(&mut self, node: &'ast InsertSource<T>) {
537        visit_insert_source(self, node)
538    }
539    fn visit_insert_statement(&mut self, node: &'ast InsertStatement<T>) {
540        visit_insert_statement(self, node)
541    }
542    fn visit_inspect_shard_statement(&mut self, node: &'ast InspectShardStatement) {
543        visit_inspect_shard_statement(self, node)
544    }
545    fn visit_interval_value(&mut self, node: &'ast IntervalValue) {
546        visit_interval_value(self, node)
547    }
548    fn visit_is_expr_construct(&mut self, node: &'ast IsExprConstruct<T>) {
549        visit_is_expr_construct(self, node)
550    }
551    fn visit_join(&mut self, node: &'ast Join<T>) {
552        visit_join(self, node)
553    }
554    fn visit_join_constraint(&mut self, node: &'ast JoinConstraint<T>) {
555        visit_join_constraint(self, node)
556    }
557    fn visit_join_operator(&mut self, node: &'ast JoinOperator<T>) {
558        visit_join_operator(self, node)
559    }
560    fn visit_kafka_broker(&mut self, node: &'ast KafkaBroker<T>) {
561        visit_kafka_broker(self, node)
562    }
563    fn visit_kafka_broker_aws_privatelink(&mut self, node: &'ast KafkaBrokerAwsPrivatelink<T>) {
564        visit_kafka_broker_aws_privatelink(self, node)
565    }
566    fn visit_kafka_broker_aws_privatelink_option(&mut self, node: &'ast KafkaBrokerAwsPrivatelinkOption<T>) {
567        visit_kafka_broker_aws_privatelink_option(self, node)
568    }
569    fn visit_kafka_broker_aws_privatelink_option_name(&mut self, node: &'ast KafkaBrokerAwsPrivatelinkOptionName) {
570        visit_kafka_broker_aws_privatelink_option_name(self, node)
571    }
572    fn visit_kafka_broker_tunnel(&mut self, node: &'ast KafkaBrokerTunnel<T>) {
573        visit_kafka_broker_tunnel(self, node)
574    }
575    fn visit_kafka_matching_broker_rule(&mut self, node: &'ast KafkaMatchingBrokerRule<T>) {
576        visit_kafka_matching_broker_rule(self, node)
577    }
578    fn visit_kafka_sink_config_option(&mut self, node: &'ast KafkaSinkConfigOption<T>) {
579        visit_kafka_sink_config_option(self, node)
580    }
581    fn visit_kafka_sink_config_option_name(&mut self, node: &'ast KafkaSinkConfigOptionName) {
582        visit_kafka_sink_config_option_name(self, node)
583    }
584    fn visit_kafka_source_config_option(&mut self, node: &'ast KafkaSourceConfigOption<T>) {
585        visit_kafka_source_config_option(self, node)
586    }
587    fn visit_kafka_source_config_option_name(&mut self, node: &'ast KafkaSourceConfigOptionName) {
588        visit_kafka_source_config_option_name(self, node)
589    }
590    fn visit_key_constraint(&mut self, node: &'ast KeyConstraint) {
591        visit_key_constraint(self, node)
592    }
593    fn visit_limit(&mut self, node: &'ast Limit<T>) {
594        visit_limit(self, node)
595    }
596    fn visit_load_generator(&mut self, node: &'ast LoadGenerator) {
597        visit_load_generator(self, node)
598    }
599    fn visit_load_generator_option(&mut self, node: &'ast LoadGeneratorOption<T>) {
600        visit_load_generator_option(self, node)
601    }
602    fn visit_load_generator_option_name(&mut self, node: &'ast LoadGeneratorOptionName) {
603        visit_load_generator_option_name(self, node)
604    }
605    fn visit_map_entry(&mut self, node: &'ast MapEntry<T>) {
606        visit_map_entry(self, node)
607    }
608    fn visit_materialized_view_option(&mut self, node: &'ast MaterializedViewOption<T>) {
609        visit_materialized_view_option(self, node)
610    }
611    fn visit_materialized_view_option_name(&mut self, node: &'ast MaterializedViewOptionName) {
612        visit_materialized_view_option_name(self, node)
613    }
614    fn visit_mock_view_def(&mut self, node: &'ast MockViewDef<T>) {
615        visit_mock_view_def(self, node)
616    }
617    fn visit_mut_rec_block(&mut self, node: &'ast MutRecBlock<T>) {
618        visit_mut_rec_block(self, node)
619    }
620    fn visit_mut_rec_block_option(&mut self, node: &'ast MutRecBlockOption<T>) {
621        visit_mut_rec_block_option(self, node)
622    }
623    fn visit_mut_rec_block_option_name(&mut self, node: &'ast MutRecBlockOptionName) {
624        visit_mut_rec_block_option_name(self, node)
625    }
626    fn visit_my_sql_config_option(&mut self, node: &'ast MySqlConfigOption<T>) {
627        visit_my_sql_config_option(self, node)
628    }
629    fn visit_my_sql_config_option_name(&mut self, node: &'ast MySqlConfigOptionName) {
630        visit_my_sql_config_option_name(self, node)
631    }
632    fn visit_named_plan(&mut self, node: &'ast NamedPlan) {
633        visit_named_plan(self, node)
634    }
635    fn visit_network_policy_option(&mut self, node: &'ast NetworkPolicyOption<T>) {
636        visit_network_policy_option(self, node)
637    }
638    fn visit_network_policy_option_name(&mut self, node: &'ast NetworkPolicyOptionName) {
639        visit_network_policy_option_name(self, node)
640    }
641    fn visit_network_policy_rule_definition(&mut self, node: &'ast NetworkPolicyRuleDefinition<T>) {
642        visit_network_policy_rule_definition(self, node)
643    }
644    fn visit_network_policy_rule_option(&mut self, node: &'ast NetworkPolicyRuleOption<T>) {
645        visit_network_policy_rule_option(self, node)
646    }
647    fn visit_network_policy_rule_option_name(&mut self, node: &'ast NetworkPolicyRuleOptionName) {
648        visit_network_policy_rule_option_name(self, node)
649    }
650    fn visit_notice_severity(&mut self, node: &'ast NoticeSeverity) {
651        visit_notice_severity(self, node)
652    }
653    fn visit_object_type(&mut self, node: &'ast ObjectType) {
654        visit_object_type(self, node)
655    }
656    fn visit_op(&mut self, node: &'ast Op) {
657        visit_op(self, node)
658    }
659    fn visit_order_by_expr(&mut self, node: &'ast OrderByExpr<T>) {
660        visit_order_by_expr(self, node)
661    }
662    fn visit_pg_config_option(&mut self, node: &'ast PgConfigOption<T>) {
663        visit_pg_config_option(self, node)
664    }
665    fn visit_pg_config_option_name(&mut self, node: &'ast PgConfigOptionName) {
666        visit_pg_config_option_name(self, node)
667    }
668    fn visit_prepare_statement(&mut self, node: &'ast PrepareStatement<T>) {
669        visit_prepare_statement(self, node)
670    }
671    fn visit_privilege(&mut self, node: &'ast Privilege) {
672        visit_privilege(self, node)
673    }
674    fn visit_privilege_specification(&mut self, node: &'ast PrivilegeSpecification) {
675        visit_privilege_specification(self, node)
676    }
677    fn visit_protobuf_schema(&mut self, node: &'ast ProtobufSchema<T>) {
678        visit_protobuf_schema(self, node)
679    }
680    fn visit_qualified_replica(&mut self, node: &'ast QualifiedReplica) {
681        visit_qualified_replica(self, node)
682    }
683    fn visit_query(&mut self, node: &'ast Query<T>) {
684        visit_query(self, node)
685    }
686    fn visit_raise_statement(&mut self, node: &'ast RaiseStatement) {
687        visit_raise_statement(self, node)
688    }
689    fn visit_reader_schema_selection_strategy(&mut self, node: &'ast ReaderSchemaSelectionStrategy) {
690        visit_reader_schema_selection_strategy(self, node)
691    }
692    fn visit_reassign_owned_statement(&mut self, node: &'ast ReassignOwnedStatement<T>) {
693        visit_reassign_owned_statement(self, node)
694    }
695    fn visit_refresh_at_option_value(&mut self, node: &'ast RefreshAtOptionValue<T>) {
696        visit_refresh_at_option_value(self, node)
697    }
698    fn visit_refresh_every_option_value(&mut self, node: &'ast RefreshEveryOptionValue<T>) {
699        visit_refresh_every_option_value(self, node)
700    }
701    fn visit_refresh_option_value(&mut self, node: &'ast RefreshOptionValue<T>) {
702        visit_refresh_option_value(self, node)
703    }
704    fn visit_replica_definition(&mut self, node: &'ast ReplicaDefinition<T>) {
705        visit_replica_definition(self, node)
706    }
707    fn visit_replica_option(&mut self, node: &'ast ReplicaOption<T>) {
708        visit_replica_option(self, node)
709    }
710    fn visit_replica_option_name(&mut self, node: &'ast ReplicaOptionName) {
711        visit_replica_option_name(self, node)
712    }
713    fn visit_reset_variable_statement(&mut self, node: &'ast ResetVariableStatement) {
714        visit_reset_variable_statement(self, node)
715    }
716    fn visit_revoke_privileges_statement(&mut self, node: &'ast RevokePrivilegesStatement<T>) {
717        visit_revoke_privileges_statement(self, node)
718    }
719    fn visit_revoke_role_statement(&mut self, node: &'ast RevokeRoleStatement<T>) {
720        visit_revoke_role_statement(self, node)
721    }
722    fn visit_role_attribute(&mut self, node: &'ast RoleAttribute) {
723        visit_role_attribute(self, node)
724    }
725    fn visit_rollback_statement(&mut self, node: &'ast RollbackStatement) {
726        visit_rollback_statement(self, node)
727    }
728    fn visit_schema(&mut self, node: &'ast Schema) {
729        visit_schema(self, node)
730    }
731    fn visit_select(&mut self, node: &'ast Select<T>) {
732        visit_select(self, node)
733    }
734    fn visit_select_item(&mut self, node: &'ast SelectItem<T>) {
735        visit_select_item(self, node)
736    }
737    fn visit_select_option(&mut self, node: &'ast SelectOption<T>) {
738        visit_select_option(self, node)
739    }
740    fn visit_select_option_name(&mut self, node: &'ast SelectOptionName) {
741        visit_select_option_name(self, node)
742    }
743    fn visit_select_statement(&mut self, node: &'ast SelectStatement<T>) {
744        visit_select_statement(self, node)
745    }
746    fn visit_set_expr(&mut self, node: &'ast SetExpr<T>) {
747        visit_set_expr(self, node)
748    }
749    fn visit_set_operator(&mut self, node: &'ast SetOperator) {
750        visit_set_operator(self, node)
751    }
752    fn visit_set_role_var(&mut self, node: &'ast SetRoleVar) {
753        visit_set_role_var(self, node)
754    }
755    fn visit_set_transaction_statement(&mut self, node: &'ast SetTransactionStatement) {
756        visit_set_transaction_statement(self, node)
757    }
758    fn visit_set_variable_statement(&mut self, node: &'ast SetVariableStatement) {
759        visit_set_variable_statement(self, node)
760    }
761    fn visit_set_variable_to(&mut self, node: &'ast SetVariableTo) {
762        visit_set_variable_to(self, node)
763    }
764    fn visit_set_variable_value(&mut self, node: &'ast SetVariableValue) {
765        visit_set_variable_value(self, node)
766    }
767    fn visit_show_columns_statement(&mut self, node: &'ast ShowColumnsStatement<T>) {
768        visit_show_columns_statement(self, node)
769    }
770    fn visit_show_create_cluster_statement(&mut self, node: &'ast ShowCreateClusterStatement<T>) {
771        visit_show_create_cluster_statement(self, node)
772    }
773    fn visit_show_create_connection_statement(&mut self, node: &'ast ShowCreateConnectionStatement<T>) {
774        visit_show_create_connection_statement(self, node)
775    }
776    fn visit_show_create_index_statement(&mut self, node: &'ast ShowCreateIndexStatement<T>) {
777        visit_show_create_index_statement(self, node)
778    }
779    fn visit_show_create_materialized_view_statement(&mut self, node: &'ast ShowCreateMaterializedViewStatement<T>) {
780        visit_show_create_materialized_view_statement(self, node)
781    }
782    fn visit_show_create_sink_statement(&mut self, node: &'ast ShowCreateSinkStatement<T>) {
783        visit_show_create_sink_statement(self, node)
784    }
785    fn visit_show_create_source_statement(&mut self, node: &'ast ShowCreateSourceStatement<T>) {
786        visit_show_create_source_statement(self, node)
787    }
788    fn visit_show_create_table_statement(&mut self, node: &'ast ShowCreateTableStatement<T>) {
789        visit_show_create_table_statement(self, node)
790    }
791    fn visit_show_create_type_statement(&mut self, node: &'ast ShowCreateTypeStatement<T>) {
792        visit_show_create_type_statement(self, node)
793    }
794    fn visit_show_create_view_statement(&mut self, node: &'ast ShowCreateViewStatement<T>) {
795        visit_show_create_view_statement(self, node)
796    }
797    fn visit_show_object_type(&mut self, node: &'ast ShowObjectType<T>) {
798        visit_show_object_type(self, node)
799    }
800    fn visit_show_objects_statement(&mut self, node: &'ast ShowObjectsStatement<T>) {
801        visit_show_objects_statement(self, node)
802    }
803    fn visit_show_statement(&mut self, node: &'ast ShowStatement<T>) {
804        visit_show_statement(self, node)
805    }
806    fn visit_show_statement_filter(&mut self, node: &'ast ShowStatementFilter<T>) {
807        visit_show_statement_filter(self, node)
808    }
809    fn visit_show_variable_statement(&mut self, node: &'ast ShowVariableStatement) {
810        visit_show_variable_statement(self, node)
811    }
812    fn visit_sink_envelope(&mut self, node: &'ast SinkEnvelope) {
813        visit_sink_envelope(self, node)
814    }
815    fn visit_sink_key(&mut self, node: &'ast SinkKey) {
816        visit_sink_key(self, node)
817    }
818    fn visit_source_envelope(&mut self, node: &'ast SourceEnvelope) {
819        visit_source_envelope(self, node)
820    }
821    fn visit_source_error_policy(&mut self, node: &'ast SourceErrorPolicy) {
822        visit_source_error_policy(self, node)
823    }
824    fn visit_source_include_metadata(&mut self, node: &'ast SourceIncludeMetadata) {
825        visit_source_include_metadata(self, node)
826    }
827    fn visit_sql_server_config_option(&mut self, node: &'ast SqlServerConfigOption<T>) {
828        visit_sql_server_config_option(self, node)
829    }
830    fn visit_sql_server_config_option_name(&mut self, node: &'ast SqlServerConfigOptionName) {
831        visit_sql_server_config_option_name(self, node)
832    }
833    fn visit_start_transaction_statement(&mut self, node: &'ast StartTransactionStatement) {
834        visit_start_transaction_statement(self, node)
835    }
836    fn visit_statement(&mut self, node: &'ast Statement<T>) {
837        visit_statement(self, node)
838    }
839    fn visit_subscribe_option(&mut self, node: &'ast SubscribeOption<T>) {
840        visit_subscribe_option(self, node)
841    }
842    fn visit_subscribe_option_name(&mut self, node: &'ast SubscribeOptionName) {
843        visit_subscribe_option_name(self, node)
844    }
845    fn visit_subscribe_output(&mut self, node: &'ast SubscribeOutput<T>) {
846        visit_subscribe_output(self, node)
847    }
848    fn visit_subscribe_relation(&mut self, node: &'ast SubscribeRelation<T>) {
849        visit_subscribe_relation(self, node)
850    }
851    fn visit_subscribe_statement(&mut self, node: &'ast SubscribeStatement<T>) {
852        visit_subscribe_statement(self, node)
853    }
854    fn visit_subscript_position(&mut self, node: &'ast SubscriptPosition<T>) {
855        visit_subscript_position(self, node)
856    }
857    fn visit_system_object_type(&mut self, node: &'ast SystemObjectType) {
858        visit_system_object_type(self, node)
859    }
860    fn visit_cluster_name(&mut self, node: &'ast T::ClusterName) {
861        visit_cluster_name(self, node)
862    }
863    fn visit_column_reference(&mut self, node: &'ast T::ColumnReference) {
864        visit_column_reference(self, node)
865    }
866    fn visit_cte_id(&mut self, node: &'ast T::CteId) {
867        visit_cte_id(self, node)
868    }
869    fn visit_data_type(&mut self, node: &'ast T::DataType) {
870        visit_data_type(self, node)
871    }
872    fn visit_database_name(&mut self, node: &'ast T::DatabaseName) {
873        visit_database_name(self, node)
874    }
875    fn visit_item_name(&mut self, node: &'ast T::ItemName) {
876        visit_item_name(self, node)
877    }
878    fn visit_nested_statement(&mut self, node: &'ast T::NestedStatement) {
879        visit_nested_statement(self, node)
880    }
881    fn visit_network_policy_name(&mut self, node: &'ast T::NetworkPolicyName) {
882        visit_network_policy_name(self, node)
883    }
884    fn visit_object_name(&mut self, node: &'ast T::ObjectName) {
885        visit_object_name(self, node)
886    }
887    fn visit_role_name(&mut self, node: &'ast T::RoleName) {
888        visit_role_name(self, node)
889    }
890    fn visit_schema_name(&mut self, node: &'ast T::SchemaName) {
891        visit_schema_name(self, node)
892    }
893    fn visit_table_alias(&mut self, node: &'ast TableAlias) {
894        visit_table_alias(self, node)
895    }
896    fn visit_table_constraint(&mut self, node: &'ast TableConstraint<T>) {
897        visit_table_constraint(self, node)
898    }
899    fn visit_table_factor(&mut self, node: &'ast TableFactor<T>) {
900        visit_table_factor(self, node)
901    }
902    fn visit_table_from_source_columns(&mut self, node: &'ast TableFromSourceColumns<T>) {
903        visit_table_from_source_columns(self, node)
904    }
905    fn visit_table_from_source_option(&mut self, node: &'ast TableFromSourceOption<T>) {
906        visit_table_from_source_option(self, node)
907    }
908    fn visit_table_from_source_option_name(&mut self, node: &'ast TableFromSourceOptionName) {
909        visit_table_from_source_option_name(self, node)
910    }
911    fn visit_table_option(&mut self, node: &'ast TableOption<T>) {
912        visit_table_option(self, node)
913    }
914    fn visit_table_option_name(&mut self, node: &'ast TableOptionName) {
915        visit_table_option_name(self, node)
916    }
917    fn visit_table_with_joins(&mut self, node: &'ast TableWithJoins<T>) {
918        visit_table_with_joins(self, node)
919    }
920    fn visit_target_role_specification(&mut self, node: &'ast TargetRoleSpecification<T>) {
921        visit_target_role_specification(self, node)
922    }
923    fn visit_transaction_access_mode(&mut self, node: &'ast TransactionAccessMode) {
924        visit_transaction_access_mode(self, node)
925    }
926    fn visit_transaction_isolation_level(&mut self, node: &'ast TransactionIsolationLevel) {
927        visit_transaction_isolation_level(self, node)
928    }
929    fn visit_transaction_mode(&mut self, node: &'ast TransactionMode) {
930        visit_transaction_mode(self, node)
931    }
932    fn visit_unresolved_database_name(&mut self, node: &'ast UnresolvedDatabaseName) {
933        visit_unresolved_database_name(self, node)
934    }
935    fn visit_unresolved_item_name(&mut self, node: &'ast UnresolvedItemName) {
936        visit_unresolved_item_name(self, node)
937    }
938    fn visit_unresolved_object_name(&mut self, node: &'ast UnresolvedObjectName) {
939        visit_unresolved_object_name(self, node)
940    }
941    fn visit_unresolved_schema_name(&mut self, node: &'ast UnresolvedSchemaName) {
942        visit_unresolved_schema_name(self, node)
943    }
944    fn visit_update_statement(&mut self, node: &'ast UpdateStatement<T>) {
945        visit_update_statement(self, node)
946    }
947    fn visit_validate_connection_statement(&mut self, node: &'ast ValidateConnectionStatement<T>) {
948        visit_validate_connection_statement(self, node)
949    }
950    fn visit_value(&mut self, node: &'ast Value) {
951        visit_value(self, node)
952    }
953    fn visit_value_error(&mut self, node: &'ast ValueError) {
954        visit_value_error(self, node)
955    }
956    fn visit_values(&mut self, node: &'ast Values<T>) {
957        visit_values(self, node)
958    }
959    fn visit_version(&mut self, node: &'ast Version) {
960        visit_version(self, node)
961    }
962    fn visit_view_definition(&mut self, node: &'ast ViewDefinition<T>) {
963        visit_view_definition(self, node)
964    }
965    fn visit_window_frame(&mut self, node: &'ast WindowFrame) {
966        visit_window_frame(self, node)
967    }
968    fn visit_window_frame_bound(&mut self, node: &'ast WindowFrameBound) {
969        visit_window_frame_bound(self, node)
970    }
971    fn visit_window_frame_units(&mut self, node: &'ast WindowFrameUnits) {
972        visit_window_frame_units(self, node)
973    }
974    fn visit_window_spec(&mut self, node: &'ast WindowSpec<T>) {
975        visit_window_spec(self, node)
976    }
977    fn visit_with_option_value(&mut self, node: &'ast WithOptionValue<T>) {
978        visit_with_option_value(self, node)
979    }
980}
981pub trait VisitNode<'ast, T: AstInfo, > {
982    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V);
983}
984impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AbbreviatedGrantOrRevokeStatement<T> {
985    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
986        visitor.visit_abbreviated_grant_or_revoke_statement(self)
987    }
988}
989#[allow(clippy::needless_pass_by_ref_mut)]
990pub fn visit_abbreviated_grant_or_revoke_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AbbreviatedGrantOrRevokeStatement<T>)
991where
992    V: Visit<'ast, T, > + ?Sized,
993{
994    match node {
995        AbbreviatedGrantOrRevokeStatement::Grant {
996            0: binding0,
997        } => {
998            visitor.visit_abbreviated_grant_statement(binding0);
999        }
1000        AbbreviatedGrantOrRevokeStatement::Revoke {
1001            0: binding0,
1002        } => {
1003            visitor.visit_abbreviated_revoke_statement(binding0);
1004        }
1005    }
1006}
1007impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AbbreviatedGrantStatement<T> {
1008    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1009        visitor.visit_abbreviated_grant_statement(self)
1010    }
1011}
1012#[allow(clippy::needless_pass_by_ref_mut)]
1013pub fn visit_abbreviated_grant_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AbbreviatedGrantStatement<T>)
1014where
1015    V: Visit<'ast, T, > + ?Sized,
1016{
1017    visitor.visit_privilege_specification(&node.privileges);
1018    visitor.visit_object_type(&node.object_type);
1019    for v in &node.grantees {
1020        visitor.visit_role_name(v);
1021    }
1022}
1023impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AbbreviatedRevokeStatement<T> {
1024    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1025        visitor.visit_abbreviated_revoke_statement(self)
1026    }
1027}
1028#[allow(clippy::needless_pass_by_ref_mut)]
1029pub fn visit_abbreviated_revoke_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AbbreviatedRevokeStatement<T>)
1030where
1031    V: Visit<'ast, T, > + ?Sized,
1032{
1033    visitor.visit_privilege_specification(&node.privileges);
1034    visitor.visit_object_type(&node.object_type);
1035    for v in &node.revokees {
1036        visitor.visit_role_name(v);
1037    }
1038}
1039impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterClusterAction<T> {
1040    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1041        visitor.visit_alter_cluster_action(self)
1042    }
1043}
1044#[allow(clippy::needless_pass_by_ref_mut)]
1045pub fn visit_alter_cluster_action<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterClusterAction<T>)
1046where
1047    V: Visit<'ast, T, > + ?Sized,
1048{
1049    match node {
1050        AlterClusterAction::SetOptions {
1051            options: binding0,
1052            with_options: binding1,
1053        } => {
1054            for v in binding0 {
1055                visitor.visit_cluster_option(v);
1056            }
1057            for v in binding1 {
1058                visitor.visit_cluster_alter_option(v);
1059            }
1060        }
1061        AlterClusterAction::ResetOptions {
1062            0: binding0,
1063        } => {
1064            for v in binding0 {
1065                visitor.visit_cluster_option_name(v);
1066            }
1067        }
1068    }
1069}
1070impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterClusterStatement<T> {
1071    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1072        visitor.visit_alter_cluster_statement(self)
1073    }
1074}
1075#[allow(clippy::needless_pass_by_ref_mut)]
1076pub fn visit_alter_cluster_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterClusterStatement<T>)
1077where
1078    V: Visit<'ast, T, > + ?Sized,
1079{
1080    visitor.visit_ident(&node.name);
1081    visitor.visit_alter_cluster_action(&node.action);
1082}
1083impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterConnectionAction<T> {
1084    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1085        visitor.visit_alter_connection_action(self)
1086    }
1087}
1088#[allow(clippy::needless_pass_by_ref_mut)]
1089pub fn visit_alter_connection_action<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterConnectionAction<T>)
1090where
1091    V: Visit<'ast, T, > + ?Sized,
1092{
1093    match node {
1094        AlterConnectionAction::RotateKeys {
1095        } => {
1096        }
1097        AlterConnectionAction::SetOption {
1098            0: binding0,
1099        } => {
1100            visitor.visit_connection_option(binding0);
1101        }
1102        AlterConnectionAction::DropOption {
1103            0: binding0,
1104        } => {
1105            visitor.visit_connection_option_name(binding0);
1106        }
1107    }
1108}
1109impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterConnectionOption<T> {
1110    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1111        visitor.visit_alter_connection_option(self)
1112    }
1113}
1114#[allow(clippy::needless_pass_by_ref_mut)]
1115pub fn visit_alter_connection_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterConnectionOption<T>)
1116where
1117    V: Visit<'ast, T, > + ?Sized,
1118{
1119    visitor.visit_alter_connection_option_name(&node.name);
1120    if let Some(v) = &node.value {
1121        visitor.visit_with_option_value(v);
1122    }
1123}
1124impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterConnectionOptionName {
1125    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1126        visitor.visit_alter_connection_option_name(self)
1127    }
1128}
1129#[allow(clippy::needless_pass_by_ref_mut)]
1130pub fn visit_alter_connection_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterConnectionOptionName)
1131where
1132    V: Visit<'ast, T, > + ?Sized,
1133{
1134    match node {
1135        AlterConnectionOptionName::Validate {
1136        } => {
1137        }
1138    }
1139}
1140impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterConnectionStatement<T> {
1141    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1142        visitor.visit_alter_connection_statement(self)
1143    }
1144}
1145#[allow(clippy::needless_pass_by_ref_mut)]
1146pub fn visit_alter_connection_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterConnectionStatement<T>)
1147where
1148    V: Visit<'ast, T, > + ?Sized,
1149{
1150    visitor.visit_unresolved_item_name(&node.name);
1151    for v in &node.actions {
1152        visitor.visit_alter_connection_action(v);
1153    }
1154    for v in &node.with_options {
1155        visitor.visit_alter_connection_option(v);
1156    }
1157}
1158impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterDefaultPrivilegesStatement<T> {
1159    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1160        visitor.visit_alter_default_privileges_statement(self)
1161    }
1162}
1163#[allow(clippy::needless_pass_by_ref_mut)]
1164pub fn visit_alter_default_privileges_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterDefaultPrivilegesStatement<T>)
1165where
1166    V: Visit<'ast, T, > + ?Sized,
1167{
1168    visitor.visit_target_role_specification(&node.target_roles);
1169    visitor.visit_grant_target_all_specification(&node.target_objects);
1170    visitor.visit_abbreviated_grant_or_revoke_statement(&node.grant_or_revoke);
1171}
1172impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterIndexAction<T> {
1173    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1174        visitor.visit_alter_index_action(self)
1175    }
1176}
1177#[allow(clippy::needless_pass_by_ref_mut)]
1178pub fn visit_alter_index_action<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterIndexAction<T>)
1179where
1180    V: Visit<'ast, T, > + ?Sized,
1181{
1182    match node {
1183        AlterIndexAction::SetOptions {
1184            0: binding0,
1185        } => {
1186            for v in binding0 {
1187                visitor.visit_index_option(v);
1188            }
1189        }
1190        AlterIndexAction::ResetOptions {
1191            0: binding0,
1192        } => {
1193            for v in binding0 {
1194                visitor.visit_index_option_name(v);
1195            }
1196        }
1197    }
1198}
1199impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterIndexStatement<T> {
1200    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1201        visitor.visit_alter_index_statement(self)
1202    }
1203}
1204#[allow(clippy::needless_pass_by_ref_mut)]
1205pub fn visit_alter_index_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterIndexStatement<T>)
1206where
1207    V: Visit<'ast, T, > + ?Sized,
1208{
1209    visitor.visit_unresolved_item_name(&node.index_name);
1210    visitor.visit_alter_index_action(&node.action);
1211}
1212impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterMaterializedViewApplyReplacementStatement {
1213    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1214        visitor.visit_alter_materialized_view_apply_replacement_statement(self)
1215    }
1216}
1217#[allow(clippy::needless_pass_by_ref_mut)]
1218pub fn visit_alter_materialized_view_apply_replacement_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterMaterializedViewApplyReplacementStatement)
1219where
1220    V: Visit<'ast, T, > + ?Sized,
1221{
1222    visitor.visit_unresolved_item_name(&node.name);
1223    visitor.visit_unresolved_item_name(&node.replacement_name);
1224}
1225impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterNetworkPolicyStatement<T> {
1226    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1227        visitor.visit_alter_network_policy_statement(self)
1228    }
1229}
1230#[allow(clippy::needless_pass_by_ref_mut)]
1231pub fn visit_alter_network_policy_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterNetworkPolicyStatement<T>)
1232where
1233    V: Visit<'ast, T, > + ?Sized,
1234{
1235    visitor.visit_ident(&node.name);
1236    for v in &node.options {
1237        visitor.visit_network_policy_option(v);
1238    }
1239}
1240impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterObjectRenameStatement {
1241    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1242        visitor.visit_alter_object_rename_statement(self)
1243    }
1244}
1245#[allow(clippy::needless_pass_by_ref_mut)]
1246pub fn visit_alter_object_rename_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterObjectRenameStatement)
1247where
1248    V: Visit<'ast, T, > + ?Sized,
1249{
1250    visitor.visit_object_type(&node.object_type);
1251    visitor.visit_unresolved_object_name(&node.name);
1252    visitor.visit_ident(&node.to_item_name);
1253}
1254impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterObjectSwapStatement {
1255    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1256        visitor.visit_alter_object_swap_statement(self)
1257    }
1258}
1259#[allow(clippy::needless_pass_by_ref_mut)]
1260pub fn visit_alter_object_swap_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterObjectSwapStatement)
1261where
1262    V: Visit<'ast, T, > + ?Sized,
1263{
1264    visitor.visit_object_type(&node.object_type);
1265    visitor.visit_unresolved_object_name(&node.name_a);
1266    visitor.visit_ident(&node.name_b);
1267}
1268impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterOwnerStatement<T> {
1269    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1270        visitor.visit_alter_owner_statement(self)
1271    }
1272}
1273#[allow(clippy::needless_pass_by_ref_mut)]
1274pub fn visit_alter_owner_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterOwnerStatement<T>)
1275where
1276    V: Visit<'ast, T, > + ?Sized,
1277{
1278    visitor.visit_object_type(&node.object_type);
1279    visitor.visit_unresolved_object_name(&node.name);
1280    visitor.visit_role_name(&node.new_owner);
1281}
1282impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterRetainHistoryStatement<T> {
1283    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1284        visitor.visit_alter_retain_history_statement(self)
1285    }
1286}
1287#[allow(clippy::needless_pass_by_ref_mut)]
1288pub fn visit_alter_retain_history_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterRetainHistoryStatement<T>)
1289where
1290    V: Visit<'ast, T, > + ?Sized,
1291{
1292    visitor.visit_object_type(&node.object_type);
1293    visitor.visit_unresolved_object_name(&node.name);
1294    if let Some(v) = &node.history {
1295        visitor.visit_with_option_value(v);
1296    }
1297}
1298impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterRoleOption {
1299    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1300        visitor.visit_alter_role_option(self)
1301    }
1302}
1303#[allow(clippy::needless_pass_by_ref_mut)]
1304pub fn visit_alter_role_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterRoleOption)
1305where
1306    V: Visit<'ast, T, > + ?Sized,
1307{
1308    match node {
1309        AlterRoleOption::Attributes {
1310            0: binding0,
1311        } => {
1312            for v in binding0 {
1313                visitor.visit_role_attribute(v);
1314            }
1315        }
1316        AlterRoleOption::Variable {
1317            0: binding0,
1318        } => {
1319            visitor.visit_set_role_var(binding0);
1320        }
1321    }
1322}
1323impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterRoleStatement<T> {
1324    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1325        visitor.visit_alter_role_statement(self)
1326    }
1327}
1328#[allow(clippy::needless_pass_by_ref_mut)]
1329pub fn visit_alter_role_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterRoleStatement<T>)
1330where
1331    V: Visit<'ast, T, > + ?Sized,
1332{
1333    visitor.visit_role_name(&node.name);
1334    visitor.visit_alter_role_option(&node.option);
1335}
1336impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterSecretStatement<T> {
1337    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1338        visitor.visit_alter_secret_statement(self)
1339    }
1340}
1341#[allow(clippy::needless_pass_by_ref_mut)]
1342pub fn visit_alter_secret_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterSecretStatement<T>)
1343where
1344    V: Visit<'ast, T, > + ?Sized,
1345{
1346    visitor.visit_unresolved_item_name(&node.name);
1347    visitor.visit_expr(&node.value);
1348}
1349impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterSetClusterStatement<T> {
1350    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1351        visitor.visit_alter_set_cluster_statement(self)
1352    }
1353}
1354#[allow(clippy::needless_pass_by_ref_mut)]
1355pub fn visit_alter_set_cluster_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterSetClusterStatement<T>)
1356where
1357    V: Visit<'ast, T, > + ?Sized,
1358{
1359    visitor.visit_unresolved_item_name(&node.name);
1360    visitor.visit_object_type(&node.object_type);
1361    visitor.visit_cluster_name(&node.set_cluster);
1362}
1363impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterSinkAction<T> {
1364    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1365        visitor.visit_alter_sink_action(self)
1366    }
1367}
1368#[allow(clippy::needless_pass_by_ref_mut)]
1369pub fn visit_alter_sink_action<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterSinkAction<T>)
1370where
1371    V: Visit<'ast, T, > + ?Sized,
1372{
1373    match node {
1374        AlterSinkAction::SetOptions {
1375            0: binding0,
1376        } => {
1377            for v in binding0 {
1378                visitor.visit_create_sink_option(v);
1379            }
1380        }
1381        AlterSinkAction::ResetOptions {
1382            0: binding0,
1383        } => {
1384            for v in binding0 {
1385                visitor.visit_create_sink_option_name(v);
1386            }
1387        }
1388        AlterSinkAction::ChangeRelation {
1389            0: binding0,
1390        } => {
1391            visitor.visit_item_name(binding0);
1392        }
1393    }
1394}
1395impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterSinkStatement<T> {
1396    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1397        visitor.visit_alter_sink_statement(self)
1398    }
1399}
1400#[allow(clippy::needless_pass_by_ref_mut)]
1401pub fn visit_alter_sink_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterSinkStatement<T>)
1402where
1403    V: Visit<'ast, T, > + ?Sized,
1404{
1405    visitor.visit_unresolved_item_name(&node.sink_name);
1406    visitor.visit_alter_sink_action(&node.action);
1407}
1408impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterSourceAction<T> {
1409    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1410        visitor.visit_alter_source_action(self)
1411    }
1412}
1413#[allow(clippy::needless_pass_by_ref_mut)]
1414pub fn visit_alter_source_action<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterSourceAction<T>)
1415where
1416    V: Visit<'ast, T, > + ?Sized,
1417{
1418    match node {
1419        AlterSourceAction::SetOptions {
1420            0: binding0,
1421        } => {
1422            for v in binding0 {
1423                visitor.visit_create_source_option(v);
1424            }
1425        }
1426        AlterSourceAction::ResetOptions {
1427            0: binding0,
1428        } => {
1429            for v in binding0 {
1430                visitor.visit_create_source_option_name(v);
1431            }
1432        }
1433        AlterSourceAction::AddSubsources {
1434            external_references: binding0,
1435            options: binding1,
1436        } => {
1437            for v in binding0 {
1438                visitor.visit_external_reference_export(v);
1439            }
1440            for v in binding1 {
1441                visitor.visit_alter_source_add_subsource_option(v);
1442            }
1443        }
1444        AlterSourceAction::DropSubsources {
1445            if_exists: binding0,
1446            cascade: binding1,
1447            names: binding2,
1448        } => {
1449            for v in binding2 {
1450                visitor.visit_unresolved_item_name(v);
1451            }
1452        }
1453        AlterSourceAction::RefreshReferences {
1454        } => {
1455        }
1456    }
1457}
1458impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterSourceAddSubsourceOption<T> {
1459    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1460        visitor.visit_alter_source_add_subsource_option(self)
1461    }
1462}
1463#[allow(clippy::needless_pass_by_ref_mut)]
1464pub fn visit_alter_source_add_subsource_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterSourceAddSubsourceOption<T>)
1465where
1466    V: Visit<'ast, T, > + ?Sized,
1467{
1468    visitor.visit_alter_source_add_subsource_option_name(&node.name);
1469    if let Some(v) = &node.value {
1470        visitor.visit_with_option_value(v);
1471    }
1472}
1473impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterSourceAddSubsourceOptionName {
1474    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1475        visitor.visit_alter_source_add_subsource_option_name(self)
1476    }
1477}
1478#[allow(clippy::needless_pass_by_ref_mut)]
1479pub fn visit_alter_source_add_subsource_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterSourceAddSubsourceOptionName)
1480where
1481    V: Visit<'ast, T, > + ?Sized,
1482{
1483    match node {
1484        AlterSourceAddSubsourceOptionName::TextColumns {
1485        } => {
1486        }
1487        AlterSourceAddSubsourceOptionName::ExcludeColumns {
1488        } => {
1489        }
1490        AlterSourceAddSubsourceOptionName::Details {
1491        } => {
1492        }
1493    }
1494}
1495impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterSourceStatement<T> {
1496    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1497        visitor.visit_alter_source_statement(self)
1498    }
1499}
1500#[allow(clippy::needless_pass_by_ref_mut)]
1501pub fn visit_alter_source_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterSourceStatement<T>)
1502where
1503    V: Visit<'ast, T, > + ?Sized,
1504{
1505    visitor.visit_unresolved_item_name(&node.source_name);
1506    visitor.visit_alter_source_action(&node.action);
1507}
1508impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterSystemResetAllStatement {
1509    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1510        visitor.visit_alter_system_reset_all_statement(self)
1511    }
1512}
1513#[allow(clippy::needless_pass_by_ref_mut)]
1514pub fn visit_alter_system_reset_all_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterSystemResetAllStatement)
1515where
1516    V: Visit<'ast, T, > + ?Sized,
1517{
1518}
1519impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterSystemResetStatement {
1520    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1521        visitor.visit_alter_system_reset_statement(self)
1522    }
1523}
1524#[allow(clippy::needless_pass_by_ref_mut)]
1525pub fn visit_alter_system_reset_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterSystemResetStatement)
1526where
1527    V: Visit<'ast, T, > + ?Sized,
1528{
1529    visitor.visit_ident(&node.name);
1530}
1531impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterSystemSetStatement {
1532    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1533        visitor.visit_alter_system_set_statement(self)
1534    }
1535}
1536#[allow(clippy::needless_pass_by_ref_mut)]
1537pub fn visit_alter_system_set_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterSystemSetStatement)
1538where
1539    V: Visit<'ast, T, > + ?Sized,
1540{
1541    visitor.visit_ident(&node.name);
1542    visitor.visit_set_variable_to(&node.to);
1543}
1544impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AlterTableAddColumnStatement<T> {
1545    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1546        visitor.visit_alter_table_add_column_statement(self)
1547    }
1548}
1549#[allow(clippy::needless_pass_by_ref_mut)]
1550pub fn visit_alter_table_add_column_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AlterTableAddColumnStatement<T>)
1551where
1552    V: Visit<'ast, T, > + ?Sized,
1553{
1554    visitor.visit_unresolved_item_name(&node.name);
1555    visitor.visit_ident(&node.column_name);
1556    visitor.visit_data_type(&node.data_type);
1557}
1558impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AsOf<T> {
1559    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1560        visitor.visit_as_of(self)
1561    }
1562}
1563#[allow(clippy::needless_pass_by_ref_mut)]
1564pub fn visit_as_of<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AsOf<T>)
1565where
1566    V: Visit<'ast, T, > + ?Sized,
1567{
1568    match node {
1569        AsOf::At {
1570            0: binding0,
1571        } => {
1572            visitor.visit_expr(binding0);
1573        }
1574        AsOf::AtLeast {
1575            0: binding0,
1576        } => {
1577            visitor.visit_expr(binding0);
1578        }
1579    }
1580}
1581impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Assignment<T> {
1582    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1583        visitor.visit_assignment(self)
1584    }
1585}
1586#[allow(clippy::needless_pass_by_ref_mut)]
1587pub fn visit_assignment<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Assignment<T>)
1588where
1589    V: Visit<'ast, T, > + ?Sized,
1590{
1591    visitor.visit_ident(&node.id);
1592    visitor.visit_expr(&node.value);
1593}
1594impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AvroDocOn<T> {
1595    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1596        visitor.visit_avro_doc_on(self)
1597    }
1598}
1599#[allow(clippy::needless_pass_by_ref_mut)]
1600pub fn visit_avro_doc_on<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AvroDocOn<T>)
1601where
1602    V: Visit<'ast, T, > + ?Sized,
1603{
1604    visitor.visit_doc_on_identifier(&node.identifier);
1605    visitor.visit_doc_on_schema(&node.for_schema);
1606}
1607impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AvroSchema<T> {
1608    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1609        visitor.visit_avro_schema(self)
1610    }
1611}
1612#[allow(clippy::needless_pass_by_ref_mut)]
1613pub fn visit_avro_schema<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AvroSchema<T>)
1614where
1615    V: Visit<'ast, T, > + ?Sized,
1616{
1617    match node {
1618        AvroSchema::Csr {
1619            csr_connection: binding0,
1620        } => {
1621            visitor.visit_csr_connection_avro(binding0);
1622        }
1623        AvroSchema::InlineSchema {
1624            schema: binding0,
1625            with_options: binding1,
1626        } => {
1627            visitor.visit_schema(binding0);
1628            for v in binding1 {
1629                visitor.visit_avro_schema_option(v);
1630            }
1631        }
1632    }
1633}
1634impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AvroSchemaOption<T> {
1635    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1636        visitor.visit_avro_schema_option(self)
1637    }
1638}
1639#[allow(clippy::needless_pass_by_ref_mut)]
1640pub fn visit_avro_schema_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AvroSchemaOption<T>)
1641where
1642    V: Visit<'ast, T, > + ?Sized,
1643{
1644    visitor.visit_avro_schema_option_name(&node.name);
1645    if let Some(v) = &node.value {
1646        visitor.visit_with_option_value(v);
1647    }
1648}
1649impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for AvroSchemaOptionName {
1650    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1651        visitor.visit_avro_schema_option_name(self)
1652    }
1653}
1654#[allow(clippy::needless_pass_by_ref_mut)]
1655pub fn visit_avro_schema_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast AvroSchemaOptionName)
1656where
1657    V: Visit<'ast, T, > + ?Sized,
1658{
1659    match node {
1660        AvroSchemaOptionName::ConfluentWireFormat {
1661        } => {
1662        }
1663    }
1664}
1665impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CatalogName {
1666    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1667        visitor.visit_catalog_name(self)
1668    }
1669}
1670#[allow(clippy::needless_pass_by_ref_mut)]
1671pub fn visit_catalog_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CatalogName)
1672where
1673    V: Visit<'ast, T, > + ?Sized,
1674{
1675    match node {
1676        CatalogName::ItemName {
1677            0: binding0,
1678        } => {
1679            for v in binding0 {
1680                visitor.visit_ident(v);
1681            }
1682        }
1683        CatalogName::FuncName {
1684            0: binding0,
1685        } => {
1686            for v in binding0 {
1687                visitor.visit_ident(v);
1688            }
1689        }
1690    }
1691}
1692impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CloseStatement {
1693    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1694        visitor.visit_close_statement(self)
1695    }
1696}
1697#[allow(clippy::needless_pass_by_ref_mut)]
1698pub fn visit_close_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CloseStatement)
1699where
1700    V: Visit<'ast, T, > + ?Sized,
1701{
1702    visitor.visit_ident(&node.name);
1703}
1704impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ClusterAlterOption<T> {
1705    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1706        visitor.visit_cluster_alter_option(self)
1707    }
1708}
1709#[allow(clippy::needless_pass_by_ref_mut)]
1710pub fn visit_cluster_alter_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ClusterAlterOption<T>)
1711where
1712    V: Visit<'ast, T, > + ?Sized,
1713{
1714    visitor.visit_cluster_alter_option_name(&node.name);
1715    if let Some(v) = &node.value {
1716        visitor.visit_with_option_value(v);
1717    }
1718}
1719impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ClusterAlterOptionName {
1720    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1721        visitor.visit_cluster_alter_option_name(self)
1722    }
1723}
1724#[allow(clippy::needless_pass_by_ref_mut)]
1725pub fn visit_cluster_alter_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ClusterAlterOptionName)
1726where
1727    V: Visit<'ast, T, > + ?Sized,
1728{
1729    match node {
1730        ClusterAlterOptionName::Wait {
1731        } => {
1732        }
1733    }
1734}
1735impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ClusterAlterOptionValue<T> {
1736    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1737        visitor.visit_cluster_alter_option_value(self)
1738    }
1739}
1740#[allow(clippy::needless_pass_by_ref_mut)]
1741pub fn visit_cluster_alter_option_value<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ClusterAlterOptionValue<T>)
1742where
1743    V: Visit<'ast, T, > + ?Sized,
1744{
1745    match node {
1746        ClusterAlterOptionValue::For {
1747            0: binding0,
1748        } => {
1749            visitor.visit_value(binding0);
1750        }
1751        ClusterAlterOptionValue::UntilReady {
1752            0: binding0,
1753        } => {
1754            for v in binding0 {
1755                visitor.visit_cluster_alter_until_ready_option(v);
1756            }
1757        }
1758    }
1759}
1760impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ClusterAlterUntilReadyOption<T> {
1761    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1762        visitor.visit_cluster_alter_until_ready_option(self)
1763    }
1764}
1765#[allow(clippy::needless_pass_by_ref_mut)]
1766pub fn visit_cluster_alter_until_ready_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ClusterAlterUntilReadyOption<T>)
1767where
1768    V: Visit<'ast, T, > + ?Sized,
1769{
1770    visitor.visit_cluster_alter_until_ready_option_name(&node.name);
1771    if let Some(v) = &node.value {
1772        visitor.visit_with_option_value(v);
1773    }
1774}
1775impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ClusterAlterUntilReadyOptionName {
1776    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1777        visitor.visit_cluster_alter_until_ready_option_name(self)
1778    }
1779}
1780#[allow(clippy::needless_pass_by_ref_mut)]
1781pub fn visit_cluster_alter_until_ready_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ClusterAlterUntilReadyOptionName)
1782where
1783    V: Visit<'ast, T, > + ?Sized,
1784{
1785    match node {
1786        ClusterAlterUntilReadyOptionName::Timeout {
1787        } => {
1788        }
1789        ClusterAlterUntilReadyOptionName::OnTimeout {
1790        } => {
1791        }
1792    }
1793}
1794impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ClusterFeature<T> {
1795    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1796        visitor.visit_cluster_feature(self)
1797    }
1798}
1799#[allow(clippy::needless_pass_by_ref_mut)]
1800pub fn visit_cluster_feature<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ClusterFeature<T>)
1801where
1802    V: Visit<'ast, T, > + ?Sized,
1803{
1804    visitor.visit_cluster_feature_name(&node.name);
1805    if let Some(v) = &node.value {
1806        visitor.visit_with_option_value(v);
1807    }
1808}
1809impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ClusterFeatureName {
1810    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1811        visitor.visit_cluster_feature_name(self)
1812    }
1813}
1814#[allow(clippy::needless_pass_by_ref_mut)]
1815pub fn visit_cluster_feature_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ClusterFeatureName)
1816where
1817    V: Visit<'ast, T, > + ?Sized,
1818{
1819    match node {
1820        ClusterFeatureName::ReoptimizeImportedViews {
1821        } => {
1822        }
1823        ClusterFeatureName::EnableNewOuterJoinLowering {
1824        } => {
1825        }
1826        ClusterFeatureName::EnableEagerDeltaJoins {
1827        } => {
1828        }
1829        ClusterFeatureName::EnableVariadicLeftJoinLowering {
1830        } => {
1831        }
1832        ClusterFeatureName::EnableLetrecFixpointAnalysis {
1833        } => {
1834        }
1835        ClusterFeatureName::EnableJoinPrioritizeArranged {
1836        } => {
1837        }
1838        ClusterFeatureName::EnableProjectionPushdownAfterRelationCse {
1839        } => {
1840        }
1841    }
1842}
1843impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ClusterOption<T> {
1844    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1845        visitor.visit_cluster_option(self)
1846    }
1847}
1848#[allow(clippy::needless_pass_by_ref_mut)]
1849pub fn visit_cluster_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ClusterOption<T>)
1850where
1851    V: Visit<'ast, T, > + ?Sized,
1852{
1853    visitor.visit_cluster_option_name(&node.name);
1854    if let Some(v) = &node.value {
1855        visitor.visit_with_option_value(v);
1856    }
1857}
1858impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ClusterOptionName {
1859    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1860        visitor.visit_cluster_option_name(self)
1861    }
1862}
1863#[allow(clippy::needless_pass_by_ref_mut)]
1864pub fn visit_cluster_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ClusterOptionName)
1865where
1866    V: Visit<'ast, T, > + ?Sized,
1867{
1868    match node {
1869        ClusterOptionName::AvailabilityZones {
1870        } => {
1871        }
1872        ClusterOptionName::Disk {
1873        } => {
1874        }
1875        ClusterOptionName::IntrospectionInterval {
1876        } => {
1877        }
1878        ClusterOptionName::IntrospectionDebugging {
1879        } => {
1880        }
1881        ClusterOptionName::Managed {
1882        } => {
1883        }
1884        ClusterOptionName::Replicas {
1885        } => {
1886        }
1887        ClusterOptionName::ReplicationFactor {
1888        } => {
1889        }
1890        ClusterOptionName::Size {
1891        } => {
1892        }
1893        ClusterOptionName::Schedule {
1894        } => {
1895        }
1896        ClusterOptionName::WorkloadClass {
1897        } => {
1898        }
1899    }
1900}
1901impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ClusterScheduleOptionValue {
1902    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1903        visitor.visit_cluster_schedule_option_value(self)
1904    }
1905}
1906#[allow(clippy::needless_pass_by_ref_mut)]
1907pub fn visit_cluster_schedule_option_value<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ClusterScheduleOptionValue)
1908where
1909    V: Visit<'ast, T, > + ?Sized,
1910{
1911    match node {
1912        ClusterScheduleOptionValue::Manual {
1913        } => {
1914        }
1915        ClusterScheduleOptionValue::Refresh {
1916            hydration_time_estimate: binding0,
1917        } => {
1918            if let Some(v) = binding0 {
1919                visitor.visit_interval_value(v);
1920            }
1921        }
1922    }
1923}
1924impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ColumnDef<T> {
1925    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1926        visitor.visit_column_def(self)
1927    }
1928}
1929#[allow(clippy::needless_pass_by_ref_mut)]
1930pub fn visit_column_def<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ColumnDef<T>)
1931where
1932    V: Visit<'ast, T, > + ?Sized,
1933{
1934    visitor.visit_ident(&node.name);
1935    visitor.visit_data_type(&node.data_type);
1936    if let Some(v) = &node.collation {
1937        visitor.visit_unresolved_item_name(v);
1938    }
1939    for v in &node.options {
1940        visitor.visit_column_option_def(v);
1941    }
1942}
1943impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ColumnName<T> {
1944    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1945        visitor.visit_column_name(self)
1946    }
1947}
1948#[allow(clippy::needless_pass_by_ref_mut)]
1949pub fn visit_column_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ColumnName<T>)
1950where
1951    V: Visit<'ast, T, > + ?Sized,
1952{
1953    visitor.visit_item_name(&node.relation);
1954    visitor.visit_column_reference(&node.column);
1955}
1956impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ColumnOption<T> {
1957    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
1958        visitor.visit_column_option(self)
1959    }
1960}
1961#[allow(clippy::needless_pass_by_ref_mut)]
1962pub fn visit_column_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ColumnOption<T>)
1963where
1964    V: Visit<'ast, T, > + ?Sized,
1965{
1966    match node {
1967        ColumnOption::Null {
1968        } => {
1969        }
1970        ColumnOption::NotNull {
1971        } => {
1972        }
1973        ColumnOption::Default {
1974            0: binding0,
1975        } => {
1976            visitor.visit_expr(binding0);
1977        }
1978        ColumnOption::Unique {
1979            is_primary: binding0,
1980        } => {
1981        }
1982        ColumnOption::ForeignKey {
1983            foreign_table: binding0,
1984            referred_columns: binding1,
1985        } => {
1986            visitor.visit_unresolved_item_name(binding0);
1987            for v in binding1 {
1988                visitor.visit_ident(v);
1989            }
1990        }
1991        ColumnOption::Check {
1992            0: binding0,
1993        } => {
1994            visitor.visit_expr(binding0);
1995        }
1996        ColumnOption::Versioned {
1997            action: binding0,
1998            version: binding1,
1999        } => {
2000            visitor.visit_column_versioned(binding0);
2001            visitor.visit_version(binding1);
2002        }
2003    }
2004}
2005impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ColumnOptionDef<T> {
2006    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2007        visitor.visit_column_option_def(self)
2008    }
2009}
2010#[allow(clippy::needless_pass_by_ref_mut)]
2011pub fn visit_column_option_def<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ColumnOptionDef<T>)
2012where
2013    V: Visit<'ast, T, > + ?Sized,
2014{
2015    if let Some(v) = &node.name {
2016        visitor.visit_ident(v);
2017    }
2018    visitor.visit_column_option(&node.option);
2019}
2020impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ColumnVersioned {
2021    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2022        visitor.visit_column_versioned(self)
2023    }
2024}
2025#[allow(clippy::needless_pass_by_ref_mut)]
2026pub fn visit_column_versioned<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ColumnVersioned)
2027where
2028    V: Visit<'ast, T, > + ?Sized,
2029{
2030    match node {
2031        ColumnVersioned::Added {
2032        } => {
2033        }
2034    }
2035}
2036impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CommentObjectType<T> {
2037    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2038        visitor.visit_comment_object_type(self)
2039    }
2040}
2041#[allow(clippy::needless_pass_by_ref_mut)]
2042pub fn visit_comment_object_type<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CommentObjectType<T>)
2043where
2044    V: Visit<'ast, T, > + ?Sized,
2045{
2046    match node {
2047        CommentObjectType::Table {
2048            name: binding0,
2049        } => {
2050            visitor.visit_item_name(binding0);
2051        }
2052        CommentObjectType::View {
2053            name: binding0,
2054        } => {
2055            visitor.visit_item_name(binding0);
2056        }
2057        CommentObjectType::Column {
2058            name: binding0,
2059        } => {
2060            visitor.visit_column_name(binding0);
2061        }
2062        CommentObjectType::MaterializedView {
2063            name: binding0,
2064        } => {
2065            visitor.visit_item_name(binding0);
2066        }
2067        CommentObjectType::Source {
2068            name: binding0,
2069        } => {
2070            visitor.visit_item_name(binding0);
2071        }
2072        CommentObjectType::Sink {
2073            name: binding0,
2074        } => {
2075            visitor.visit_item_name(binding0);
2076        }
2077        CommentObjectType::Index {
2078            name: binding0,
2079        } => {
2080            visitor.visit_item_name(binding0);
2081        }
2082        CommentObjectType::Func {
2083            name: binding0,
2084        } => {
2085            visitor.visit_item_name(binding0);
2086        }
2087        CommentObjectType::Connection {
2088            name: binding0,
2089        } => {
2090            visitor.visit_item_name(binding0);
2091        }
2092        CommentObjectType::Type {
2093            ty: binding0,
2094        } => {
2095            visitor.visit_data_type(binding0);
2096        }
2097        CommentObjectType::Secret {
2098            name: binding0,
2099        } => {
2100            visitor.visit_item_name(binding0);
2101        }
2102        CommentObjectType::Role {
2103            name: binding0,
2104        } => {
2105            visitor.visit_role_name(binding0);
2106        }
2107        CommentObjectType::Database {
2108            name: binding0,
2109        } => {
2110            visitor.visit_database_name(binding0);
2111        }
2112        CommentObjectType::Schema {
2113            name: binding0,
2114        } => {
2115            visitor.visit_schema_name(binding0);
2116        }
2117        CommentObjectType::Cluster {
2118            name: binding0,
2119        } => {
2120            visitor.visit_cluster_name(binding0);
2121        }
2122        CommentObjectType::ClusterReplica {
2123            name: binding0,
2124        } => {
2125            visitor.visit_qualified_replica(binding0);
2126        }
2127        CommentObjectType::NetworkPolicy {
2128            name: binding0,
2129        } => {
2130            visitor.visit_network_policy_name(binding0);
2131        }
2132    }
2133}
2134impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CommentStatement<T> {
2135    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2136        visitor.visit_comment_statement(self)
2137    }
2138}
2139#[allow(clippy::needless_pass_by_ref_mut)]
2140pub fn visit_comment_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CommentStatement<T>)
2141where
2142    V: Visit<'ast, T, > + ?Sized,
2143{
2144    visitor.visit_comment_object_type(&node.object);
2145    if let Some(v) = &node.comment {
2146    }
2147}
2148impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CommitStatement {
2149    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2150        visitor.visit_commit_statement(self)
2151    }
2152}
2153#[allow(clippy::needless_pass_by_ref_mut)]
2154pub fn visit_commit_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CommitStatement)
2155where
2156    V: Visit<'ast, T, > + ?Sized,
2157{
2158}
2159impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ConnectionDefaultAwsPrivatelink<T> {
2160    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2161        visitor.visit_connection_default_aws_privatelink(self)
2162    }
2163}
2164#[allow(clippy::needless_pass_by_ref_mut)]
2165pub fn visit_connection_default_aws_privatelink<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ConnectionDefaultAwsPrivatelink<T>)
2166where
2167    V: Visit<'ast, T, > + ?Sized,
2168{
2169    visitor.visit_item_name(&node.connection);
2170    if let Some(v) = &node.port {
2171    }
2172}
2173impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ConnectionOption<T> {
2174    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2175        visitor.visit_connection_option(self)
2176    }
2177}
2178#[allow(clippy::needless_pass_by_ref_mut)]
2179pub fn visit_connection_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ConnectionOption<T>)
2180where
2181    V: Visit<'ast, T, > + ?Sized,
2182{
2183    visitor.visit_connection_option_name(&node.name);
2184    if let Some(v) = &node.value {
2185        visitor.visit_with_option_value(v);
2186    }
2187}
2188impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ConnectionOptionName {
2189    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2190        visitor.visit_connection_option_name(self)
2191    }
2192}
2193#[allow(clippy::needless_pass_by_ref_mut)]
2194pub fn visit_connection_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ConnectionOptionName)
2195where
2196    V: Visit<'ast, T, > + ?Sized,
2197{
2198    match node {
2199        ConnectionOptionName::AccessKeyId {
2200        } => {
2201        }
2202        ConnectionOptionName::AssumeRoleArn {
2203        } => {
2204        }
2205        ConnectionOptionName::AssumeRoleSessionName {
2206        } => {
2207        }
2208        ConnectionOptionName::AvailabilityZones {
2209        } => {
2210        }
2211        ConnectionOptionName::AwsConnection {
2212        } => {
2213        }
2214        ConnectionOptionName::AwsPrivatelink {
2215        } => {
2216        }
2217        ConnectionOptionName::Broker {
2218        } => {
2219        }
2220        ConnectionOptionName::Brokers {
2221        } => {
2222        }
2223        ConnectionOptionName::Credential {
2224        } => {
2225        }
2226        ConnectionOptionName::Database {
2227        } => {
2228        }
2229        ConnectionOptionName::Endpoint {
2230        } => {
2231        }
2232        ConnectionOptionName::Host {
2233        } => {
2234        }
2235        ConnectionOptionName::Password {
2236        } => {
2237        }
2238        ConnectionOptionName::Port {
2239        } => {
2240        }
2241        ConnectionOptionName::ProgressTopic {
2242        } => {
2243        }
2244        ConnectionOptionName::ProgressTopicReplicationFactor {
2245        } => {
2246        }
2247        ConnectionOptionName::PublicKey1 {
2248        } => {
2249        }
2250        ConnectionOptionName::PublicKey2 {
2251        } => {
2252        }
2253        ConnectionOptionName::Region {
2254        } => {
2255        }
2256        ConnectionOptionName::SaslMechanisms {
2257        } => {
2258        }
2259        ConnectionOptionName::SaslPassword {
2260        } => {
2261        }
2262        ConnectionOptionName::SaslUsername {
2263        } => {
2264        }
2265        ConnectionOptionName::Scope {
2266        } => {
2267        }
2268        ConnectionOptionName::SecretAccessKey {
2269        } => {
2270        }
2271        ConnectionOptionName::SecurityProtocol {
2272        } => {
2273        }
2274        ConnectionOptionName::ServiceName {
2275        } => {
2276        }
2277        ConnectionOptionName::SshTunnel {
2278        } => {
2279        }
2280        ConnectionOptionName::SslCertificate {
2281        } => {
2282        }
2283        ConnectionOptionName::SslCertificateAuthority {
2284        } => {
2285        }
2286        ConnectionOptionName::SslKey {
2287        } => {
2288        }
2289        ConnectionOptionName::SslMode {
2290        } => {
2291        }
2292        ConnectionOptionName::SessionToken {
2293        } => {
2294        }
2295        ConnectionOptionName::CatalogType {
2296        } => {
2297        }
2298        ConnectionOptionName::Url {
2299        } => {
2300        }
2301        ConnectionOptionName::User {
2302        } => {
2303        }
2304        ConnectionOptionName::Warehouse {
2305        } => {
2306        }
2307    }
2308}
2309impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ConnectionRulePattern {
2310    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2311        visitor.visit_connection_rule_pattern(self)
2312    }
2313}
2314#[allow(clippy::needless_pass_by_ref_mut)]
2315pub fn visit_connection_rule_pattern<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ConnectionRulePattern)
2316where
2317    V: Visit<'ast, T, > + ?Sized,
2318{
2319}
2320impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CopyDirection {
2321    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2322        visitor.visit_copy_direction(self)
2323    }
2324}
2325#[allow(clippy::needless_pass_by_ref_mut)]
2326pub fn visit_copy_direction<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CopyDirection)
2327where
2328    V: Visit<'ast, T, > + ?Sized,
2329{
2330    match node {
2331        CopyDirection::To {
2332        } => {
2333        }
2334        CopyDirection::From {
2335        } => {
2336        }
2337    }
2338}
2339impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CopyOption<T> {
2340    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2341        visitor.visit_copy_option(self)
2342    }
2343}
2344#[allow(clippy::needless_pass_by_ref_mut)]
2345pub fn visit_copy_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CopyOption<T>)
2346where
2347    V: Visit<'ast, T, > + ?Sized,
2348{
2349    visitor.visit_copy_option_name(&node.name);
2350    if let Some(v) = &node.value {
2351        visitor.visit_with_option_value(v);
2352    }
2353}
2354impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CopyOptionName {
2355    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2356        visitor.visit_copy_option_name(self)
2357    }
2358}
2359#[allow(clippy::needless_pass_by_ref_mut)]
2360pub fn visit_copy_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CopyOptionName)
2361where
2362    V: Visit<'ast, T, > + ?Sized,
2363{
2364    match node {
2365        CopyOptionName::Format {
2366        } => {
2367        }
2368        CopyOptionName::Delimiter {
2369        } => {
2370        }
2371        CopyOptionName::Null {
2372        } => {
2373        }
2374        CopyOptionName::Escape {
2375        } => {
2376        }
2377        CopyOptionName::Quote {
2378        } => {
2379        }
2380        CopyOptionName::Header {
2381        } => {
2382        }
2383        CopyOptionName::AwsConnection {
2384        } => {
2385        }
2386        CopyOptionName::MaxFileSize {
2387        } => {
2388        }
2389        CopyOptionName::Files {
2390        } => {
2391        }
2392        CopyOptionName::Pattern {
2393        } => {
2394        }
2395    }
2396}
2397impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CopyRelation<T> {
2398    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2399        visitor.visit_copy_relation(self)
2400    }
2401}
2402#[allow(clippy::needless_pass_by_ref_mut)]
2403pub fn visit_copy_relation<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CopyRelation<T>)
2404where
2405    V: Visit<'ast, T, > + ?Sized,
2406{
2407    match node {
2408        CopyRelation::Named {
2409            name: binding0,
2410            columns: binding1,
2411        } => {
2412            visitor.visit_item_name(binding0);
2413            for v in binding1 {
2414                visitor.visit_ident(v);
2415            }
2416        }
2417        CopyRelation::Select {
2418            0: binding0,
2419        } => {
2420            visitor.visit_select_statement(binding0);
2421        }
2422        CopyRelation::Subscribe {
2423            0: binding0,
2424        } => {
2425            visitor.visit_subscribe_statement(binding0);
2426        }
2427    }
2428}
2429impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CopyStatement<T> {
2430    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2431        visitor.visit_copy_statement(self)
2432    }
2433}
2434#[allow(clippy::needless_pass_by_ref_mut)]
2435pub fn visit_copy_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CopyStatement<T>)
2436where
2437    V: Visit<'ast, T, > + ?Sized,
2438{
2439    visitor.visit_copy_relation(&node.relation);
2440    visitor.visit_copy_direction(&node.direction);
2441    visitor.visit_copy_target(&node.target);
2442    for v in &node.options {
2443        visitor.visit_copy_option(v);
2444    }
2445}
2446impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CopyTarget<T> {
2447    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2448        visitor.visit_copy_target(self)
2449    }
2450}
2451#[allow(clippy::needless_pass_by_ref_mut)]
2452pub fn visit_copy_target<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CopyTarget<T>)
2453where
2454    V: Visit<'ast, T, > + ?Sized,
2455{
2456    match node {
2457        CopyTarget::Stdin {
2458        } => {
2459        }
2460        CopyTarget::Stdout {
2461        } => {
2462        }
2463        CopyTarget::Expr {
2464            0: binding0,
2465        } => {
2466            visitor.visit_expr(binding0);
2467        }
2468    }
2469}
2470impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateClusterReplicaStatement<T> {
2471    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2472        visitor.visit_create_cluster_replica_statement(self)
2473    }
2474}
2475#[allow(clippy::needless_pass_by_ref_mut)]
2476pub fn visit_create_cluster_replica_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateClusterReplicaStatement<T>)
2477where
2478    V: Visit<'ast, T, > + ?Sized,
2479{
2480    visitor.visit_ident(&node.of_cluster);
2481    visitor.visit_replica_definition(&node.definition);
2482}
2483impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateClusterStatement<T> {
2484    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2485        visitor.visit_create_cluster_statement(self)
2486    }
2487}
2488#[allow(clippy::needless_pass_by_ref_mut)]
2489pub fn visit_create_cluster_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateClusterStatement<T>)
2490where
2491    V: Visit<'ast, T, > + ?Sized,
2492{
2493    visitor.visit_ident(&node.name);
2494    for v in &node.options {
2495        visitor.visit_cluster_option(v);
2496    }
2497    for v in &node.features {
2498        visitor.visit_cluster_feature(v);
2499    }
2500}
2501impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateConnectionOption<T> {
2502    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2503        visitor.visit_create_connection_option(self)
2504    }
2505}
2506#[allow(clippy::needless_pass_by_ref_mut)]
2507pub fn visit_create_connection_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateConnectionOption<T>)
2508where
2509    V: Visit<'ast, T, > + ?Sized,
2510{
2511    visitor.visit_create_connection_option_name(&node.name);
2512    if let Some(v) = &node.value {
2513        visitor.visit_with_option_value(v);
2514    }
2515}
2516impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateConnectionOptionName {
2517    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2518        visitor.visit_create_connection_option_name(self)
2519    }
2520}
2521#[allow(clippy::needless_pass_by_ref_mut)]
2522pub fn visit_create_connection_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateConnectionOptionName)
2523where
2524    V: Visit<'ast, T, > + ?Sized,
2525{
2526    match node {
2527        CreateConnectionOptionName::Validate {
2528        } => {
2529        }
2530    }
2531}
2532impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateConnectionStatement<T> {
2533    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2534        visitor.visit_create_connection_statement(self)
2535    }
2536}
2537#[allow(clippy::needless_pass_by_ref_mut)]
2538pub fn visit_create_connection_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateConnectionStatement<T>)
2539where
2540    V: Visit<'ast, T, > + ?Sized,
2541{
2542    visitor.visit_unresolved_item_name(&node.name);
2543    visitor.visit_create_connection_type(&node.connection_type);
2544    for v in &node.values {
2545        visitor.visit_connection_option(v);
2546    }
2547    for v in &node.with_options {
2548        visitor.visit_create_connection_option(v);
2549    }
2550}
2551impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateConnectionType {
2552    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2553        visitor.visit_create_connection_type(self)
2554    }
2555}
2556#[allow(clippy::needless_pass_by_ref_mut)]
2557pub fn visit_create_connection_type<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateConnectionType)
2558where
2559    V: Visit<'ast, T, > + ?Sized,
2560{
2561    match node {
2562        CreateConnectionType::Aws {
2563        } => {
2564        }
2565        CreateConnectionType::AwsPrivatelink {
2566        } => {
2567        }
2568        CreateConnectionType::Kafka {
2569        } => {
2570        }
2571        CreateConnectionType::Csr {
2572        } => {
2573        }
2574        CreateConnectionType::Postgres {
2575        } => {
2576        }
2577        CreateConnectionType::Ssh {
2578        } => {
2579        }
2580        CreateConnectionType::SqlServer {
2581        } => {
2582        }
2583        CreateConnectionType::MySql {
2584        } => {
2585        }
2586        CreateConnectionType::IcebergCatalog {
2587        } => {
2588        }
2589    }
2590}
2591impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateDatabaseStatement {
2592    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2593        visitor.visit_create_database_statement(self)
2594    }
2595}
2596#[allow(clippy::needless_pass_by_ref_mut)]
2597pub fn visit_create_database_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateDatabaseStatement)
2598where
2599    V: Visit<'ast, T, > + ?Sized,
2600{
2601    visitor.visit_unresolved_database_name(&node.name);
2602}
2603impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateIndexStatement<T> {
2604    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2605        visitor.visit_create_index_statement(self)
2606    }
2607}
2608#[allow(clippy::needless_pass_by_ref_mut)]
2609pub fn visit_create_index_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateIndexStatement<T>)
2610where
2611    V: Visit<'ast, T, > + ?Sized,
2612{
2613    if let Some(v) = &node.name {
2614        visitor.visit_ident(v);
2615    }
2616    if let Some(v) = &node.in_cluster {
2617        visitor.visit_cluster_name(v);
2618    }
2619    visitor.visit_item_name(&node.on_name);
2620    if let Some(v) = &node.key_parts {
2621        for v in v {
2622            visitor.visit_expr(v);
2623        }
2624    }
2625    for v in &node.with_options {
2626        visitor.visit_index_option(v);
2627    }
2628}
2629impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateMaterializedViewStatement<T> {
2630    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2631        visitor.visit_create_materialized_view_statement(self)
2632    }
2633}
2634#[allow(clippy::needless_pass_by_ref_mut)]
2635pub fn visit_create_materialized_view_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateMaterializedViewStatement<T>)
2636where
2637    V: Visit<'ast, T, > + ?Sized,
2638{
2639    visitor.visit_if_exists_behavior(&node.if_exists);
2640    visitor.visit_unresolved_item_name(&node.name);
2641    for v in &node.columns {
2642        visitor.visit_ident(v);
2643    }
2644    if let Some(v) = &node.replacement_for {
2645        visitor.visit_item_name(v);
2646    }
2647    if let Some(v) = &node.in_cluster {
2648        visitor.visit_cluster_name(v);
2649    }
2650    if let Some(v) = &node.in_cluster_replica {
2651        visitor.visit_ident(v);
2652    }
2653    visitor.visit_query(&node.query);
2654    if let Some(v) = &node.as_of {
2655    }
2656    for v in &node.with_options {
2657        visitor.visit_materialized_view_option(v);
2658    }
2659}
2660impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateNetworkPolicyStatement<T> {
2661    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2662        visitor.visit_create_network_policy_statement(self)
2663    }
2664}
2665#[allow(clippy::needless_pass_by_ref_mut)]
2666pub fn visit_create_network_policy_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateNetworkPolicyStatement<T>)
2667where
2668    V: Visit<'ast, T, > + ?Sized,
2669{
2670    visitor.visit_ident(&node.name);
2671    for v in &node.options {
2672        visitor.visit_network_policy_option(v);
2673    }
2674}
2675impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateRoleStatement {
2676    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2677        visitor.visit_create_role_statement(self)
2678    }
2679}
2680#[allow(clippy::needless_pass_by_ref_mut)]
2681pub fn visit_create_role_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateRoleStatement)
2682where
2683    V: Visit<'ast, T, > + ?Sized,
2684{
2685    visitor.visit_ident(&node.name);
2686    for v in &node.options {
2687        visitor.visit_role_attribute(v);
2688    }
2689}
2690impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateSchemaStatement {
2691    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2692        visitor.visit_create_schema_statement(self)
2693    }
2694}
2695#[allow(clippy::needless_pass_by_ref_mut)]
2696pub fn visit_create_schema_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateSchemaStatement)
2697where
2698    V: Visit<'ast, T, > + ?Sized,
2699{
2700    visitor.visit_unresolved_schema_name(&node.name);
2701}
2702impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateSecretStatement<T> {
2703    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2704        visitor.visit_create_secret_statement(self)
2705    }
2706}
2707#[allow(clippy::needless_pass_by_ref_mut)]
2708pub fn visit_create_secret_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateSecretStatement<T>)
2709where
2710    V: Visit<'ast, T, > + ?Sized,
2711{
2712    visitor.visit_unresolved_item_name(&node.name);
2713    visitor.visit_expr(&node.value);
2714}
2715impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateSinkConnection<T> {
2716    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2717        visitor.visit_create_sink_connection(self)
2718    }
2719}
2720#[allow(clippy::needless_pass_by_ref_mut)]
2721pub fn visit_create_sink_connection<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateSinkConnection<T>)
2722where
2723    V: Visit<'ast, T, > + ?Sized,
2724{
2725    match node {
2726        CreateSinkConnection::Kafka {
2727            connection: binding0,
2728            options: binding1,
2729            key: binding2,
2730            headers: binding3,
2731        } => {
2732            visitor.visit_item_name(binding0);
2733            for v in binding1 {
2734                visitor.visit_kafka_sink_config_option(v);
2735            }
2736            if let Some(v) = binding2 {
2737                visitor.visit_sink_key(v);
2738            }
2739            if let Some(v) = binding3 {
2740                visitor.visit_ident(v);
2741            }
2742        }
2743        CreateSinkConnection::Iceberg {
2744            connection: binding0,
2745            aws_connection: binding1,
2746            key: binding2,
2747            options: binding3,
2748        } => {
2749            visitor.visit_item_name(binding0);
2750            visitor.visit_item_name(binding1);
2751            if let Some(v) = binding2 {
2752                visitor.visit_sink_key(v);
2753            }
2754            for v in binding3 {
2755                visitor.visit_iceberg_sink_config_option(v);
2756            }
2757        }
2758    }
2759}
2760impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateSinkOption<T> {
2761    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2762        visitor.visit_create_sink_option(self)
2763    }
2764}
2765#[allow(clippy::needless_pass_by_ref_mut)]
2766pub fn visit_create_sink_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateSinkOption<T>)
2767where
2768    V: Visit<'ast, T, > + ?Sized,
2769{
2770    visitor.visit_create_sink_option_name(&node.name);
2771    if let Some(v) = &node.value {
2772        visitor.visit_with_option_value(v);
2773    }
2774}
2775impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateSinkOptionName {
2776    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2777        visitor.visit_create_sink_option_name(self)
2778    }
2779}
2780#[allow(clippy::needless_pass_by_ref_mut)]
2781pub fn visit_create_sink_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateSinkOptionName)
2782where
2783    V: Visit<'ast, T, > + ?Sized,
2784{
2785    match node {
2786        CreateSinkOptionName::Snapshot {
2787        } => {
2788        }
2789        CreateSinkOptionName::Version {
2790        } => {
2791        }
2792        CreateSinkOptionName::PartitionStrategy {
2793        } => {
2794        }
2795        CreateSinkOptionName::CommitInterval {
2796        } => {
2797        }
2798    }
2799}
2800impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateSinkStatement<T> {
2801    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2802        visitor.visit_create_sink_statement(self)
2803    }
2804}
2805#[allow(clippy::needless_pass_by_ref_mut)]
2806pub fn visit_create_sink_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateSinkStatement<T>)
2807where
2808    V: Visit<'ast, T, > + ?Sized,
2809{
2810    if let Some(v) = &node.name {
2811        visitor.visit_unresolved_item_name(v);
2812    }
2813    if let Some(v) = &node.in_cluster {
2814        visitor.visit_cluster_name(v);
2815    }
2816    visitor.visit_item_name(&node.from);
2817    visitor.visit_create_sink_connection(&node.connection);
2818    if let Some(v) = &node.format {
2819        visitor.visit_format_specifier(v);
2820    }
2821    if let Some(v) = &node.envelope {
2822        visitor.visit_sink_envelope(v);
2823    }
2824    if let Some(v) = &node.mode {
2825        visitor.visit_iceberg_sink_mode(v);
2826    }
2827    for v in &node.with_options {
2828        visitor.visit_create_sink_option(v);
2829    }
2830}
2831impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateSourceConnection<T> {
2832    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2833        visitor.visit_create_source_connection(self)
2834    }
2835}
2836#[allow(clippy::needless_pass_by_ref_mut)]
2837pub fn visit_create_source_connection<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateSourceConnection<T>)
2838where
2839    V: Visit<'ast, T, > + ?Sized,
2840{
2841    match node {
2842        CreateSourceConnection::Kafka {
2843            connection: binding0,
2844            options: binding1,
2845        } => {
2846            visitor.visit_item_name(binding0);
2847            for v in binding1 {
2848                visitor.visit_kafka_source_config_option(v);
2849            }
2850        }
2851        CreateSourceConnection::Postgres {
2852            connection: binding0,
2853            options: binding1,
2854        } => {
2855            visitor.visit_item_name(binding0);
2856            for v in binding1 {
2857                visitor.visit_pg_config_option(v);
2858            }
2859        }
2860        CreateSourceConnection::SqlServer {
2861            connection: binding0,
2862            options: binding1,
2863        } => {
2864            visitor.visit_item_name(binding0);
2865            for v in binding1 {
2866                visitor.visit_sql_server_config_option(v);
2867            }
2868        }
2869        CreateSourceConnection::MySql {
2870            connection: binding0,
2871            options: binding1,
2872        } => {
2873            visitor.visit_item_name(binding0);
2874            for v in binding1 {
2875                visitor.visit_my_sql_config_option(v);
2876            }
2877        }
2878        CreateSourceConnection::LoadGenerator {
2879            generator: binding0,
2880            options: binding1,
2881        } => {
2882            visitor.visit_load_generator(binding0);
2883            for v in binding1 {
2884                visitor.visit_load_generator_option(v);
2885            }
2886        }
2887    }
2888}
2889impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateSourceOption<T> {
2890    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2891        visitor.visit_create_source_option(self)
2892    }
2893}
2894#[allow(clippy::needless_pass_by_ref_mut)]
2895pub fn visit_create_source_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateSourceOption<T>)
2896where
2897    V: Visit<'ast, T, > + ?Sized,
2898{
2899    visitor.visit_create_source_option_name(&node.name);
2900    if let Some(v) = &node.value {
2901        visitor.visit_with_option_value(v);
2902    }
2903}
2904impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateSourceOptionName {
2905    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2906        visitor.visit_create_source_option_name(self)
2907    }
2908}
2909#[allow(clippy::needless_pass_by_ref_mut)]
2910pub fn visit_create_source_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateSourceOptionName)
2911where
2912    V: Visit<'ast, T, > + ?Sized,
2913{
2914    match node {
2915        CreateSourceOptionName::TimestampInterval {
2916        } => {
2917        }
2918        CreateSourceOptionName::RetainHistory {
2919        } => {
2920        }
2921    }
2922}
2923impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateSourceStatement<T> {
2924    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2925        visitor.visit_create_source_statement(self)
2926    }
2927}
2928#[allow(clippy::needless_pass_by_ref_mut)]
2929pub fn visit_create_source_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateSourceStatement<T>)
2930where
2931    V: Visit<'ast, T, > + ?Sized,
2932{
2933    visitor.visit_unresolved_item_name(&node.name);
2934    if let Some(v) = &node.in_cluster {
2935        visitor.visit_cluster_name(v);
2936    }
2937    for v in &node.col_names {
2938        visitor.visit_ident(v);
2939    }
2940    visitor.visit_create_source_connection(&node.connection);
2941    for v in &node.include_metadata {
2942        visitor.visit_source_include_metadata(v);
2943    }
2944    if let Some(v) = &node.format {
2945        visitor.visit_format_specifier(v);
2946    }
2947    if let Some(v) = &node.envelope {
2948        visitor.visit_source_envelope(v);
2949    }
2950    if let Some(v) = &node.key_constraint {
2951        visitor.visit_key_constraint(v);
2952    }
2953    for v in &node.with_options {
2954        visitor.visit_create_source_option(v);
2955    }
2956    if let Some(v) = &node.external_references {
2957        visitor.visit_external_references(v);
2958    }
2959    if let Some(v) = &node.progress_subsource {
2960        visitor.visit_deferred_item_name(v);
2961    }
2962}
2963impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateSubsourceOption<T> {
2964    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2965        visitor.visit_create_subsource_option(self)
2966    }
2967}
2968#[allow(clippy::needless_pass_by_ref_mut)]
2969pub fn visit_create_subsource_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateSubsourceOption<T>)
2970where
2971    V: Visit<'ast, T, > + ?Sized,
2972{
2973    visitor.visit_create_subsource_option_name(&node.name);
2974    if let Some(v) = &node.value {
2975        visitor.visit_with_option_value(v);
2976    }
2977}
2978impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateSubsourceOptionName {
2979    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
2980        visitor.visit_create_subsource_option_name(self)
2981    }
2982}
2983#[allow(clippy::needless_pass_by_ref_mut)]
2984pub fn visit_create_subsource_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateSubsourceOptionName)
2985where
2986    V: Visit<'ast, T, > + ?Sized,
2987{
2988    match node {
2989        CreateSubsourceOptionName::Progress {
2990        } => {
2991        }
2992        CreateSubsourceOptionName::ExternalReference {
2993        } => {
2994        }
2995        CreateSubsourceOptionName::RetainHistory {
2996        } => {
2997        }
2998        CreateSubsourceOptionName::TextColumns {
2999        } => {
3000        }
3001        CreateSubsourceOptionName::ExcludeColumns {
3002        } => {
3003        }
3004        CreateSubsourceOptionName::Details {
3005        } => {
3006        }
3007    }
3008}
3009impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateSubsourceStatement<T> {
3010    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3011        visitor.visit_create_subsource_statement(self)
3012    }
3013}
3014#[allow(clippy::needless_pass_by_ref_mut)]
3015pub fn visit_create_subsource_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateSubsourceStatement<T>)
3016where
3017    V: Visit<'ast, T, > + ?Sized,
3018{
3019    visitor.visit_unresolved_item_name(&node.name);
3020    for v in &node.columns {
3021        visitor.visit_column_def(v);
3022    }
3023    if let Some(v) = &node.of_source {
3024        visitor.visit_item_name(v);
3025    }
3026    for v in &node.constraints {
3027        visitor.visit_table_constraint(v);
3028    }
3029    for v in &node.with_options {
3030        visitor.visit_create_subsource_option(v);
3031    }
3032}
3033impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateTableFromSourceStatement<T> {
3034    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3035        visitor.visit_create_table_from_source_statement(self)
3036    }
3037}
3038#[allow(clippy::needless_pass_by_ref_mut)]
3039pub fn visit_create_table_from_source_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateTableFromSourceStatement<T>)
3040where
3041    V: Visit<'ast, T, > + ?Sized,
3042{
3043    visitor.visit_unresolved_item_name(&node.name);
3044    visitor.visit_table_from_source_columns(&node.columns);
3045    for v in &node.constraints {
3046        visitor.visit_table_constraint(v);
3047    }
3048    visitor.visit_item_name(&node.source);
3049    if let Some(v) = &node.external_reference {
3050        visitor.visit_unresolved_item_name(v);
3051    }
3052    for v in &node.with_options {
3053        visitor.visit_table_from_source_option(v);
3054    }
3055    for v in &node.include_metadata {
3056        visitor.visit_source_include_metadata(v);
3057    }
3058    if let Some(v) = &node.format {
3059        visitor.visit_format_specifier(v);
3060    }
3061    if let Some(v) = &node.envelope {
3062        visitor.visit_source_envelope(v);
3063    }
3064}
3065impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateTableStatement<T> {
3066    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3067        visitor.visit_create_table_statement(self)
3068    }
3069}
3070#[allow(clippy::needless_pass_by_ref_mut)]
3071pub fn visit_create_table_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateTableStatement<T>)
3072where
3073    V: Visit<'ast, T, > + ?Sized,
3074{
3075    visitor.visit_unresolved_item_name(&node.name);
3076    for v in &node.columns {
3077        visitor.visit_column_def(v);
3078    }
3079    for v in &node.constraints {
3080        visitor.visit_table_constraint(v);
3081    }
3082    for v in &node.with_options {
3083        visitor.visit_table_option(v);
3084    }
3085}
3086impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateTypeAs<T> {
3087    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3088        visitor.visit_create_type_as(self)
3089    }
3090}
3091#[allow(clippy::needless_pass_by_ref_mut)]
3092pub fn visit_create_type_as<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateTypeAs<T>)
3093where
3094    V: Visit<'ast, T, > + ?Sized,
3095{
3096    match node {
3097        CreateTypeAs::List {
3098            options: binding0,
3099        } => {
3100            for v in binding0 {
3101                visitor.visit_create_type_list_option(v);
3102            }
3103        }
3104        CreateTypeAs::Map {
3105            options: binding0,
3106        } => {
3107            for v in binding0 {
3108                visitor.visit_create_type_map_option(v);
3109            }
3110        }
3111        CreateTypeAs::Record {
3112            column_defs: binding0,
3113        } => {
3114            for v in binding0 {
3115                visitor.visit_column_def(v);
3116            }
3117        }
3118    }
3119}
3120impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateTypeListOption<T> {
3121    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3122        visitor.visit_create_type_list_option(self)
3123    }
3124}
3125#[allow(clippy::needless_pass_by_ref_mut)]
3126pub fn visit_create_type_list_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateTypeListOption<T>)
3127where
3128    V: Visit<'ast, T, > + ?Sized,
3129{
3130    visitor.visit_create_type_list_option_name(&node.name);
3131    if let Some(v) = &node.value {
3132        visitor.visit_with_option_value(v);
3133    }
3134}
3135impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateTypeListOptionName {
3136    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3137        visitor.visit_create_type_list_option_name(self)
3138    }
3139}
3140#[allow(clippy::needless_pass_by_ref_mut)]
3141pub fn visit_create_type_list_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateTypeListOptionName)
3142where
3143    V: Visit<'ast, T, > + ?Sized,
3144{
3145    match node {
3146        CreateTypeListOptionName::ElementType {
3147        } => {
3148        }
3149    }
3150}
3151impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateTypeMapOption<T> {
3152    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3153        visitor.visit_create_type_map_option(self)
3154    }
3155}
3156#[allow(clippy::needless_pass_by_ref_mut)]
3157pub fn visit_create_type_map_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateTypeMapOption<T>)
3158where
3159    V: Visit<'ast, T, > + ?Sized,
3160{
3161    visitor.visit_create_type_map_option_name(&node.name);
3162    if let Some(v) = &node.value {
3163        visitor.visit_with_option_value(v);
3164    }
3165}
3166impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateTypeMapOptionName {
3167    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3168        visitor.visit_create_type_map_option_name(self)
3169    }
3170}
3171#[allow(clippy::needless_pass_by_ref_mut)]
3172pub fn visit_create_type_map_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateTypeMapOptionName)
3173where
3174    V: Visit<'ast, T, > + ?Sized,
3175{
3176    match node {
3177        CreateTypeMapOptionName::KeyType {
3178        } => {
3179        }
3180        CreateTypeMapOptionName::ValueType {
3181        } => {
3182        }
3183    }
3184}
3185impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateTypeStatement<T> {
3186    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3187        visitor.visit_create_type_statement(self)
3188    }
3189}
3190#[allow(clippy::needless_pass_by_ref_mut)]
3191pub fn visit_create_type_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateTypeStatement<T>)
3192where
3193    V: Visit<'ast, T, > + ?Sized,
3194{
3195    visitor.visit_unresolved_item_name(&node.name);
3196    visitor.visit_create_type_as(&node.as_type);
3197}
3198impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateViewStatement<T> {
3199    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3200        visitor.visit_create_view_statement(self)
3201    }
3202}
3203#[allow(clippy::needless_pass_by_ref_mut)]
3204pub fn visit_create_view_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateViewStatement<T>)
3205where
3206    V: Visit<'ast, T, > + ?Sized,
3207{
3208    visitor.visit_if_exists_behavior(&node.if_exists);
3209    visitor.visit_view_definition(&node.definition);
3210}
3211impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateWebhookSourceBody {
3212    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3213        visitor.visit_create_webhook_source_body(self)
3214    }
3215}
3216#[allow(clippy::needless_pass_by_ref_mut)]
3217pub fn visit_create_webhook_source_body<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateWebhookSourceBody)
3218where
3219    V: Visit<'ast, T, > + ?Sized,
3220{
3221    if let Some(v) = &node.alias {
3222        visitor.visit_ident(v);
3223    }
3224}
3225impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateWebhookSourceCheck<T> {
3226    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3227        visitor.visit_create_webhook_source_check(self)
3228    }
3229}
3230#[allow(clippy::needless_pass_by_ref_mut)]
3231pub fn visit_create_webhook_source_check<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateWebhookSourceCheck<T>)
3232where
3233    V: Visit<'ast, T, > + ?Sized,
3234{
3235    if let Some(v) = &node.options {
3236        visitor.visit_create_webhook_source_check_options(v);
3237    }
3238    visitor.visit_expr(&node.using);
3239}
3240impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateWebhookSourceCheckOptions<T> {
3241    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3242        visitor.visit_create_webhook_source_check_options(self)
3243    }
3244}
3245#[allow(clippy::needless_pass_by_ref_mut)]
3246pub fn visit_create_webhook_source_check_options<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateWebhookSourceCheckOptions<T>)
3247where
3248    V: Visit<'ast, T, > + ?Sized,
3249{
3250    for v in &node.secrets {
3251        visitor.visit_create_webhook_source_secret(v);
3252    }
3253    for v in &node.headers {
3254        visitor.visit_create_webhook_source_header(v);
3255    }
3256    for v in &node.bodies {
3257        visitor.visit_create_webhook_source_body(v);
3258    }
3259}
3260impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateWebhookSourceFilterHeader {
3261    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3262        visitor.visit_create_webhook_source_filter_header(self)
3263    }
3264}
3265#[allow(clippy::needless_pass_by_ref_mut)]
3266pub fn visit_create_webhook_source_filter_header<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateWebhookSourceFilterHeader)
3267where
3268    V: Visit<'ast, T, > + ?Sized,
3269{
3270}
3271impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateWebhookSourceHeader {
3272    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3273        visitor.visit_create_webhook_source_header(self)
3274    }
3275}
3276#[allow(clippy::needless_pass_by_ref_mut)]
3277pub fn visit_create_webhook_source_header<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateWebhookSourceHeader)
3278where
3279    V: Visit<'ast, T, > + ?Sized,
3280{
3281    if let Some(v) = &node.alias {
3282        visitor.visit_ident(v);
3283    }
3284}
3285impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateWebhookSourceIncludeHeaders {
3286    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3287        visitor.visit_create_webhook_source_include_headers(self)
3288    }
3289}
3290#[allow(clippy::needless_pass_by_ref_mut)]
3291pub fn visit_create_webhook_source_include_headers<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateWebhookSourceIncludeHeaders)
3292where
3293    V: Visit<'ast, T, > + ?Sized,
3294{
3295    for v in &node.mappings {
3296        visitor.visit_create_webhook_source_map_header(v);
3297    }
3298    if let Some(v) = &node.column {
3299        for v in v {
3300            visitor.visit_create_webhook_source_filter_header(v);
3301        }
3302    }
3303}
3304impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateWebhookSourceMapHeader {
3305    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3306        visitor.visit_create_webhook_source_map_header(self)
3307    }
3308}
3309#[allow(clippy::needless_pass_by_ref_mut)]
3310pub fn visit_create_webhook_source_map_header<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateWebhookSourceMapHeader)
3311where
3312    V: Visit<'ast, T, > + ?Sized,
3313{
3314    visitor.visit_ident(&node.column_name);
3315}
3316impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateWebhookSourceSecret<T> {
3317    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3318        visitor.visit_create_webhook_source_secret(self)
3319    }
3320}
3321#[allow(clippy::needless_pass_by_ref_mut)]
3322pub fn visit_create_webhook_source_secret<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateWebhookSourceSecret<T>)
3323where
3324    V: Visit<'ast, T, > + ?Sized,
3325{
3326    visitor.visit_item_name(&node.secret);
3327    if let Some(v) = &node.alias {
3328        visitor.visit_ident(v);
3329    }
3330}
3331impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CreateWebhookSourceStatement<T> {
3332    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3333        visitor.visit_create_webhook_source_statement(self)
3334    }
3335}
3336#[allow(clippy::needless_pass_by_ref_mut)]
3337pub fn visit_create_webhook_source_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CreateWebhookSourceStatement<T>)
3338where
3339    V: Visit<'ast, T, > + ?Sized,
3340{
3341    visitor.visit_unresolved_item_name(&node.name);
3342    visitor.visit_format(&node.body_format);
3343    visitor.visit_create_webhook_source_include_headers(&node.include_headers);
3344    if let Some(v) = &node.validate_using {
3345        visitor.visit_create_webhook_source_check(v);
3346    }
3347    if let Some(v) = &node.in_cluster {
3348        visitor.visit_cluster_name(v);
3349    }
3350}
3351impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CsrConfigOption<T> {
3352    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3353        visitor.visit_csr_config_option(self)
3354    }
3355}
3356#[allow(clippy::needless_pass_by_ref_mut)]
3357pub fn visit_csr_config_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CsrConfigOption<T>)
3358where
3359    V: Visit<'ast, T, > + ?Sized,
3360{
3361    visitor.visit_csr_config_option_name(&node.name);
3362    if let Some(v) = &node.value {
3363        visitor.visit_with_option_value(v);
3364    }
3365}
3366impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CsrConfigOptionName<T> {
3367    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3368        visitor.visit_csr_config_option_name(self)
3369    }
3370}
3371#[allow(clippy::needless_pass_by_ref_mut)]
3372pub fn visit_csr_config_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CsrConfigOptionName<T>)
3373where
3374    V: Visit<'ast, T, > + ?Sized,
3375{
3376    match node {
3377        CsrConfigOptionName::AvroKeyFullname {
3378        } => {
3379        }
3380        CsrConfigOptionName::AvroValueFullname {
3381        } => {
3382        }
3383        CsrConfigOptionName::NullDefaults {
3384        } => {
3385        }
3386        CsrConfigOptionName::AvroDocOn {
3387            0: binding0,
3388        } => {
3389            visitor.visit_avro_doc_on(binding0);
3390        }
3391        CsrConfigOptionName::KeyCompatibilityLevel {
3392        } => {
3393        }
3394        CsrConfigOptionName::ValueCompatibilityLevel {
3395        } => {
3396        }
3397    }
3398}
3399impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CsrConnection<T> {
3400    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3401        visitor.visit_csr_connection(self)
3402    }
3403}
3404#[allow(clippy::needless_pass_by_ref_mut)]
3405pub fn visit_csr_connection<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CsrConnection<T>)
3406where
3407    V: Visit<'ast, T, > + ?Sized,
3408{
3409    visitor.visit_item_name(&node.connection);
3410    for v in &node.options {
3411        visitor.visit_csr_config_option(v);
3412    }
3413}
3414impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CsrConnectionAvro<T> {
3415    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3416        visitor.visit_csr_connection_avro(self)
3417    }
3418}
3419#[allow(clippy::needless_pass_by_ref_mut)]
3420pub fn visit_csr_connection_avro<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CsrConnectionAvro<T>)
3421where
3422    V: Visit<'ast, T, > + ?Sized,
3423{
3424    visitor.visit_csr_connection(&node.connection);
3425    if let Some(v) = &node.key_strategy {
3426        visitor.visit_reader_schema_selection_strategy(v);
3427    }
3428    if let Some(v) = &node.value_strategy {
3429        visitor.visit_reader_schema_selection_strategy(v);
3430    }
3431    if let Some(v) = &node.seed {
3432        visitor.visit_csr_seed_avro(v);
3433    }
3434}
3435impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CsrConnectionProtobuf<T> {
3436    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3437        visitor.visit_csr_connection_protobuf(self)
3438    }
3439}
3440#[allow(clippy::needless_pass_by_ref_mut)]
3441pub fn visit_csr_connection_protobuf<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CsrConnectionProtobuf<T>)
3442where
3443    V: Visit<'ast, T, > + ?Sized,
3444{
3445    visitor.visit_csr_connection(&node.connection);
3446    if let Some(v) = &node.seed {
3447        visitor.visit_csr_seed_protobuf(v);
3448    }
3449}
3450impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CsrSeedAvro {
3451    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3452        visitor.visit_csr_seed_avro(self)
3453    }
3454}
3455#[allow(clippy::needless_pass_by_ref_mut)]
3456pub fn visit_csr_seed_avro<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CsrSeedAvro)
3457where
3458    V: Visit<'ast, T, > + ?Sized,
3459{
3460    if let Some(v) = &node.key_schema {
3461    }
3462    for v in &node.key_reference_schemas {
3463    }
3464    for v in &node.value_reference_schemas {
3465    }
3466}
3467impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CsrSeedProtobuf {
3468    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3469        visitor.visit_csr_seed_protobuf(self)
3470    }
3471}
3472#[allow(clippy::needless_pass_by_ref_mut)]
3473pub fn visit_csr_seed_protobuf<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CsrSeedProtobuf)
3474where
3475    V: Visit<'ast, T, > + ?Sized,
3476{
3477    if let Some(v) = &node.key {
3478        visitor.visit_csr_seed_protobuf_schema(v);
3479    }
3480    visitor.visit_csr_seed_protobuf_schema(&node.value);
3481}
3482impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CsrSeedProtobufSchema {
3483    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3484        visitor.visit_csr_seed_protobuf_schema(self)
3485    }
3486}
3487#[allow(clippy::needless_pass_by_ref_mut)]
3488pub fn visit_csr_seed_protobuf_schema<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CsrSeedProtobufSchema)
3489where
3490    V: Visit<'ast, T, > + ?Sized,
3491{
3492}
3493impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CsvColumns {
3494    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3495        visitor.visit_csv_columns(self)
3496    }
3497}
3498#[allow(clippy::needless_pass_by_ref_mut)]
3499pub fn visit_csv_columns<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CsvColumns)
3500where
3501    V: Visit<'ast, T, > + ?Sized,
3502{
3503    match node {
3504        CsvColumns::Count {
3505            0: binding0,
3506        } => {
3507        }
3508        CsvColumns::Header {
3509            names: binding0,
3510        } => {
3511            for v in binding0 {
3512                visitor.visit_ident(v);
3513            }
3514        }
3515    }
3516}
3517impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Cte<T> {
3518    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3519        visitor.visit_cte(self)
3520    }
3521}
3522#[allow(clippy::needless_pass_by_ref_mut)]
3523pub fn visit_cte<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Cte<T>)
3524where
3525    V: Visit<'ast, T, > + ?Sized,
3526{
3527    visitor.visit_table_alias(&node.alias);
3528    visitor.visit_cte_id(&node.id);
3529    visitor.visit_query(&node.query);
3530}
3531impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CteBlock<T> {
3532    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3533        visitor.visit_cte_block(self)
3534    }
3535}
3536#[allow(clippy::needless_pass_by_ref_mut)]
3537pub fn visit_cte_block<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CteBlock<T>)
3538where
3539    V: Visit<'ast, T, > + ?Sized,
3540{
3541    match node {
3542        CteBlock::Simple {
3543            0: binding0,
3544        } => {
3545            for v in binding0 {
3546                visitor.visit_cte(v);
3547            }
3548        }
3549        CteBlock::MutuallyRecursive {
3550            0: binding0,
3551        } => {
3552            visitor.visit_mut_rec_block(binding0);
3553        }
3554    }
3555}
3556impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CteMutRec<T> {
3557    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3558        visitor.visit_cte_mut_rec(self)
3559    }
3560}
3561#[allow(clippy::needless_pass_by_ref_mut)]
3562pub fn visit_cte_mut_rec<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CteMutRec<T>)
3563where
3564    V: Visit<'ast, T, > + ?Sized,
3565{
3566    visitor.visit_ident(&node.name);
3567    for v in &node.columns {
3568        visitor.visit_cte_mut_rec_column_def(v);
3569    }
3570    visitor.visit_cte_id(&node.id);
3571    visitor.visit_query(&node.query);
3572}
3573impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for CteMutRecColumnDef<T> {
3574    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3575        visitor.visit_cte_mut_rec_column_def(self)
3576    }
3577}
3578#[allow(clippy::needless_pass_by_ref_mut)]
3579pub fn visit_cte_mut_rec_column_def<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast CteMutRecColumnDef<T>)
3580where
3581    V: Visit<'ast, T, > + ?Sized,
3582{
3583    visitor.visit_ident(&node.name);
3584    visitor.visit_data_type(&node.data_type);
3585}
3586impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for DateTimeField {
3587    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3588        visitor.visit_date_time_field(self)
3589    }
3590}
3591#[allow(clippy::needless_pass_by_ref_mut)]
3592pub fn visit_date_time_field<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast DateTimeField)
3593where
3594    V: Visit<'ast, T, > + ?Sized,
3595{
3596    match node {
3597        DateTimeField::Millennium {
3598        } => {
3599        }
3600        DateTimeField::Century {
3601        } => {
3602        }
3603        DateTimeField::Decade {
3604        } => {
3605        }
3606        DateTimeField::Year {
3607        } => {
3608        }
3609        DateTimeField::Month {
3610        } => {
3611        }
3612        DateTimeField::Day {
3613        } => {
3614        }
3615        DateTimeField::Hour {
3616        } => {
3617        }
3618        DateTimeField::Minute {
3619        } => {
3620        }
3621        DateTimeField::Second {
3622        } => {
3623        }
3624        DateTimeField::Milliseconds {
3625        } => {
3626        }
3627        DateTimeField::Microseconds {
3628        } => {
3629        }
3630    }
3631}
3632impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for DeallocateStatement {
3633    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3634        visitor.visit_deallocate_statement(self)
3635    }
3636}
3637#[allow(clippy::needless_pass_by_ref_mut)]
3638pub fn visit_deallocate_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast DeallocateStatement)
3639where
3640    V: Visit<'ast, T, > + ?Sized,
3641{
3642    if let Some(v) = &node.name {
3643        visitor.visit_ident(v);
3644    }
3645}
3646impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for DeclareStatement<T> {
3647    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3648        visitor.visit_declare_statement(self)
3649    }
3650}
3651#[allow(clippy::needless_pass_by_ref_mut)]
3652pub fn visit_declare_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast DeclareStatement<T>)
3653where
3654    V: Visit<'ast, T, > + ?Sized,
3655{
3656    visitor.visit_ident(&node.name);
3657    visitor.visit_nested_statement(&*&node.stmt);
3658}
3659impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for DeferredItemName<T> {
3660    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3661        visitor.visit_deferred_item_name(self)
3662    }
3663}
3664#[allow(clippy::needless_pass_by_ref_mut)]
3665pub fn visit_deferred_item_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast DeferredItemName<T>)
3666where
3667    V: Visit<'ast, T, > + ?Sized,
3668{
3669    match node {
3670        DeferredItemName::Named {
3671            0: binding0,
3672        } => {
3673            visitor.visit_item_name(binding0);
3674        }
3675        DeferredItemName::Deferred {
3676            0: binding0,
3677        } => {
3678            visitor.visit_unresolved_item_name(binding0);
3679        }
3680    }
3681}
3682impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for DeleteStatement<T> {
3683    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3684        visitor.visit_delete_statement(self)
3685    }
3686}
3687#[allow(clippy::needless_pass_by_ref_mut)]
3688pub fn visit_delete_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast DeleteStatement<T>)
3689where
3690    V: Visit<'ast, T, > + ?Sized,
3691{
3692    visitor.visit_item_name(&node.table_name);
3693    if let Some(v) = &node.alias {
3694        visitor.visit_table_alias(v);
3695    }
3696    for v in &node.using {
3697        visitor.visit_table_with_joins(v);
3698    }
3699    if let Some(v) = &node.selection {
3700        visitor.visit_expr(v);
3701    }
3702}
3703impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for DiscardStatement {
3704    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3705        visitor.visit_discard_statement(self)
3706    }
3707}
3708#[allow(clippy::needless_pass_by_ref_mut)]
3709pub fn visit_discard_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast DiscardStatement)
3710where
3711    V: Visit<'ast, T, > + ?Sized,
3712{
3713    visitor.visit_discard_target(&node.target);
3714}
3715impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for DiscardTarget {
3716    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3717        visitor.visit_discard_target(self)
3718    }
3719}
3720#[allow(clippy::needless_pass_by_ref_mut)]
3721pub fn visit_discard_target<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast DiscardTarget)
3722where
3723    V: Visit<'ast, T, > + ?Sized,
3724{
3725    match node {
3726        DiscardTarget::Plans {
3727        } => {
3728        }
3729        DiscardTarget::Sequences {
3730        } => {
3731        }
3732        DiscardTarget::Temp {
3733        } => {
3734        }
3735        DiscardTarget::All {
3736        } => {
3737        }
3738    }
3739}
3740impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Distinct<T> {
3741    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3742        visitor.visit_distinct(self)
3743    }
3744}
3745#[allow(clippy::needless_pass_by_ref_mut)]
3746pub fn visit_distinct<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Distinct<T>)
3747where
3748    V: Visit<'ast, T, > + ?Sized,
3749{
3750    match node {
3751        Distinct::EntireRow {
3752        } => {
3753        }
3754        Distinct::On {
3755            0: binding0,
3756        } => {
3757            for v in binding0 {
3758                visitor.visit_expr(v);
3759            }
3760        }
3761    }
3762}
3763impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for DocOnIdentifier<T> {
3764    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3765        visitor.visit_doc_on_identifier(self)
3766    }
3767}
3768#[allow(clippy::needless_pass_by_ref_mut)]
3769pub fn visit_doc_on_identifier<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast DocOnIdentifier<T>)
3770where
3771    V: Visit<'ast, T, > + ?Sized,
3772{
3773    match node {
3774        DocOnIdentifier::Column {
3775            0: binding0,
3776        } => {
3777            visitor.visit_column_name(binding0);
3778        }
3779        DocOnIdentifier::Type {
3780            0: binding0,
3781        } => {
3782            visitor.visit_item_name(binding0);
3783        }
3784    }
3785}
3786impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for DocOnSchema {
3787    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3788        visitor.visit_doc_on_schema(self)
3789    }
3790}
3791#[allow(clippy::needless_pass_by_ref_mut)]
3792pub fn visit_doc_on_schema<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast DocOnSchema)
3793where
3794    V: Visit<'ast, T, > + ?Sized,
3795{
3796    match node {
3797        DocOnSchema::KeyOnly {
3798        } => {
3799        }
3800        DocOnSchema::ValueOnly {
3801        } => {
3802        }
3803        DocOnSchema::All {
3804        } => {
3805        }
3806    }
3807}
3808impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for DropObjectsStatement {
3809    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3810        visitor.visit_drop_objects_statement(self)
3811    }
3812}
3813#[allow(clippy::needless_pass_by_ref_mut)]
3814pub fn visit_drop_objects_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast DropObjectsStatement)
3815where
3816    V: Visit<'ast, T, > + ?Sized,
3817{
3818    visitor.visit_object_type(&node.object_type);
3819    for v in &node.names {
3820        visitor.visit_unresolved_object_name(v);
3821    }
3822}
3823impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for DropOwnedStatement<T> {
3824    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3825        visitor.visit_drop_owned_statement(self)
3826    }
3827}
3828#[allow(clippy::needless_pass_by_ref_mut)]
3829pub fn visit_drop_owned_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast DropOwnedStatement<T>)
3830where
3831    V: Visit<'ast, T, > + ?Sized,
3832{
3833    for v in &node.role_names {
3834        visitor.visit_role_name(v);
3835    }
3836    if let Some(v) = &node.cascade {
3837    }
3838}
3839impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExecuteStatement<T> {
3840    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3841        visitor.visit_execute_statement(self)
3842    }
3843}
3844#[allow(clippy::needless_pass_by_ref_mut)]
3845pub fn visit_execute_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExecuteStatement<T>)
3846where
3847    V: Visit<'ast, T, > + ?Sized,
3848{
3849    visitor.visit_ident(&node.name);
3850    for v in &node.params {
3851        visitor.visit_expr(v);
3852    }
3853}
3854impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExecuteUnitTestStatement<T> {
3855    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3856        visitor.visit_execute_unit_test_statement(self)
3857    }
3858}
3859#[allow(clippy::needless_pass_by_ref_mut)]
3860pub fn visit_execute_unit_test_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExecuteUnitTestStatement<T>)
3861where
3862    V: Visit<'ast, T, > + ?Sized,
3863{
3864    visitor.visit_ident(&node.name);
3865    visitor.visit_item_name(&node.target);
3866    if let Some(v) = &node.at_time {
3867        visitor.visit_expr(v);
3868    }
3869    for v in &node.mocks {
3870        visitor.visit_mock_view_def(v);
3871    }
3872    visitor.visit_expected_result_def(&node.expected);
3873}
3874impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExpectedResultDef<T> {
3875    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3876        visitor.visit_expected_result_def(self)
3877    }
3878}
3879#[allow(clippy::needless_pass_by_ref_mut)]
3880pub fn visit_expected_result_def<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExpectedResultDef<T>)
3881where
3882    V: Visit<'ast, T, > + ?Sized,
3883{
3884    for v in &node.columns {
3885        visitor.visit_column_def(v);
3886    }
3887    visitor.visit_query(&node.query);
3888}
3889impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExplainAnalyzeClusterStatement {
3890    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3891        visitor.visit_explain_analyze_cluster_statement(self)
3892    }
3893}
3894#[allow(clippy::needless_pass_by_ref_mut)]
3895pub fn visit_explain_analyze_cluster_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExplainAnalyzeClusterStatement)
3896where
3897    V: Visit<'ast, T, > + ?Sized,
3898{
3899    visitor.visit_explain_analyze_computation_properties(&node.properties);
3900}
3901impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExplainAnalyzeComputationProperties {
3902    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3903        visitor.visit_explain_analyze_computation_properties(self)
3904    }
3905}
3906#[allow(clippy::needless_pass_by_ref_mut)]
3907pub fn visit_explain_analyze_computation_properties<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExplainAnalyzeComputationProperties)
3908where
3909    V: Visit<'ast, T, > + ?Sized,
3910{
3911    for v in &node.properties {
3912        visitor.visit_explain_analyze_computation_property(v);
3913    }
3914}
3915impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExplainAnalyzeComputationProperty {
3916    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3917        visitor.visit_explain_analyze_computation_property(self)
3918    }
3919}
3920#[allow(clippy::needless_pass_by_ref_mut)]
3921pub fn visit_explain_analyze_computation_property<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExplainAnalyzeComputationProperty)
3922where
3923    V: Visit<'ast, T, > + ?Sized,
3924{
3925    match node {
3926        ExplainAnalyzeComputationProperty::Cpu {
3927        } => {
3928        }
3929        ExplainAnalyzeComputationProperty::Memory {
3930        } => {
3931        }
3932    }
3933}
3934impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExplainAnalyzeObjectStatement<T> {
3935    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3936        visitor.visit_explain_analyze_object_statement(self)
3937    }
3938}
3939#[allow(clippy::needless_pass_by_ref_mut)]
3940pub fn visit_explain_analyze_object_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExplainAnalyzeObjectStatement<T>)
3941where
3942    V: Visit<'ast, T, > + ?Sized,
3943{
3944    visitor.visit_explain_analyze_property(&node.properties);
3945    visitor.visit_explainee(&node.explainee);
3946}
3947impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExplainAnalyzeProperty {
3948    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3949        visitor.visit_explain_analyze_property(self)
3950    }
3951}
3952#[allow(clippy::needless_pass_by_ref_mut)]
3953pub fn visit_explain_analyze_property<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExplainAnalyzeProperty)
3954where
3955    V: Visit<'ast, T, > + ?Sized,
3956{
3957    match node {
3958        ExplainAnalyzeProperty::Computation {
3959            0: binding0,
3960        } => {
3961            visitor.visit_explain_analyze_computation_properties(binding0);
3962        }
3963        ExplainAnalyzeProperty::Hints {
3964        } => {
3965        }
3966    }
3967}
3968impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExplainFormat {
3969    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3970        visitor.visit_explain_format(self)
3971    }
3972}
3973#[allow(clippy::needless_pass_by_ref_mut)]
3974pub fn visit_explain_format<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExplainFormat)
3975where
3976    V: Visit<'ast, T, > + ?Sized,
3977{
3978    match node {
3979        ExplainFormat::Text {
3980        } => {
3981        }
3982        ExplainFormat::VerboseText {
3983        } => {
3984        }
3985        ExplainFormat::Json {
3986        } => {
3987        }
3988        ExplainFormat::Dot {
3989        } => {
3990        }
3991    }
3992}
3993impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExplainPlanOption<T> {
3994    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
3995        visitor.visit_explain_plan_option(self)
3996    }
3997}
3998#[allow(clippy::needless_pass_by_ref_mut)]
3999pub fn visit_explain_plan_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExplainPlanOption<T>)
4000where
4001    V: Visit<'ast, T, > + ?Sized,
4002{
4003    visitor.visit_explain_plan_option_name(&node.name);
4004    if let Some(v) = &node.value {
4005        visitor.visit_with_option_value(v);
4006    }
4007}
4008impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExplainPlanOptionName {
4009    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4010        visitor.visit_explain_plan_option_name(self)
4011    }
4012}
4013#[allow(clippy::needless_pass_by_ref_mut)]
4014pub fn visit_explain_plan_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExplainPlanOptionName)
4015where
4016    V: Visit<'ast, T, > + ?Sized,
4017{
4018    match node {
4019        ExplainPlanOptionName::Arity {
4020        } => {
4021        }
4022        ExplainPlanOptionName::Cardinality {
4023        } => {
4024        }
4025        ExplainPlanOptionName::ColumnNames {
4026        } => {
4027        }
4028        ExplainPlanOptionName::FilterPushdown {
4029        } => {
4030        }
4031        ExplainPlanOptionName::HumanizedExpressions {
4032        } => {
4033        }
4034        ExplainPlanOptionName::JoinImplementations {
4035        } => {
4036        }
4037        ExplainPlanOptionName::Keys {
4038        } => {
4039        }
4040        ExplainPlanOptionName::LinearChains {
4041        } => {
4042        }
4043        ExplainPlanOptionName::NonNegative {
4044        } => {
4045        }
4046        ExplainPlanOptionName::NoFastPath {
4047        } => {
4048        }
4049        ExplainPlanOptionName::NoNotices {
4050        } => {
4051        }
4052        ExplainPlanOptionName::NodeIdentifiers {
4053        } => {
4054        }
4055        ExplainPlanOptionName::RawPlans {
4056        } => {
4057        }
4058        ExplainPlanOptionName::RawSyntax {
4059        } => {
4060        }
4061        ExplainPlanOptionName::Raw {
4062        } => {
4063        }
4064        ExplainPlanOptionName::Redacted {
4065        } => {
4066        }
4067        ExplainPlanOptionName::SubtreeSize {
4068        } => {
4069        }
4070        ExplainPlanOptionName::Timing {
4071        } => {
4072        }
4073        ExplainPlanOptionName::Types {
4074        } => {
4075        }
4076        ExplainPlanOptionName::Equivalences {
4077        } => {
4078        }
4079        ExplainPlanOptionName::ReoptimizeImportedViews {
4080        } => {
4081        }
4082        ExplainPlanOptionName::EnableNewOuterJoinLowering {
4083        } => {
4084        }
4085        ExplainPlanOptionName::EnableEagerDeltaJoins {
4086        } => {
4087        }
4088        ExplainPlanOptionName::EnableVariadicLeftJoinLowering {
4089        } => {
4090        }
4091        ExplainPlanOptionName::EnableLetrecFixpointAnalysis {
4092        } => {
4093        }
4094        ExplainPlanOptionName::EnableJoinPrioritizeArranged {
4095        } => {
4096        }
4097        ExplainPlanOptionName::EnableProjectionPushdownAfterRelationCse {
4098        } => {
4099        }
4100    }
4101}
4102impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExplainPlanStatement<T> {
4103    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4104        visitor.visit_explain_plan_statement(self)
4105    }
4106}
4107#[allow(clippy::needless_pass_by_ref_mut)]
4108pub fn visit_explain_plan_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExplainPlanStatement<T>)
4109where
4110    V: Visit<'ast, T, > + ?Sized,
4111{
4112    if let Some(v) = &node.stage {
4113        visitor.visit_explain_stage(v);
4114    }
4115    for v in &node.with_options {
4116        visitor.visit_explain_plan_option(v);
4117    }
4118    if let Some(v) = &node.format {
4119        visitor.visit_explain_format(v);
4120    }
4121    visitor.visit_explainee(&node.explainee);
4122}
4123impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExplainPushdownStatement<T> {
4124    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4125        visitor.visit_explain_pushdown_statement(self)
4126    }
4127}
4128#[allow(clippy::needless_pass_by_ref_mut)]
4129pub fn visit_explain_pushdown_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExplainPushdownStatement<T>)
4130where
4131    V: Visit<'ast, T, > + ?Sized,
4132{
4133    visitor.visit_explainee(&node.explainee);
4134}
4135impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExplainSinkSchemaFor {
4136    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4137        visitor.visit_explain_sink_schema_for(self)
4138    }
4139}
4140#[allow(clippy::needless_pass_by_ref_mut)]
4141pub fn visit_explain_sink_schema_for<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExplainSinkSchemaFor)
4142where
4143    V: Visit<'ast, T, > + ?Sized,
4144{
4145    match node {
4146        ExplainSinkSchemaFor::Key {
4147        } => {
4148        }
4149        ExplainSinkSchemaFor::Value {
4150        } => {
4151        }
4152    }
4153}
4154impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExplainSinkSchemaStatement<T> {
4155    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4156        visitor.visit_explain_sink_schema_statement(self)
4157    }
4158}
4159#[allow(clippy::needless_pass_by_ref_mut)]
4160pub fn visit_explain_sink_schema_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExplainSinkSchemaStatement<T>)
4161where
4162    V: Visit<'ast, T, > + ?Sized,
4163{
4164    visitor.visit_explain_sink_schema_for(&node.schema_for);
4165    if let Some(v) = &node.format {
4166        visitor.visit_explain_format(v);
4167    }
4168    visitor.visit_create_sink_statement(&node.statement);
4169}
4170impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExplainStage {
4171    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4172        visitor.visit_explain_stage(self)
4173    }
4174}
4175#[allow(clippy::needless_pass_by_ref_mut)]
4176pub fn visit_explain_stage<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExplainStage)
4177where
4178    V: Visit<'ast, T, > + ?Sized,
4179{
4180    match node {
4181        ExplainStage::RawPlan {
4182        } => {
4183        }
4184        ExplainStage::DecorrelatedPlan {
4185        } => {
4186        }
4187        ExplainStage::LocalPlan {
4188        } => {
4189        }
4190        ExplainStage::GlobalPlan {
4191        } => {
4192        }
4193        ExplainStage::PhysicalPlan {
4194        } => {
4195        }
4196        ExplainStage::Trace {
4197        } => {
4198        }
4199        ExplainStage::PlanInsights {
4200        } => {
4201        }
4202    }
4203}
4204impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExplainTimestampStatement<T> {
4205    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4206        visitor.visit_explain_timestamp_statement(self)
4207    }
4208}
4209#[allow(clippy::needless_pass_by_ref_mut)]
4210pub fn visit_explain_timestamp_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExplainTimestampStatement<T>)
4211where
4212    V: Visit<'ast, T, > + ?Sized,
4213{
4214    if let Some(v) = &node.format {
4215        visitor.visit_explain_format(v);
4216    }
4217    visitor.visit_select_statement(&node.select);
4218}
4219impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Explainee<T> {
4220    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4221        visitor.visit_explainee(self)
4222    }
4223}
4224#[allow(clippy::needless_pass_by_ref_mut)]
4225pub fn visit_explainee<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Explainee<T>)
4226where
4227    V: Visit<'ast, T, > + ?Sized,
4228{
4229    match node {
4230        Explainee::View {
4231            0: binding0,
4232        } => {
4233            visitor.visit_item_name(binding0);
4234        }
4235        Explainee::MaterializedView {
4236            0: binding0,
4237        } => {
4238            visitor.visit_item_name(binding0);
4239        }
4240        Explainee::Index {
4241            0: binding0,
4242        } => {
4243            visitor.visit_item_name(binding0);
4244        }
4245        Explainee::ReplanView {
4246            0: binding0,
4247        } => {
4248            visitor.visit_item_name(binding0);
4249        }
4250        Explainee::ReplanMaterializedView {
4251            0: binding0,
4252        } => {
4253            visitor.visit_item_name(binding0);
4254        }
4255        Explainee::ReplanIndex {
4256            0: binding0,
4257        } => {
4258            visitor.visit_item_name(binding0);
4259        }
4260        Explainee::Select {
4261            0: binding0,
4262            1: binding1,
4263        } => {
4264            visitor.visit_select_statement(&*binding0);
4265        }
4266        Explainee::CreateView {
4267            0: binding0,
4268            1: binding1,
4269        } => {
4270            visitor.visit_create_view_statement(&*binding0);
4271        }
4272        Explainee::CreateMaterializedView {
4273            0: binding0,
4274            1: binding1,
4275        } => {
4276            visitor.visit_create_materialized_view_statement(&*binding0);
4277        }
4278        Explainee::CreateIndex {
4279            0: binding0,
4280            1: binding1,
4281        } => {
4282            visitor.visit_create_index_statement(&*binding0);
4283        }
4284        Explainee::Subscribe {
4285            0: binding0,
4286            1: binding1,
4287        } => {
4288            visitor.visit_subscribe_statement(&*binding0);
4289        }
4290    }
4291}
4292impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Expr<T> {
4293    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4294        visitor.visit_expr(self)
4295    }
4296}
4297#[allow(clippy::needless_pass_by_ref_mut)]
4298pub fn visit_expr<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Expr<T>)
4299where
4300    V: Visit<'ast, T, > + ?Sized,
4301{
4302    match node {
4303        Expr::Identifier {
4304            0: binding0,
4305        } => {
4306            for v in binding0 {
4307                visitor.visit_ident(v);
4308            }
4309        }
4310        Expr::QualifiedWildcard {
4311            0: binding0,
4312        } => {
4313            for v in binding0 {
4314                visitor.visit_ident(v);
4315            }
4316        }
4317        Expr::FieldAccess {
4318            expr: binding0,
4319            field: binding1,
4320        } => {
4321            visitor.visit_expr(&*binding0);
4322            visitor.visit_ident(binding1);
4323        }
4324        Expr::WildcardAccess {
4325            0: binding0,
4326        } => {
4327            visitor.visit_expr(&*binding0);
4328        }
4329        Expr::Parameter {
4330            0: binding0,
4331        } => {
4332        }
4333        Expr::Not {
4334            expr: binding0,
4335        } => {
4336            visitor.visit_expr(&*binding0);
4337        }
4338        Expr::And {
4339            left: binding0,
4340            right: binding1,
4341        } => {
4342            visitor.visit_expr(&*binding0);
4343            visitor.visit_expr(&*binding1);
4344        }
4345        Expr::Or {
4346            left: binding0,
4347            right: binding1,
4348        } => {
4349            visitor.visit_expr(&*binding0);
4350            visitor.visit_expr(&*binding1);
4351        }
4352        Expr::IsExpr {
4353            expr: binding0,
4354            construct: binding1,
4355            negated: binding2,
4356        } => {
4357            visitor.visit_expr(&*binding0);
4358            visitor.visit_is_expr_construct(binding1);
4359        }
4360        Expr::InList {
4361            expr: binding0,
4362            list: binding1,
4363            negated: binding2,
4364        } => {
4365            visitor.visit_expr(&*binding0);
4366            for v in binding1 {
4367                visitor.visit_expr(v);
4368            }
4369        }
4370        Expr::InSubquery {
4371            expr: binding0,
4372            subquery: binding1,
4373            negated: binding2,
4374        } => {
4375            visitor.visit_expr(&*binding0);
4376            visitor.visit_query(&*binding1);
4377        }
4378        Expr::Like {
4379            expr: binding0,
4380            pattern: binding1,
4381            escape: binding2,
4382            case_insensitive: binding3,
4383            negated: binding4,
4384        } => {
4385            visitor.visit_expr(&*binding0);
4386            visitor.visit_expr(&*binding1);
4387            if let Some(v) = binding2 {
4388                visitor.visit_expr(&*v);
4389            }
4390        }
4391        Expr::Between {
4392            expr: binding0,
4393            negated: binding1,
4394            low: binding2,
4395            high: binding3,
4396        } => {
4397            visitor.visit_expr(&*binding0);
4398            visitor.visit_expr(&*binding2);
4399            visitor.visit_expr(&*binding3);
4400        }
4401        Expr::Op {
4402            op: binding0,
4403            expr1: binding1,
4404            expr2: binding2,
4405        } => {
4406            visitor.visit_op(binding0);
4407            visitor.visit_expr(&*binding1);
4408            if let Some(v) = binding2 {
4409                visitor.visit_expr(&*v);
4410            }
4411        }
4412        Expr::Cast {
4413            expr: binding0,
4414            data_type: binding1,
4415        } => {
4416            visitor.visit_expr(&*binding0);
4417            visitor.visit_data_type(binding1);
4418        }
4419        Expr::Collate {
4420            expr: binding0,
4421            collation: binding1,
4422        } => {
4423            visitor.visit_expr(&*binding0);
4424            visitor.visit_unresolved_item_name(binding1);
4425        }
4426        Expr::HomogenizingFunction {
4427            function: binding0,
4428            exprs: binding1,
4429        } => {
4430            visitor.visit_homogenizing_function(binding0);
4431            for v in binding1 {
4432                visitor.visit_expr(v);
4433            }
4434        }
4435        Expr::NullIf {
4436            l_expr: binding0,
4437            r_expr: binding1,
4438        } => {
4439            visitor.visit_expr(&*binding0);
4440            visitor.visit_expr(&*binding1);
4441        }
4442        Expr::Nested {
4443            0: binding0,
4444        } => {
4445            visitor.visit_expr(&*binding0);
4446        }
4447        Expr::Row {
4448            exprs: binding0,
4449        } => {
4450            for v in binding0 {
4451                visitor.visit_expr(v);
4452            }
4453        }
4454        Expr::Value {
4455            0: binding0,
4456        } => {
4457            visitor.visit_value(binding0);
4458        }
4459        Expr::Function {
4460            0: binding0,
4461        } => {
4462            visitor.visit_function(binding0);
4463        }
4464        Expr::Case {
4465            operand: binding0,
4466            conditions: binding1,
4467            results: binding2,
4468            else_result: binding3,
4469        } => {
4470            if let Some(v) = binding0 {
4471                visitor.visit_expr(&*v);
4472            }
4473            for v in binding1 {
4474                visitor.visit_expr(v);
4475            }
4476            for v in binding2 {
4477                visitor.visit_expr(v);
4478            }
4479            if let Some(v) = binding3 {
4480                visitor.visit_expr(&*v);
4481            }
4482        }
4483        Expr::Exists {
4484            0: binding0,
4485        } => {
4486            visitor.visit_query(&*binding0);
4487        }
4488        Expr::Subquery {
4489            0: binding0,
4490        } => {
4491            visitor.visit_query(&*binding0);
4492        }
4493        Expr::AnySubquery {
4494            left: binding0,
4495            op: binding1,
4496            right: binding2,
4497        } => {
4498            visitor.visit_expr(&*binding0);
4499            visitor.visit_op(binding1);
4500            visitor.visit_query(&*binding2);
4501        }
4502        Expr::AnyExpr {
4503            left: binding0,
4504            op: binding1,
4505            right: binding2,
4506        } => {
4507            visitor.visit_expr(&*binding0);
4508            visitor.visit_op(binding1);
4509            visitor.visit_expr(&*binding2);
4510        }
4511        Expr::AllSubquery {
4512            left: binding0,
4513            op: binding1,
4514            right: binding2,
4515        } => {
4516            visitor.visit_expr(&*binding0);
4517            visitor.visit_op(binding1);
4518            visitor.visit_query(&*binding2);
4519        }
4520        Expr::AllExpr {
4521            left: binding0,
4522            op: binding1,
4523            right: binding2,
4524        } => {
4525            visitor.visit_expr(&*binding0);
4526            visitor.visit_op(binding1);
4527            visitor.visit_expr(&*binding2);
4528        }
4529        Expr::Array {
4530            0: binding0,
4531        } => {
4532            for v in binding0 {
4533                visitor.visit_expr(v);
4534            }
4535        }
4536        Expr::ArraySubquery {
4537            0: binding0,
4538        } => {
4539            visitor.visit_query(&*binding0);
4540        }
4541        Expr::List {
4542            0: binding0,
4543        } => {
4544            for v in binding0 {
4545                visitor.visit_expr(v);
4546            }
4547        }
4548        Expr::ListSubquery {
4549            0: binding0,
4550        } => {
4551            visitor.visit_query(&*binding0);
4552        }
4553        Expr::Map {
4554            0: binding0,
4555        } => {
4556            for v in binding0 {
4557                visitor.visit_map_entry(v);
4558            }
4559        }
4560        Expr::MapSubquery {
4561            0: binding0,
4562        } => {
4563            visitor.visit_query(&*binding0);
4564        }
4565        Expr::Subscript {
4566            expr: binding0,
4567            positions: binding1,
4568        } => {
4569            visitor.visit_expr(&*binding0);
4570            for v in binding1 {
4571                visitor.visit_subscript_position(v);
4572            }
4573        }
4574    }
4575}
4576impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExternalReferenceExport {
4577    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4578        visitor.visit_external_reference_export(self)
4579    }
4580}
4581#[allow(clippy::needless_pass_by_ref_mut)]
4582pub fn visit_external_reference_export<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExternalReferenceExport)
4583where
4584    V: Visit<'ast, T, > + ?Sized,
4585{
4586    visitor.visit_unresolved_item_name(&node.reference);
4587    if let Some(v) = &node.alias {
4588        visitor.visit_unresolved_item_name(v);
4589    }
4590}
4591impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ExternalReferences {
4592    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4593        visitor.visit_external_references(self)
4594    }
4595}
4596#[allow(clippy::needless_pass_by_ref_mut)]
4597pub fn visit_external_references<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ExternalReferences)
4598where
4599    V: Visit<'ast, T, > + ?Sized,
4600{
4601    match node {
4602        ExternalReferences::SubsetTables {
4603            0: binding0,
4604        } => {
4605            for v in binding0 {
4606                visitor.visit_external_reference_export(v);
4607            }
4608        }
4609        ExternalReferences::SubsetSchemas {
4610            0: binding0,
4611        } => {
4612            for v in binding0 {
4613                visitor.visit_ident(v);
4614            }
4615        }
4616        ExternalReferences::All {
4617        } => {
4618        }
4619    }
4620}
4621impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for FetchDirection {
4622    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4623        visitor.visit_fetch_direction(self)
4624    }
4625}
4626#[allow(clippy::needless_pass_by_ref_mut)]
4627pub fn visit_fetch_direction<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast FetchDirection)
4628where
4629    V: Visit<'ast, T, > + ?Sized,
4630{
4631    match node {
4632        FetchDirection::ForwardAll {
4633        } => {
4634        }
4635        FetchDirection::ForwardCount {
4636            0: binding0,
4637        } => {
4638        }
4639    }
4640}
4641impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for FetchOption<T> {
4642    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4643        visitor.visit_fetch_option(self)
4644    }
4645}
4646#[allow(clippy::needless_pass_by_ref_mut)]
4647pub fn visit_fetch_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast FetchOption<T>)
4648where
4649    V: Visit<'ast, T, > + ?Sized,
4650{
4651    visitor.visit_fetch_option_name(&node.name);
4652    if let Some(v) = &node.value {
4653        visitor.visit_with_option_value(v);
4654    }
4655}
4656impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for FetchOptionName {
4657    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4658        visitor.visit_fetch_option_name(self)
4659    }
4660}
4661#[allow(clippy::needless_pass_by_ref_mut)]
4662pub fn visit_fetch_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast FetchOptionName)
4663where
4664    V: Visit<'ast, T, > + ?Sized,
4665{
4666    match node {
4667        FetchOptionName::Timeout {
4668        } => {
4669        }
4670    }
4671}
4672impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for FetchStatement<T> {
4673    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4674        visitor.visit_fetch_statement(self)
4675    }
4676}
4677#[allow(clippy::needless_pass_by_ref_mut)]
4678pub fn visit_fetch_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast FetchStatement<T>)
4679where
4680    V: Visit<'ast, T, > + ?Sized,
4681{
4682    visitor.visit_ident(&node.name);
4683    if let Some(v) = &node.count {
4684        visitor.visit_fetch_direction(v);
4685    }
4686    for v in &node.options {
4687        visitor.visit_fetch_option(v);
4688    }
4689}
4690impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Format<T> {
4691    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4692        visitor.visit_format(self)
4693    }
4694}
4695#[allow(clippy::needless_pass_by_ref_mut)]
4696pub fn visit_format<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Format<T>)
4697where
4698    V: Visit<'ast, T, > + ?Sized,
4699{
4700    match node {
4701        Format::Bytes {
4702        } => {
4703        }
4704        Format::Avro {
4705            0: binding0,
4706        } => {
4707            visitor.visit_avro_schema(binding0);
4708        }
4709        Format::Protobuf {
4710            0: binding0,
4711        } => {
4712            visitor.visit_protobuf_schema(binding0);
4713        }
4714        Format::Regex {
4715            0: binding0,
4716        } => {
4717        }
4718        Format::Csv {
4719            columns: binding0,
4720            delimiter: binding1,
4721        } => {
4722            visitor.visit_csv_columns(binding0);
4723        }
4724        Format::Json {
4725            array: binding0,
4726        } => {
4727        }
4728        Format::Text {
4729        } => {
4730        }
4731    }
4732}
4733impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for FormatSpecifier<T> {
4734    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4735        visitor.visit_format_specifier(self)
4736    }
4737}
4738#[allow(clippy::needless_pass_by_ref_mut)]
4739pub fn visit_format_specifier<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast FormatSpecifier<T>)
4740where
4741    V: Visit<'ast, T, > + ?Sized,
4742{
4743    match node {
4744        FormatSpecifier::Bare {
4745            0: binding0,
4746        } => {
4747            visitor.visit_format(binding0);
4748        }
4749        FormatSpecifier::KeyValue {
4750            key: binding0,
4751            value: binding1,
4752        } => {
4753            visitor.visit_format(binding0);
4754            visitor.visit_format(binding1);
4755        }
4756    }
4757}
4758impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Function<T> {
4759    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4760        visitor.visit_function(self)
4761    }
4762}
4763#[allow(clippy::needless_pass_by_ref_mut)]
4764pub fn visit_function<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Function<T>)
4765where
4766    V: Visit<'ast, T, > + ?Sized,
4767{
4768    visitor.visit_item_name(&node.name);
4769    visitor.visit_function_args(&node.args);
4770    if let Some(v) = &node.filter {
4771        visitor.visit_expr(&*v);
4772    }
4773    if let Some(v) = &node.over {
4774        visitor.visit_window_spec(v);
4775    }
4776}
4777impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for FunctionArgs<T> {
4778    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4779        visitor.visit_function_args(self)
4780    }
4781}
4782#[allow(clippy::needless_pass_by_ref_mut)]
4783pub fn visit_function_args<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast FunctionArgs<T>)
4784where
4785    V: Visit<'ast, T, > + ?Sized,
4786{
4787    match node {
4788        FunctionArgs::Star {
4789        } => {
4790        }
4791        FunctionArgs::Args {
4792            args: binding0,
4793            order_by: binding1,
4794        } => {
4795            for v in binding0 {
4796                visitor.visit_expr(v);
4797            }
4798            for v in binding1 {
4799                visitor.visit_order_by_expr(v);
4800            }
4801        }
4802    }
4803}
4804impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for GrantPrivilegesStatement<T> {
4805    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4806        visitor.visit_grant_privileges_statement(self)
4807    }
4808}
4809#[allow(clippy::needless_pass_by_ref_mut)]
4810pub fn visit_grant_privileges_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast GrantPrivilegesStatement<T>)
4811where
4812    V: Visit<'ast, T, > + ?Sized,
4813{
4814    visitor.visit_privilege_specification(&node.privileges);
4815    visitor.visit_grant_target_specification(&node.target);
4816    for v in &node.roles {
4817        visitor.visit_role_name(v);
4818    }
4819}
4820impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for GrantRoleStatement<T> {
4821    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4822        visitor.visit_grant_role_statement(self)
4823    }
4824}
4825#[allow(clippy::needless_pass_by_ref_mut)]
4826pub fn visit_grant_role_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast GrantRoleStatement<T>)
4827where
4828    V: Visit<'ast, T, > + ?Sized,
4829{
4830    for v in &node.role_names {
4831        visitor.visit_role_name(v);
4832    }
4833    for v in &node.member_names {
4834        visitor.visit_role_name(v);
4835    }
4836}
4837impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for GrantTargetAllSpecification<T> {
4838    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4839        visitor.visit_grant_target_all_specification(self)
4840    }
4841}
4842#[allow(clippy::needless_pass_by_ref_mut)]
4843pub fn visit_grant_target_all_specification<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast GrantTargetAllSpecification<T>)
4844where
4845    V: Visit<'ast, T, > + ?Sized,
4846{
4847    match node {
4848        GrantTargetAllSpecification::All {
4849        } => {
4850        }
4851        GrantTargetAllSpecification::AllDatabases {
4852            databases: binding0,
4853        } => {
4854            for v in binding0 {
4855                visitor.visit_database_name(v);
4856            }
4857        }
4858        GrantTargetAllSpecification::AllSchemas {
4859            schemas: binding0,
4860        } => {
4861            for v in binding0 {
4862                visitor.visit_schema_name(v);
4863            }
4864        }
4865    }
4866}
4867impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for GrantTargetSpecification<T> {
4868    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4869        visitor.visit_grant_target_specification(self)
4870    }
4871}
4872#[allow(clippy::needless_pass_by_ref_mut)]
4873pub fn visit_grant_target_specification<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast GrantTargetSpecification<T>)
4874where
4875    V: Visit<'ast, T, > + ?Sized,
4876{
4877    match node {
4878        GrantTargetSpecification::Object {
4879            object_type: binding0,
4880            object_spec_inner: binding1,
4881        } => {
4882            visitor.visit_object_type(binding0);
4883            visitor.visit_grant_target_specification_inner(binding1);
4884        }
4885        GrantTargetSpecification::System {
4886        } => {
4887        }
4888    }
4889}
4890impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for GrantTargetSpecificationInner<T> {
4891    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4892        visitor.visit_grant_target_specification_inner(self)
4893    }
4894}
4895#[allow(clippy::needless_pass_by_ref_mut)]
4896pub fn visit_grant_target_specification_inner<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast GrantTargetSpecificationInner<T>)
4897where
4898    V: Visit<'ast, T, > + ?Sized,
4899{
4900    match node {
4901        GrantTargetSpecificationInner::All {
4902            0: binding0,
4903        } => {
4904            visitor.visit_grant_target_all_specification(binding0);
4905        }
4906        GrantTargetSpecificationInner::Objects {
4907            names: binding0,
4908        } => {
4909            for v in binding0 {
4910                visitor.visit_object_name(v);
4911            }
4912        }
4913    }
4914}
4915impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for HomogenizingFunction {
4916    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4917        visitor.visit_homogenizing_function(self)
4918    }
4919}
4920#[allow(clippy::needless_pass_by_ref_mut)]
4921pub fn visit_homogenizing_function<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast HomogenizingFunction)
4922where
4923    V: Visit<'ast, T, > + ?Sized,
4924{
4925    match node {
4926        HomogenizingFunction::Coalesce {
4927        } => {
4928        }
4929        HomogenizingFunction::Greatest {
4930        } => {
4931        }
4932        HomogenizingFunction::Least {
4933        } => {
4934        }
4935    }
4936}
4937impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for IcebergSinkConfigOption<T> {
4938    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4939        visitor.visit_iceberg_sink_config_option(self)
4940    }
4941}
4942#[allow(clippy::needless_pass_by_ref_mut)]
4943pub fn visit_iceberg_sink_config_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast IcebergSinkConfigOption<T>)
4944where
4945    V: Visit<'ast, T, > + ?Sized,
4946{
4947    visitor.visit_iceberg_sink_config_option_name(&node.name);
4948    if let Some(v) = &node.value {
4949        visitor.visit_with_option_value(v);
4950    }
4951}
4952impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for IcebergSinkConfigOptionName {
4953    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4954        visitor.visit_iceberg_sink_config_option_name(self)
4955    }
4956}
4957#[allow(clippy::needless_pass_by_ref_mut)]
4958pub fn visit_iceberg_sink_config_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast IcebergSinkConfigOptionName)
4959where
4960    V: Visit<'ast, T, > + ?Sized,
4961{
4962    match node {
4963        IcebergSinkConfigOptionName::Namespace {
4964        } => {
4965        }
4966        IcebergSinkConfigOptionName::Table {
4967        } => {
4968        }
4969    }
4970}
4971impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for IcebergSinkMode {
4972    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4973        visitor.visit_iceberg_sink_mode(self)
4974    }
4975}
4976#[allow(clippy::needless_pass_by_ref_mut)]
4977pub fn visit_iceberg_sink_mode<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast IcebergSinkMode)
4978where
4979    V: Visit<'ast, T, > + ?Sized,
4980{
4981    match node {
4982        IcebergSinkMode::Upsert {
4983        } => {
4984        }
4985        IcebergSinkMode::Append {
4986        } => {
4987        }
4988    }
4989}
4990impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Ident {
4991    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
4992        visitor.visit_ident(self)
4993    }
4994}
4995#[allow(clippy::needless_pass_by_ref_mut)]
4996pub fn visit_ident<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Ident)
4997where
4998    V: Visit<'ast, T, > + ?Sized,
4999{
5000}
5001impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for IdentError {
5002    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5003        visitor.visit_ident_error(self)
5004    }
5005}
5006#[allow(clippy::needless_pass_by_ref_mut)]
5007pub fn visit_ident_error<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast IdentError)
5008where
5009    V: Visit<'ast, T, > + ?Sized,
5010{
5011    match node {
5012        IdentError::TooLong {
5013            0: binding0,
5014        } => {
5015        }
5016        IdentError::FailedToGenerate {
5017            prefix: binding0,
5018            suffix: binding1,
5019            attempts: binding2,
5020        } => {
5021        }
5022        IdentError::Invalid {
5023            0: binding0,
5024        } => {
5025        }
5026    }
5027}
5028impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for IfExistsBehavior {
5029    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5030        visitor.visit_if_exists_behavior(self)
5031    }
5032}
5033#[allow(clippy::needless_pass_by_ref_mut)]
5034pub fn visit_if_exists_behavior<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast IfExistsBehavior)
5035where
5036    V: Visit<'ast, T, > + ?Sized,
5037{
5038    match node {
5039        IfExistsBehavior::Error {
5040        } => {
5041        }
5042        IfExistsBehavior::Skip {
5043        } => {
5044        }
5045        IfExistsBehavior::Replace {
5046        } => {
5047        }
5048    }
5049}
5050impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for IndexOption<T> {
5051    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5052        visitor.visit_index_option(self)
5053    }
5054}
5055#[allow(clippy::needless_pass_by_ref_mut)]
5056pub fn visit_index_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast IndexOption<T>)
5057where
5058    V: Visit<'ast, T, > + ?Sized,
5059{
5060    visitor.visit_index_option_name(&node.name);
5061    if let Some(v) = &node.value {
5062        visitor.visit_with_option_value(v);
5063    }
5064}
5065impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for IndexOptionName {
5066    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5067        visitor.visit_index_option_name(self)
5068    }
5069}
5070#[allow(clippy::needless_pass_by_ref_mut)]
5071pub fn visit_index_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast IndexOptionName)
5072where
5073    V: Visit<'ast, T, > + ?Sized,
5074{
5075    match node {
5076        IndexOptionName::RetainHistory {
5077        } => {
5078        }
5079    }
5080}
5081impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for InsertSource<T> {
5082    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5083        visitor.visit_insert_source(self)
5084    }
5085}
5086#[allow(clippy::needless_pass_by_ref_mut)]
5087pub fn visit_insert_source<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast InsertSource<T>)
5088where
5089    V: Visit<'ast, T, > + ?Sized,
5090{
5091    match node {
5092        InsertSource::Query {
5093            0: binding0,
5094        } => {
5095            visitor.visit_query(binding0);
5096        }
5097        InsertSource::DefaultValues {
5098        } => {
5099        }
5100    }
5101}
5102impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for InsertStatement<T> {
5103    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5104        visitor.visit_insert_statement(self)
5105    }
5106}
5107#[allow(clippy::needless_pass_by_ref_mut)]
5108pub fn visit_insert_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast InsertStatement<T>)
5109where
5110    V: Visit<'ast, T, > + ?Sized,
5111{
5112    visitor.visit_item_name(&node.table_name);
5113    for v in &node.columns {
5114        visitor.visit_ident(v);
5115    }
5116    visitor.visit_insert_source(&node.source);
5117    for v in &node.returning {
5118        visitor.visit_select_item(v);
5119    }
5120}
5121impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for InspectShardStatement {
5122    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5123        visitor.visit_inspect_shard_statement(self)
5124    }
5125}
5126#[allow(clippy::needless_pass_by_ref_mut)]
5127pub fn visit_inspect_shard_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast InspectShardStatement)
5128where
5129    V: Visit<'ast, T, > + ?Sized,
5130{
5131}
5132impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for IntervalValue {
5133    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5134        visitor.visit_interval_value(self)
5135    }
5136}
5137#[allow(clippy::needless_pass_by_ref_mut)]
5138pub fn visit_interval_value<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast IntervalValue)
5139where
5140    V: Visit<'ast, T, > + ?Sized,
5141{
5142    visitor.visit_date_time_field(&node.precision_high);
5143    visitor.visit_date_time_field(&node.precision_low);
5144    if let Some(v) = &node.fsec_max_precision {
5145    }
5146}
5147impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for IsExprConstruct<T> {
5148    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5149        visitor.visit_is_expr_construct(self)
5150    }
5151}
5152#[allow(clippy::needless_pass_by_ref_mut)]
5153pub fn visit_is_expr_construct<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast IsExprConstruct<T>)
5154where
5155    V: Visit<'ast, T, > + ?Sized,
5156{
5157    match node {
5158        IsExprConstruct::Null {
5159        } => {
5160        }
5161        IsExprConstruct::True {
5162        } => {
5163        }
5164        IsExprConstruct::False {
5165        } => {
5166        }
5167        IsExprConstruct::Unknown {
5168        } => {
5169        }
5170        IsExprConstruct::DistinctFrom {
5171            0: binding0,
5172        } => {
5173            visitor.visit_expr(&*binding0);
5174        }
5175    }
5176}
5177impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Join<T> {
5178    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5179        visitor.visit_join(self)
5180    }
5181}
5182#[allow(clippy::needless_pass_by_ref_mut)]
5183pub fn visit_join<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Join<T>)
5184where
5185    V: Visit<'ast, T, > + ?Sized,
5186{
5187    visitor.visit_table_factor(&node.relation);
5188    visitor.visit_join_operator(&node.join_operator);
5189}
5190impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for JoinConstraint<T> {
5191    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5192        visitor.visit_join_constraint(self)
5193    }
5194}
5195#[allow(clippy::needless_pass_by_ref_mut)]
5196pub fn visit_join_constraint<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast JoinConstraint<T>)
5197where
5198    V: Visit<'ast, T, > + ?Sized,
5199{
5200    match node {
5201        JoinConstraint::On {
5202            0: binding0,
5203        } => {
5204            visitor.visit_expr(binding0);
5205        }
5206        JoinConstraint::Using {
5207            columns: binding0,
5208            alias: binding1,
5209        } => {
5210            for v in binding0 {
5211                visitor.visit_ident(v);
5212            }
5213            if let Some(v) = binding1 {
5214                visitor.visit_ident(v);
5215            }
5216        }
5217        JoinConstraint::Natural {
5218        } => {
5219        }
5220    }
5221}
5222impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for JoinOperator<T> {
5223    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5224        visitor.visit_join_operator(self)
5225    }
5226}
5227#[allow(clippy::needless_pass_by_ref_mut)]
5228pub fn visit_join_operator<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast JoinOperator<T>)
5229where
5230    V: Visit<'ast, T, > + ?Sized,
5231{
5232    match node {
5233        JoinOperator::Inner {
5234            0: binding0,
5235        } => {
5236            visitor.visit_join_constraint(binding0);
5237        }
5238        JoinOperator::LeftOuter {
5239            0: binding0,
5240        } => {
5241            visitor.visit_join_constraint(binding0);
5242        }
5243        JoinOperator::RightOuter {
5244            0: binding0,
5245        } => {
5246            visitor.visit_join_constraint(binding0);
5247        }
5248        JoinOperator::FullOuter {
5249            0: binding0,
5250        } => {
5251            visitor.visit_join_constraint(binding0);
5252        }
5253        JoinOperator::CrossJoin {
5254        } => {
5255        }
5256    }
5257}
5258impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for KafkaBroker<T> {
5259    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5260        visitor.visit_kafka_broker(self)
5261    }
5262}
5263#[allow(clippy::needless_pass_by_ref_mut)]
5264pub fn visit_kafka_broker<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast KafkaBroker<T>)
5265where
5266    V: Visit<'ast, T, > + ?Sized,
5267{
5268    visitor.visit_kafka_broker_tunnel(&node.tunnel);
5269}
5270impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for KafkaBrokerAwsPrivatelink<T> {
5271    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5272        visitor.visit_kafka_broker_aws_privatelink(self)
5273    }
5274}
5275#[allow(clippy::needless_pass_by_ref_mut)]
5276pub fn visit_kafka_broker_aws_privatelink<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast KafkaBrokerAwsPrivatelink<T>)
5277where
5278    V: Visit<'ast, T, > + ?Sized,
5279{
5280    visitor.visit_item_name(&node.connection);
5281    for v in &node.options {
5282        visitor.visit_kafka_broker_aws_privatelink_option(v);
5283    }
5284}
5285impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for KafkaBrokerAwsPrivatelinkOption<T> {
5286    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5287        visitor.visit_kafka_broker_aws_privatelink_option(self)
5288    }
5289}
5290#[allow(clippy::needless_pass_by_ref_mut)]
5291pub fn visit_kafka_broker_aws_privatelink_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast KafkaBrokerAwsPrivatelinkOption<T>)
5292where
5293    V: Visit<'ast, T, > + ?Sized,
5294{
5295    visitor.visit_kafka_broker_aws_privatelink_option_name(&node.name);
5296    if let Some(v) = &node.value {
5297        visitor.visit_with_option_value(v);
5298    }
5299}
5300impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for KafkaBrokerAwsPrivatelinkOptionName {
5301    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5302        visitor.visit_kafka_broker_aws_privatelink_option_name(self)
5303    }
5304}
5305#[allow(clippy::needless_pass_by_ref_mut)]
5306pub fn visit_kafka_broker_aws_privatelink_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast KafkaBrokerAwsPrivatelinkOptionName)
5307where
5308    V: Visit<'ast, T, > + ?Sized,
5309{
5310    match node {
5311        KafkaBrokerAwsPrivatelinkOptionName::AvailabilityZone {
5312        } => {
5313        }
5314        KafkaBrokerAwsPrivatelinkOptionName::Port {
5315        } => {
5316        }
5317    }
5318}
5319impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for KafkaBrokerTunnel<T> {
5320    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5321        visitor.visit_kafka_broker_tunnel(self)
5322    }
5323}
5324#[allow(clippy::needless_pass_by_ref_mut)]
5325pub fn visit_kafka_broker_tunnel<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast KafkaBrokerTunnel<T>)
5326where
5327    V: Visit<'ast, T, > + ?Sized,
5328{
5329    match node {
5330        KafkaBrokerTunnel::Direct {
5331        } => {
5332        }
5333        KafkaBrokerTunnel::AwsPrivatelink {
5334            0: binding0,
5335        } => {
5336            visitor.visit_kafka_broker_aws_privatelink(binding0);
5337        }
5338        KafkaBrokerTunnel::SshTunnel {
5339            0: binding0,
5340        } => {
5341            visitor.visit_item_name(binding0);
5342        }
5343    }
5344}
5345impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for KafkaMatchingBrokerRule<T> {
5346    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5347        visitor.visit_kafka_matching_broker_rule(self)
5348    }
5349}
5350#[allow(clippy::needless_pass_by_ref_mut)]
5351pub fn visit_kafka_matching_broker_rule<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast KafkaMatchingBrokerRule<T>)
5352where
5353    V: Visit<'ast, T, > + ?Sized,
5354{
5355    visitor.visit_connection_rule_pattern(&node.pattern);
5356    visitor.visit_kafka_broker_aws_privatelink(&node.tunnel);
5357}
5358impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for KafkaSinkConfigOption<T> {
5359    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5360        visitor.visit_kafka_sink_config_option(self)
5361    }
5362}
5363#[allow(clippy::needless_pass_by_ref_mut)]
5364pub fn visit_kafka_sink_config_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast KafkaSinkConfigOption<T>)
5365where
5366    V: Visit<'ast, T, > + ?Sized,
5367{
5368    visitor.visit_kafka_sink_config_option_name(&node.name);
5369    if let Some(v) = &node.value {
5370        visitor.visit_with_option_value(v);
5371    }
5372}
5373impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for KafkaSinkConfigOptionName {
5374    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5375        visitor.visit_kafka_sink_config_option_name(self)
5376    }
5377}
5378#[allow(clippy::needless_pass_by_ref_mut)]
5379pub fn visit_kafka_sink_config_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast KafkaSinkConfigOptionName)
5380where
5381    V: Visit<'ast, T, > + ?Sized,
5382{
5383    match node {
5384        KafkaSinkConfigOptionName::CompressionType {
5385        } => {
5386        }
5387        KafkaSinkConfigOptionName::PartitionBy {
5388        } => {
5389        }
5390        KafkaSinkConfigOptionName::ProgressGroupIdPrefix {
5391        } => {
5392        }
5393        KafkaSinkConfigOptionName::Topic {
5394        } => {
5395        }
5396        KafkaSinkConfigOptionName::TransactionalIdPrefix {
5397        } => {
5398        }
5399        KafkaSinkConfigOptionName::LegacyIds {
5400        } => {
5401        }
5402        KafkaSinkConfigOptionName::TopicConfig {
5403        } => {
5404        }
5405        KafkaSinkConfigOptionName::TopicMetadataRefreshInterval {
5406        } => {
5407        }
5408        KafkaSinkConfigOptionName::TopicPartitionCount {
5409        } => {
5410        }
5411        KafkaSinkConfigOptionName::TopicReplicationFactor {
5412        } => {
5413        }
5414    }
5415}
5416impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for KafkaSourceConfigOption<T> {
5417    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5418        visitor.visit_kafka_source_config_option(self)
5419    }
5420}
5421#[allow(clippy::needless_pass_by_ref_mut)]
5422pub fn visit_kafka_source_config_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast KafkaSourceConfigOption<T>)
5423where
5424    V: Visit<'ast, T, > + ?Sized,
5425{
5426    visitor.visit_kafka_source_config_option_name(&node.name);
5427    if let Some(v) = &node.value {
5428        visitor.visit_with_option_value(v);
5429    }
5430}
5431impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for KafkaSourceConfigOptionName {
5432    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5433        visitor.visit_kafka_source_config_option_name(self)
5434    }
5435}
5436#[allow(clippy::needless_pass_by_ref_mut)]
5437pub fn visit_kafka_source_config_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast KafkaSourceConfigOptionName)
5438where
5439    V: Visit<'ast, T, > + ?Sized,
5440{
5441    match node {
5442        KafkaSourceConfigOptionName::GroupIdPrefix {
5443        } => {
5444        }
5445        KafkaSourceConfigOptionName::Topic {
5446        } => {
5447        }
5448        KafkaSourceConfigOptionName::TopicMetadataRefreshInterval {
5449        } => {
5450        }
5451        KafkaSourceConfigOptionName::StartTimestamp {
5452        } => {
5453        }
5454        KafkaSourceConfigOptionName::StartOffset {
5455        } => {
5456        }
5457    }
5458}
5459impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for KeyConstraint {
5460    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5461        visitor.visit_key_constraint(self)
5462    }
5463}
5464#[allow(clippy::needless_pass_by_ref_mut)]
5465pub fn visit_key_constraint<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast KeyConstraint)
5466where
5467    V: Visit<'ast, T, > + ?Sized,
5468{
5469    match node {
5470        KeyConstraint::PrimaryKeyNotEnforced {
5471            columns: binding0,
5472        } => {
5473            for v in binding0 {
5474                visitor.visit_ident(v);
5475            }
5476        }
5477    }
5478}
5479impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Limit<T> {
5480    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5481        visitor.visit_limit(self)
5482    }
5483}
5484#[allow(clippy::needless_pass_by_ref_mut)]
5485pub fn visit_limit<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Limit<T>)
5486where
5487    V: Visit<'ast, T, > + ?Sized,
5488{
5489    visitor.visit_expr(&node.quantity);
5490}
5491impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for LoadGenerator {
5492    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5493        visitor.visit_load_generator(self)
5494    }
5495}
5496#[allow(clippy::needless_pass_by_ref_mut)]
5497pub fn visit_load_generator<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast LoadGenerator)
5498where
5499    V: Visit<'ast, T, > + ?Sized,
5500{
5501    match node {
5502        LoadGenerator::Clock {
5503        } => {
5504        }
5505        LoadGenerator::Counter {
5506        } => {
5507        }
5508        LoadGenerator::Marketing {
5509        } => {
5510        }
5511        LoadGenerator::Auction {
5512        } => {
5513        }
5514        LoadGenerator::Datums {
5515        } => {
5516        }
5517        LoadGenerator::Tpch {
5518        } => {
5519        }
5520        LoadGenerator::KeyValue {
5521        } => {
5522        }
5523    }
5524}
5525impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for LoadGeneratorOption<T> {
5526    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5527        visitor.visit_load_generator_option(self)
5528    }
5529}
5530#[allow(clippy::needless_pass_by_ref_mut)]
5531pub fn visit_load_generator_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast LoadGeneratorOption<T>)
5532where
5533    V: Visit<'ast, T, > + ?Sized,
5534{
5535    visitor.visit_load_generator_option_name(&node.name);
5536    if let Some(v) = &node.value {
5537        visitor.visit_with_option_value(v);
5538    }
5539}
5540impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for LoadGeneratorOptionName {
5541    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5542        visitor.visit_load_generator_option_name(self)
5543    }
5544}
5545#[allow(clippy::needless_pass_by_ref_mut)]
5546pub fn visit_load_generator_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast LoadGeneratorOptionName)
5547where
5548    V: Visit<'ast, T, > + ?Sized,
5549{
5550    match node {
5551        LoadGeneratorOptionName::ScaleFactor {
5552        } => {
5553        }
5554        LoadGeneratorOptionName::TickInterval {
5555        } => {
5556        }
5557        LoadGeneratorOptionName::AsOf {
5558        } => {
5559        }
5560        LoadGeneratorOptionName::UpTo {
5561        } => {
5562        }
5563        LoadGeneratorOptionName::MaxCardinality {
5564        } => {
5565        }
5566        LoadGeneratorOptionName::Keys {
5567        } => {
5568        }
5569        LoadGeneratorOptionName::SnapshotRounds {
5570        } => {
5571        }
5572        LoadGeneratorOptionName::TransactionalSnapshot {
5573        } => {
5574        }
5575        LoadGeneratorOptionName::ValueSize {
5576        } => {
5577        }
5578        LoadGeneratorOptionName::Seed {
5579        } => {
5580        }
5581        LoadGeneratorOptionName::Partitions {
5582        } => {
5583        }
5584        LoadGeneratorOptionName::BatchSize {
5585        } => {
5586        }
5587    }
5588}
5589impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for MapEntry<T> {
5590    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5591        visitor.visit_map_entry(self)
5592    }
5593}
5594#[allow(clippy::needless_pass_by_ref_mut)]
5595pub fn visit_map_entry<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast MapEntry<T>)
5596where
5597    V: Visit<'ast, T, > + ?Sized,
5598{
5599    visitor.visit_expr(&node.key);
5600    visitor.visit_expr(&node.value);
5601}
5602impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for MaterializedViewOption<T> {
5603    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5604        visitor.visit_materialized_view_option(self)
5605    }
5606}
5607#[allow(clippy::needless_pass_by_ref_mut)]
5608pub fn visit_materialized_view_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast MaterializedViewOption<T>)
5609where
5610    V: Visit<'ast, T, > + ?Sized,
5611{
5612    visitor.visit_materialized_view_option_name(&node.name);
5613    if let Some(v) = &node.value {
5614        visitor.visit_with_option_value(v);
5615    }
5616}
5617impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for MaterializedViewOptionName {
5618    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5619        visitor.visit_materialized_view_option_name(self)
5620    }
5621}
5622#[allow(clippy::needless_pass_by_ref_mut)]
5623pub fn visit_materialized_view_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast MaterializedViewOptionName)
5624where
5625    V: Visit<'ast, T, > + ?Sized,
5626{
5627    match node {
5628        MaterializedViewOptionName::AssertNotNull {
5629        } => {
5630        }
5631        MaterializedViewOptionName::PartitionBy {
5632        } => {
5633        }
5634        MaterializedViewOptionName::RetainHistory {
5635        } => {
5636        }
5637        MaterializedViewOptionName::Refresh {
5638        } => {
5639        }
5640    }
5641}
5642impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for MockViewDef<T> {
5643    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5644        visitor.visit_mock_view_def(self)
5645    }
5646}
5647#[allow(clippy::needless_pass_by_ref_mut)]
5648pub fn visit_mock_view_def<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast MockViewDef<T>)
5649where
5650    V: Visit<'ast, T, > + ?Sized,
5651{
5652    visitor.visit_item_name(&node.name);
5653    for v in &node.columns {
5654        visitor.visit_column_def(v);
5655    }
5656    visitor.visit_query(&node.query);
5657}
5658impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for MutRecBlock<T> {
5659    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5660        visitor.visit_mut_rec_block(self)
5661    }
5662}
5663#[allow(clippy::needless_pass_by_ref_mut)]
5664pub fn visit_mut_rec_block<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast MutRecBlock<T>)
5665where
5666    V: Visit<'ast, T, > + ?Sized,
5667{
5668    for v in &node.options {
5669        visitor.visit_mut_rec_block_option(v);
5670    }
5671    for v in &node.ctes {
5672        visitor.visit_cte_mut_rec(v);
5673    }
5674}
5675impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for MutRecBlockOption<T> {
5676    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5677        visitor.visit_mut_rec_block_option(self)
5678    }
5679}
5680#[allow(clippy::needless_pass_by_ref_mut)]
5681pub fn visit_mut_rec_block_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast MutRecBlockOption<T>)
5682where
5683    V: Visit<'ast, T, > + ?Sized,
5684{
5685    visitor.visit_mut_rec_block_option_name(&node.name);
5686    if let Some(v) = &node.value {
5687        visitor.visit_with_option_value(v);
5688    }
5689}
5690impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for MutRecBlockOptionName {
5691    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5692        visitor.visit_mut_rec_block_option_name(self)
5693    }
5694}
5695#[allow(clippy::needless_pass_by_ref_mut)]
5696pub fn visit_mut_rec_block_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast MutRecBlockOptionName)
5697where
5698    V: Visit<'ast, T, > + ?Sized,
5699{
5700    match node {
5701        MutRecBlockOptionName::RecursionLimit {
5702        } => {
5703        }
5704        MutRecBlockOptionName::ErrorAtRecursionLimit {
5705        } => {
5706        }
5707        MutRecBlockOptionName::ReturnAtRecursionLimit {
5708        } => {
5709        }
5710    }
5711}
5712impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for MySqlConfigOption<T> {
5713    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5714        visitor.visit_my_sql_config_option(self)
5715    }
5716}
5717#[allow(clippy::needless_pass_by_ref_mut)]
5718pub fn visit_my_sql_config_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast MySqlConfigOption<T>)
5719where
5720    V: Visit<'ast, T, > + ?Sized,
5721{
5722    visitor.visit_my_sql_config_option_name(&node.name);
5723    if let Some(v) = &node.value {
5724        visitor.visit_with_option_value(v);
5725    }
5726}
5727impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for MySqlConfigOptionName {
5728    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5729        visitor.visit_my_sql_config_option_name(self)
5730    }
5731}
5732#[allow(clippy::needless_pass_by_ref_mut)]
5733pub fn visit_my_sql_config_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast MySqlConfigOptionName)
5734where
5735    V: Visit<'ast, T, > + ?Sized,
5736{
5737    match node {
5738        MySqlConfigOptionName::Details {
5739        } => {
5740        }
5741        MySqlConfigOptionName::TextColumns {
5742        } => {
5743        }
5744        MySqlConfigOptionName::ExcludeColumns {
5745        } => {
5746        }
5747    }
5748}
5749impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for NamedPlan {
5750    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5751        visitor.visit_named_plan(self)
5752    }
5753}
5754#[allow(clippy::needless_pass_by_ref_mut)]
5755pub fn visit_named_plan<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast NamedPlan)
5756where
5757    V: Visit<'ast, T, > + ?Sized,
5758{
5759    match node {
5760        NamedPlan::Raw {
5761        } => {
5762        }
5763        NamedPlan::Decorrelated {
5764        } => {
5765        }
5766        NamedPlan::Local {
5767        } => {
5768        }
5769        NamedPlan::Global {
5770        } => {
5771        }
5772        NamedPlan::Physical {
5773        } => {
5774        }
5775        NamedPlan::FastPath {
5776        } => {
5777        }
5778    }
5779}
5780impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for NetworkPolicyOption<T> {
5781    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5782        visitor.visit_network_policy_option(self)
5783    }
5784}
5785#[allow(clippy::needless_pass_by_ref_mut)]
5786pub fn visit_network_policy_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast NetworkPolicyOption<T>)
5787where
5788    V: Visit<'ast, T, > + ?Sized,
5789{
5790    visitor.visit_network_policy_option_name(&node.name);
5791    if let Some(v) = &node.value {
5792        visitor.visit_with_option_value(v);
5793    }
5794}
5795impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for NetworkPolicyOptionName {
5796    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5797        visitor.visit_network_policy_option_name(self)
5798    }
5799}
5800#[allow(clippy::needless_pass_by_ref_mut)]
5801pub fn visit_network_policy_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast NetworkPolicyOptionName)
5802where
5803    V: Visit<'ast, T, > + ?Sized,
5804{
5805    match node {
5806        NetworkPolicyOptionName::Rules {
5807        } => {
5808        }
5809    }
5810}
5811impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for NetworkPolicyRuleDefinition<T> {
5812    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5813        visitor.visit_network_policy_rule_definition(self)
5814    }
5815}
5816#[allow(clippy::needless_pass_by_ref_mut)]
5817pub fn visit_network_policy_rule_definition<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast NetworkPolicyRuleDefinition<T>)
5818where
5819    V: Visit<'ast, T, > + ?Sized,
5820{
5821    visitor.visit_ident(&node.name);
5822    for v in &node.options {
5823        visitor.visit_network_policy_rule_option(v);
5824    }
5825}
5826impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for NetworkPolicyRuleOption<T> {
5827    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5828        visitor.visit_network_policy_rule_option(self)
5829    }
5830}
5831#[allow(clippy::needless_pass_by_ref_mut)]
5832pub fn visit_network_policy_rule_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast NetworkPolicyRuleOption<T>)
5833where
5834    V: Visit<'ast, T, > + ?Sized,
5835{
5836    visitor.visit_network_policy_rule_option_name(&node.name);
5837    if let Some(v) = &node.value {
5838        visitor.visit_with_option_value(v);
5839    }
5840}
5841impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for NetworkPolicyRuleOptionName {
5842    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5843        visitor.visit_network_policy_rule_option_name(self)
5844    }
5845}
5846#[allow(clippy::needless_pass_by_ref_mut)]
5847pub fn visit_network_policy_rule_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast NetworkPolicyRuleOptionName)
5848where
5849    V: Visit<'ast, T, > + ?Sized,
5850{
5851    match node {
5852        NetworkPolicyRuleOptionName::Direction {
5853        } => {
5854        }
5855        NetworkPolicyRuleOptionName::Action {
5856        } => {
5857        }
5858        NetworkPolicyRuleOptionName::Address {
5859        } => {
5860        }
5861    }
5862}
5863impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for NoticeSeverity {
5864    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5865        visitor.visit_notice_severity(self)
5866    }
5867}
5868#[allow(clippy::needless_pass_by_ref_mut)]
5869pub fn visit_notice_severity<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast NoticeSeverity)
5870where
5871    V: Visit<'ast, T, > + ?Sized,
5872{
5873    match node {
5874        NoticeSeverity::Debug {
5875        } => {
5876        }
5877        NoticeSeverity::Info {
5878        } => {
5879        }
5880        NoticeSeverity::Log {
5881        } => {
5882        }
5883        NoticeSeverity::Notice {
5884        } => {
5885        }
5886        NoticeSeverity::Warning {
5887        } => {
5888        }
5889    }
5890}
5891impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ObjectType {
5892    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5893        visitor.visit_object_type(self)
5894    }
5895}
5896#[allow(clippy::needless_pass_by_ref_mut)]
5897pub fn visit_object_type<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ObjectType)
5898where
5899    V: Visit<'ast, T, > + ?Sized,
5900{
5901    match node {
5902        ObjectType::Table {
5903        } => {
5904        }
5905        ObjectType::View {
5906        } => {
5907        }
5908        ObjectType::MaterializedView {
5909        } => {
5910        }
5911        ObjectType::Source {
5912        } => {
5913        }
5914        ObjectType::Sink {
5915        } => {
5916        }
5917        ObjectType::Index {
5918        } => {
5919        }
5920        ObjectType::Type {
5921        } => {
5922        }
5923        ObjectType::Role {
5924        } => {
5925        }
5926        ObjectType::Cluster {
5927        } => {
5928        }
5929        ObjectType::ClusterReplica {
5930        } => {
5931        }
5932        ObjectType::Secret {
5933        } => {
5934        }
5935        ObjectType::Connection {
5936        } => {
5937        }
5938        ObjectType::Database {
5939        } => {
5940        }
5941        ObjectType::Schema {
5942        } => {
5943        }
5944        ObjectType::Func {
5945        } => {
5946        }
5947        ObjectType::Subsource {
5948        } => {
5949        }
5950        ObjectType::NetworkPolicy {
5951        } => {
5952        }
5953    }
5954}
5955impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Op {
5956    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5957        visitor.visit_op(self)
5958    }
5959}
5960#[allow(clippy::needless_pass_by_ref_mut)]
5961pub fn visit_op<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Op)
5962where
5963    V: Visit<'ast, T, > + ?Sized,
5964{
5965    if let Some(v) = &node.namespace {
5966        for v in v {
5967            visitor.visit_ident(v);
5968        }
5969    }
5970}
5971impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for OrderByExpr<T> {
5972    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5973        visitor.visit_order_by_expr(self)
5974    }
5975}
5976#[allow(clippy::needless_pass_by_ref_mut)]
5977pub fn visit_order_by_expr<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast OrderByExpr<T>)
5978where
5979    V: Visit<'ast, T, > + ?Sized,
5980{
5981    visitor.visit_expr(&node.expr);
5982    if let Some(v) = &node.asc {
5983    }
5984    if let Some(v) = &node.nulls_last {
5985    }
5986}
5987impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for PgConfigOption<T> {
5988    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
5989        visitor.visit_pg_config_option(self)
5990    }
5991}
5992#[allow(clippy::needless_pass_by_ref_mut)]
5993pub fn visit_pg_config_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast PgConfigOption<T>)
5994where
5995    V: Visit<'ast, T, > + ?Sized,
5996{
5997    visitor.visit_pg_config_option_name(&node.name);
5998    if let Some(v) = &node.value {
5999        visitor.visit_with_option_value(v);
6000    }
6001}
6002impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for PgConfigOptionName {
6003    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6004        visitor.visit_pg_config_option_name(self)
6005    }
6006}
6007#[allow(clippy::needless_pass_by_ref_mut)]
6008pub fn visit_pg_config_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast PgConfigOptionName)
6009where
6010    V: Visit<'ast, T, > + ?Sized,
6011{
6012    match node {
6013        PgConfigOptionName::Details {
6014        } => {
6015        }
6016        PgConfigOptionName::Publication {
6017        } => {
6018        }
6019        PgConfigOptionName::TextColumns {
6020        } => {
6021        }
6022        PgConfigOptionName::ExcludeColumns {
6023        } => {
6024        }
6025    }
6026}
6027impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for PrepareStatement<T> {
6028    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6029        visitor.visit_prepare_statement(self)
6030    }
6031}
6032#[allow(clippy::needless_pass_by_ref_mut)]
6033pub fn visit_prepare_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast PrepareStatement<T>)
6034where
6035    V: Visit<'ast, T, > + ?Sized,
6036{
6037    visitor.visit_ident(&node.name);
6038    visitor.visit_nested_statement(&*&node.stmt);
6039}
6040impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Privilege {
6041    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6042        visitor.visit_privilege(self)
6043    }
6044}
6045#[allow(clippy::needless_pass_by_ref_mut)]
6046pub fn visit_privilege<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Privilege)
6047where
6048    V: Visit<'ast, T, > + ?Sized,
6049{
6050    match node {
6051        Privilege::SELECT {
6052        } => {
6053        }
6054        Privilege::INSERT {
6055        } => {
6056        }
6057        Privilege::UPDATE {
6058        } => {
6059        }
6060        Privilege::DELETE {
6061        } => {
6062        }
6063        Privilege::USAGE {
6064        } => {
6065        }
6066        Privilege::CREATE {
6067        } => {
6068        }
6069        Privilege::CREATEROLE {
6070        } => {
6071        }
6072        Privilege::CREATEDB {
6073        } => {
6074        }
6075        Privilege::CREATECLUSTER {
6076        } => {
6077        }
6078        Privilege::CREATENETWORKPOLICY {
6079        } => {
6080        }
6081    }
6082}
6083impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for PrivilegeSpecification {
6084    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6085        visitor.visit_privilege_specification(self)
6086    }
6087}
6088#[allow(clippy::needless_pass_by_ref_mut)]
6089pub fn visit_privilege_specification<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast PrivilegeSpecification)
6090where
6091    V: Visit<'ast, T, > + ?Sized,
6092{
6093    match node {
6094        PrivilegeSpecification::All {
6095        } => {
6096        }
6097        PrivilegeSpecification::Privileges {
6098            0: binding0,
6099        } => {
6100            for v in binding0 {
6101                visitor.visit_privilege(v);
6102            }
6103        }
6104    }
6105}
6106impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ProtobufSchema<T> {
6107    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6108        visitor.visit_protobuf_schema(self)
6109    }
6110}
6111#[allow(clippy::needless_pass_by_ref_mut)]
6112pub fn visit_protobuf_schema<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ProtobufSchema<T>)
6113where
6114    V: Visit<'ast, T, > + ?Sized,
6115{
6116    match node {
6117        ProtobufSchema::Csr {
6118            csr_connection: binding0,
6119        } => {
6120            visitor.visit_csr_connection_protobuf(binding0);
6121        }
6122        ProtobufSchema::InlineSchema {
6123            message_name: binding0,
6124            schema: binding1,
6125        } => {
6126            visitor.visit_schema(binding1);
6127        }
6128    }
6129}
6130impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for QualifiedReplica {
6131    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6132        visitor.visit_qualified_replica(self)
6133    }
6134}
6135#[allow(clippy::needless_pass_by_ref_mut)]
6136pub fn visit_qualified_replica<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast QualifiedReplica)
6137where
6138    V: Visit<'ast, T, > + ?Sized,
6139{
6140    visitor.visit_ident(&node.cluster);
6141    visitor.visit_ident(&node.replica);
6142}
6143impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Query<T> {
6144    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6145        visitor.visit_query(self)
6146    }
6147}
6148#[allow(clippy::needless_pass_by_ref_mut)]
6149pub fn visit_query<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Query<T>)
6150where
6151    V: Visit<'ast, T, > + ?Sized,
6152{
6153    visitor.visit_cte_block(&node.ctes);
6154    visitor.visit_set_expr(&node.body);
6155    for v in &node.order_by {
6156        visitor.visit_order_by_expr(v);
6157    }
6158    if let Some(v) = &node.limit {
6159        visitor.visit_limit(v);
6160    }
6161    if let Some(v) = &node.offset {
6162        visitor.visit_expr(v);
6163    }
6164}
6165impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for RaiseStatement {
6166    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6167        visitor.visit_raise_statement(self)
6168    }
6169}
6170#[allow(clippy::needless_pass_by_ref_mut)]
6171pub fn visit_raise_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast RaiseStatement)
6172where
6173    V: Visit<'ast, T, > + ?Sized,
6174{
6175    visitor.visit_notice_severity(&node.severity);
6176}
6177impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ReaderSchemaSelectionStrategy {
6178    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6179        visitor.visit_reader_schema_selection_strategy(self)
6180    }
6181}
6182#[allow(clippy::needless_pass_by_ref_mut)]
6183pub fn visit_reader_schema_selection_strategy<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ReaderSchemaSelectionStrategy)
6184where
6185    V: Visit<'ast, T, > + ?Sized,
6186{
6187    match node {
6188        ReaderSchemaSelectionStrategy::Latest {
6189        } => {
6190        }
6191        ReaderSchemaSelectionStrategy::Inline {
6192            0: binding0,
6193        } => {
6194        }
6195        ReaderSchemaSelectionStrategy::ById {
6196            0: binding0,
6197        } => {
6198        }
6199    }
6200}
6201impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ReassignOwnedStatement<T> {
6202    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6203        visitor.visit_reassign_owned_statement(self)
6204    }
6205}
6206#[allow(clippy::needless_pass_by_ref_mut)]
6207pub fn visit_reassign_owned_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ReassignOwnedStatement<T>)
6208where
6209    V: Visit<'ast, T, > + ?Sized,
6210{
6211    for v in &node.old_roles {
6212        visitor.visit_role_name(v);
6213    }
6214    visitor.visit_role_name(&node.new_role);
6215}
6216impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for RefreshAtOptionValue<T> {
6217    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6218        visitor.visit_refresh_at_option_value(self)
6219    }
6220}
6221#[allow(clippy::needless_pass_by_ref_mut)]
6222pub fn visit_refresh_at_option_value<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast RefreshAtOptionValue<T>)
6223where
6224    V: Visit<'ast, T, > + ?Sized,
6225{
6226    visitor.visit_expr(&node.time);
6227}
6228impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for RefreshEveryOptionValue<T> {
6229    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6230        visitor.visit_refresh_every_option_value(self)
6231    }
6232}
6233#[allow(clippy::needless_pass_by_ref_mut)]
6234pub fn visit_refresh_every_option_value<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast RefreshEveryOptionValue<T>)
6235where
6236    V: Visit<'ast, T, > + ?Sized,
6237{
6238    visitor.visit_interval_value(&node.interval);
6239    if let Some(v) = &node.aligned_to {
6240        visitor.visit_expr(v);
6241    }
6242}
6243impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for RefreshOptionValue<T> {
6244    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6245        visitor.visit_refresh_option_value(self)
6246    }
6247}
6248#[allow(clippy::needless_pass_by_ref_mut)]
6249pub fn visit_refresh_option_value<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast RefreshOptionValue<T>)
6250where
6251    V: Visit<'ast, T, > + ?Sized,
6252{
6253    match node {
6254        RefreshOptionValue::OnCommit {
6255        } => {
6256        }
6257        RefreshOptionValue::AtCreation {
6258        } => {
6259        }
6260        RefreshOptionValue::At {
6261            0: binding0,
6262        } => {
6263            visitor.visit_refresh_at_option_value(binding0);
6264        }
6265        RefreshOptionValue::Every {
6266            0: binding0,
6267        } => {
6268            visitor.visit_refresh_every_option_value(binding0);
6269        }
6270    }
6271}
6272impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ReplicaDefinition<T> {
6273    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6274        visitor.visit_replica_definition(self)
6275    }
6276}
6277#[allow(clippy::needless_pass_by_ref_mut)]
6278pub fn visit_replica_definition<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ReplicaDefinition<T>)
6279where
6280    V: Visit<'ast, T, > + ?Sized,
6281{
6282    visitor.visit_ident(&node.name);
6283    for v in &node.options {
6284        visitor.visit_replica_option(v);
6285    }
6286}
6287impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ReplicaOption<T> {
6288    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6289        visitor.visit_replica_option(self)
6290    }
6291}
6292#[allow(clippy::needless_pass_by_ref_mut)]
6293pub fn visit_replica_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ReplicaOption<T>)
6294where
6295    V: Visit<'ast, T, > + ?Sized,
6296{
6297    visitor.visit_replica_option_name(&node.name);
6298    if let Some(v) = &node.value {
6299        visitor.visit_with_option_value(v);
6300    }
6301}
6302impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ReplicaOptionName {
6303    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6304        visitor.visit_replica_option_name(self)
6305    }
6306}
6307#[allow(clippy::needless_pass_by_ref_mut)]
6308pub fn visit_replica_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ReplicaOptionName)
6309where
6310    V: Visit<'ast, T, > + ?Sized,
6311{
6312    match node {
6313        ReplicaOptionName::BilledAs {
6314        } => {
6315        }
6316        ReplicaOptionName::Size {
6317        } => {
6318        }
6319        ReplicaOptionName::AvailabilityZone {
6320        } => {
6321        }
6322        ReplicaOptionName::StorageAddresses {
6323        } => {
6324        }
6325        ReplicaOptionName::StoragectlAddresses {
6326        } => {
6327        }
6328        ReplicaOptionName::ComputectlAddresses {
6329        } => {
6330        }
6331        ReplicaOptionName::ComputeAddresses {
6332        } => {
6333        }
6334        ReplicaOptionName::Workers {
6335        } => {
6336        }
6337        ReplicaOptionName::Internal {
6338        } => {
6339        }
6340        ReplicaOptionName::IntrospectionInterval {
6341        } => {
6342        }
6343        ReplicaOptionName::IntrospectionDebugging {
6344        } => {
6345        }
6346        ReplicaOptionName::Disk {
6347        } => {
6348        }
6349    }
6350}
6351impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ResetVariableStatement {
6352    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6353        visitor.visit_reset_variable_statement(self)
6354    }
6355}
6356#[allow(clippy::needless_pass_by_ref_mut)]
6357pub fn visit_reset_variable_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ResetVariableStatement)
6358where
6359    V: Visit<'ast, T, > + ?Sized,
6360{
6361    visitor.visit_ident(&node.variable);
6362}
6363impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for RevokePrivilegesStatement<T> {
6364    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6365        visitor.visit_revoke_privileges_statement(self)
6366    }
6367}
6368#[allow(clippy::needless_pass_by_ref_mut)]
6369pub fn visit_revoke_privileges_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast RevokePrivilegesStatement<T>)
6370where
6371    V: Visit<'ast, T, > + ?Sized,
6372{
6373    visitor.visit_privilege_specification(&node.privileges);
6374    visitor.visit_grant_target_specification(&node.target);
6375    for v in &node.roles {
6376        visitor.visit_role_name(v);
6377    }
6378}
6379impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for RevokeRoleStatement<T> {
6380    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6381        visitor.visit_revoke_role_statement(self)
6382    }
6383}
6384#[allow(clippy::needless_pass_by_ref_mut)]
6385pub fn visit_revoke_role_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast RevokeRoleStatement<T>)
6386where
6387    V: Visit<'ast, T, > + ?Sized,
6388{
6389    for v in &node.role_names {
6390        visitor.visit_role_name(v);
6391    }
6392    for v in &node.member_names {
6393        visitor.visit_role_name(v);
6394    }
6395}
6396impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for RoleAttribute {
6397    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6398        visitor.visit_role_attribute(self)
6399    }
6400}
6401#[allow(clippy::needless_pass_by_ref_mut)]
6402pub fn visit_role_attribute<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast RoleAttribute)
6403where
6404    V: Visit<'ast, T, > + ?Sized,
6405{
6406    match node {
6407        RoleAttribute::Inherit {
6408        } => {
6409        }
6410        RoleAttribute::NoInherit {
6411        } => {
6412        }
6413        RoleAttribute::Password {
6414            0: binding0,
6415        } => {
6416            if let Some(v) = binding0 {
6417            }
6418        }
6419        RoleAttribute::Login {
6420        } => {
6421        }
6422        RoleAttribute::NoLogin {
6423        } => {
6424        }
6425        RoleAttribute::SuperUser {
6426        } => {
6427        }
6428        RoleAttribute::NoSuperUser {
6429        } => {
6430        }
6431        RoleAttribute::CreateCluster {
6432        } => {
6433        }
6434        RoleAttribute::NoCreateCluster {
6435        } => {
6436        }
6437        RoleAttribute::CreateDB {
6438        } => {
6439        }
6440        RoleAttribute::NoCreateDB {
6441        } => {
6442        }
6443        RoleAttribute::CreateRole {
6444        } => {
6445        }
6446        RoleAttribute::NoCreateRole {
6447        } => {
6448        }
6449    }
6450}
6451impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for RollbackStatement {
6452    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6453        visitor.visit_rollback_statement(self)
6454    }
6455}
6456#[allow(clippy::needless_pass_by_ref_mut)]
6457pub fn visit_rollback_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast RollbackStatement)
6458where
6459    V: Visit<'ast, T, > + ?Sized,
6460{
6461}
6462impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Schema {
6463    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6464        visitor.visit_schema(self)
6465    }
6466}
6467#[allow(clippy::needless_pass_by_ref_mut)]
6468pub fn visit_schema<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Schema)
6469where
6470    V: Visit<'ast, T, > + ?Sized,
6471{
6472}
6473impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Select<T> {
6474    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6475        visitor.visit_select(self)
6476    }
6477}
6478#[allow(clippy::needless_pass_by_ref_mut)]
6479pub fn visit_select<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Select<T>)
6480where
6481    V: Visit<'ast, T, > + ?Sized,
6482{
6483    if let Some(v) = &node.distinct {
6484        visitor.visit_distinct(v);
6485    }
6486    for v in &node.projection {
6487        visitor.visit_select_item(v);
6488    }
6489    for v in &node.from {
6490        visitor.visit_table_with_joins(v);
6491    }
6492    if let Some(v) = &node.selection {
6493        visitor.visit_expr(v);
6494    }
6495    for v in &node.group_by {
6496        visitor.visit_expr(v);
6497    }
6498    if let Some(v) = &node.having {
6499        visitor.visit_expr(v);
6500    }
6501    if let Some(v) = &node.qualify {
6502        visitor.visit_expr(v);
6503    }
6504    for v in &node.options {
6505        visitor.visit_select_option(v);
6506    }
6507}
6508impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SelectItem<T> {
6509    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6510        visitor.visit_select_item(self)
6511    }
6512}
6513#[allow(clippy::needless_pass_by_ref_mut)]
6514pub fn visit_select_item<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SelectItem<T>)
6515where
6516    V: Visit<'ast, T, > + ?Sized,
6517{
6518    match node {
6519        SelectItem::Expr {
6520            expr: binding0,
6521            alias: binding1,
6522        } => {
6523            visitor.visit_expr(binding0);
6524            if let Some(v) = binding1 {
6525                visitor.visit_ident(v);
6526            }
6527        }
6528        SelectItem::Wildcard {
6529        } => {
6530        }
6531    }
6532}
6533impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SelectOption<T> {
6534    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6535        visitor.visit_select_option(self)
6536    }
6537}
6538#[allow(clippy::needless_pass_by_ref_mut)]
6539pub fn visit_select_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SelectOption<T>)
6540where
6541    V: Visit<'ast, T, > + ?Sized,
6542{
6543    visitor.visit_select_option_name(&node.name);
6544    if let Some(v) = &node.value {
6545        visitor.visit_with_option_value(v);
6546    }
6547}
6548impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SelectOptionName {
6549    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6550        visitor.visit_select_option_name(self)
6551    }
6552}
6553#[allow(clippy::needless_pass_by_ref_mut)]
6554pub fn visit_select_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SelectOptionName)
6555where
6556    V: Visit<'ast, T, > + ?Sized,
6557{
6558    match node {
6559        SelectOptionName::ExpectedGroupSize {
6560        } => {
6561        }
6562        SelectOptionName::AggregateInputGroupSize {
6563        } => {
6564        }
6565        SelectOptionName::DistinctOnInputGroupSize {
6566        } => {
6567        }
6568        SelectOptionName::LimitInputGroupSize {
6569        } => {
6570        }
6571    }
6572}
6573impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SelectStatement<T> {
6574    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6575        visitor.visit_select_statement(self)
6576    }
6577}
6578#[allow(clippy::needless_pass_by_ref_mut)]
6579pub fn visit_select_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SelectStatement<T>)
6580where
6581    V: Visit<'ast, T, > + ?Sized,
6582{
6583    visitor.visit_query(&node.query);
6584    if let Some(v) = &node.as_of {
6585        visitor.visit_as_of(v);
6586    }
6587}
6588impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SetExpr<T> {
6589    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6590        visitor.visit_set_expr(self)
6591    }
6592}
6593#[allow(clippy::needless_pass_by_ref_mut)]
6594pub fn visit_set_expr<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SetExpr<T>)
6595where
6596    V: Visit<'ast, T, > + ?Sized,
6597{
6598    match node {
6599        SetExpr::Select {
6600            0: binding0,
6601        } => {
6602            visitor.visit_select(&*binding0);
6603        }
6604        SetExpr::Query {
6605            0: binding0,
6606        } => {
6607            visitor.visit_query(&*binding0);
6608        }
6609        SetExpr::SetOperation {
6610            op: binding0,
6611            all: binding1,
6612            left: binding2,
6613            right: binding3,
6614        } => {
6615            visitor.visit_set_operator(binding0);
6616            visitor.visit_set_expr(&*binding2);
6617            visitor.visit_set_expr(&*binding3);
6618        }
6619        SetExpr::Values {
6620            0: binding0,
6621        } => {
6622            visitor.visit_values(binding0);
6623        }
6624        SetExpr::Show {
6625            0: binding0,
6626        } => {
6627            visitor.visit_show_statement(binding0);
6628        }
6629        SetExpr::Table {
6630            0: binding0,
6631        } => {
6632            visitor.visit_item_name(binding0);
6633        }
6634    }
6635}
6636impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SetOperator {
6637    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6638        visitor.visit_set_operator(self)
6639    }
6640}
6641#[allow(clippy::needless_pass_by_ref_mut)]
6642pub fn visit_set_operator<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SetOperator)
6643where
6644    V: Visit<'ast, T, > + ?Sized,
6645{
6646    match node {
6647        SetOperator::Union {
6648        } => {
6649        }
6650        SetOperator::Except {
6651        } => {
6652        }
6653        SetOperator::Intersect {
6654        } => {
6655        }
6656    }
6657}
6658impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SetRoleVar {
6659    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6660        visitor.visit_set_role_var(self)
6661    }
6662}
6663#[allow(clippy::needless_pass_by_ref_mut)]
6664pub fn visit_set_role_var<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SetRoleVar)
6665where
6666    V: Visit<'ast, T, > + ?Sized,
6667{
6668    match node {
6669        SetRoleVar::Set {
6670            name: binding0,
6671            value: binding1,
6672        } => {
6673            visitor.visit_ident(binding0);
6674            visitor.visit_set_variable_to(binding1);
6675        }
6676        SetRoleVar::Reset {
6677            name: binding0,
6678        } => {
6679            visitor.visit_ident(binding0);
6680        }
6681    }
6682}
6683impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SetTransactionStatement {
6684    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6685        visitor.visit_set_transaction_statement(self)
6686    }
6687}
6688#[allow(clippy::needless_pass_by_ref_mut)]
6689pub fn visit_set_transaction_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SetTransactionStatement)
6690where
6691    V: Visit<'ast, T, > + ?Sized,
6692{
6693    for v in &node.modes {
6694        visitor.visit_transaction_mode(v);
6695    }
6696}
6697impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SetVariableStatement {
6698    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6699        visitor.visit_set_variable_statement(self)
6700    }
6701}
6702#[allow(clippy::needless_pass_by_ref_mut)]
6703pub fn visit_set_variable_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SetVariableStatement)
6704where
6705    V: Visit<'ast, T, > + ?Sized,
6706{
6707    visitor.visit_ident(&node.variable);
6708    visitor.visit_set_variable_to(&node.to);
6709}
6710impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SetVariableTo {
6711    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6712        visitor.visit_set_variable_to(self)
6713    }
6714}
6715#[allow(clippy::needless_pass_by_ref_mut)]
6716pub fn visit_set_variable_to<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SetVariableTo)
6717where
6718    V: Visit<'ast, T, > + ?Sized,
6719{
6720    match node {
6721        SetVariableTo::Default {
6722        } => {
6723        }
6724        SetVariableTo::Values {
6725            0: binding0,
6726        } => {
6727            for v in binding0 {
6728                visitor.visit_set_variable_value(v);
6729            }
6730        }
6731    }
6732}
6733impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SetVariableValue {
6734    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6735        visitor.visit_set_variable_value(self)
6736    }
6737}
6738#[allow(clippy::needless_pass_by_ref_mut)]
6739pub fn visit_set_variable_value<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SetVariableValue)
6740where
6741    V: Visit<'ast, T, > + ?Sized,
6742{
6743    match node {
6744        SetVariableValue::Ident {
6745            0: binding0,
6746        } => {
6747            visitor.visit_ident(binding0);
6748        }
6749        SetVariableValue::Literal {
6750            0: binding0,
6751        } => {
6752            visitor.visit_value(binding0);
6753        }
6754    }
6755}
6756impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ShowColumnsStatement<T> {
6757    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6758        visitor.visit_show_columns_statement(self)
6759    }
6760}
6761#[allow(clippy::needless_pass_by_ref_mut)]
6762pub fn visit_show_columns_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ShowColumnsStatement<T>)
6763where
6764    V: Visit<'ast, T, > + ?Sized,
6765{
6766    visitor.visit_item_name(&node.table_name);
6767    if let Some(v) = &node.filter {
6768        visitor.visit_show_statement_filter(v);
6769    }
6770}
6771impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ShowCreateClusterStatement<T> {
6772    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6773        visitor.visit_show_create_cluster_statement(self)
6774    }
6775}
6776#[allow(clippy::needless_pass_by_ref_mut)]
6777pub fn visit_show_create_cluster_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ShowCreateClusterStatement<T>)
6778where
6779    V: Visit<'ast, T, > + ?Sized,
6780{
6781    visitor.visit_cluster_name(&node.cluster_name);
6782}
6783impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ShowCreateConnectionStatement<T> {
6784    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6785        visitor.visit_show_create_connection_statement(self)
6786    }
6787}
6788#[allow(clippy::needless_pass_by_ref_mut)]
6789pub fn visit_show_create_connection_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ShowCreateConnectionStatement<T>)
6790where
6791    V: Visit<'ast, T, > + ?Sized,
6792{
6793    visitor.visit_item_name(&node.connection_name);
6794}
6795impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ShowCreateIndexStatement<T> {
6796    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6797        visitor.visit_show_create_index_statement(self)
6798    }
6799}
6800#[allow(clippy::needless_pass_by_ref_mut)]
6801pub fn visit_show_create_index_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ShowCreateIndexStatement<T>)
6802where
6803    V: Visit<'ast, T, > + ?Sized,
6804{
6805    visitor.visit_item_name(&node.index_name);
6806}
6807impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ShowCreateMaterializedViewStatement<T> {
6808    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6809        visitor.visit_show_create_materialized_view_statement(self)
6810    }
6811}
6812#[allow(clippy::needless_pass_by_ref_mut)]
6813pub fn visit_show_create_materialized_view_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ShowCreateMaterializedViewStatement<T>)
6814where
6815    V: Visit<'ast, T, > + ?Sized,
6816{
6817    visitor.visit_item_name(&node.materialized_view_name);
6818}
6819impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ShowCreateSinkStatement<T> {
6820    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6821        visitor.visit_show_create_sink_statement(self)
6822    }
6823}
6824#[allow(clippy::needless_pass_by_ref_mut)]
6825pub fn visit_show_create_sink_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ShowCreateSinkStatement<T>)
6826where
6827    V: Visit<'ast, T, > + ?Sized,
6828{
6829    visitor.visit_item_name(&node.sink_name);
6830}
6831impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ShowCreateSourceStatement<T> {
6832    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6833        visitor.visit_show_create_source_statement(self)
6834    }
6835}
6836#[allow(clippy::needless_pass_by_ref_mut)]
6837pub fn visit_show_create_source_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ShowCreateSourceStatement<T>)
6838where
6839    V: Visit<'ast, T, > + ?Sized,
6840{
6841    visitor.visit_item_name(&node.source_name);
6842}
6843impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ShowCreateTableStatement<T> {
6844    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6845        visitor.visit_show_create_table_statement(self)
6846    }
6847}
6848#[allow(clippy::needless_pass_by_ref_mut)]
6849pub fn visit_show_create_table_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ShowCreateTableStatement<T>)
6850where
6851    V: Visit<'ast, T, > + ?Sized,
6852{
6853    visitor.visit_item_name(&node.table_name);
6854}
6855impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ShowCreateTypeStatement<T> {
6856    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6857        visitor.visit_show_create_type_statement(self)
6858    }
6859}
6860#[allow(clippy::needless_pass_by_ref_mut)]
6861pub fn visit_show_create_type_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ShowCreateTypeStatement<T>)
6862where
6863    V: Visit<'ast, T, > + ?Sized,
6864{
6865    visitor.visit_data_type(&node.type_name);
6866}
6867impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ShowCreateViewStatement<T> {
6868    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6869        visitor.visit_show_create_view_statement(self)
6870    }
6871}
6872#[allow(clippy::needless_pass_by_ref_mut)]
6873pub fn visit_show_create_view_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ShowCreateViewStatement<T>)
6874where
6875    V: Visit<'ast, T, > + ?Sized,
6876{
6877    visitor.visit_item_name(&node.view_name);
6878}
6879impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ShowObjectType<T> {
6880    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
6881        visitor.visit_show_object_type(self)
6882    }
6883}
6884#[allow(clippy::needless_pass_by_ref_mut)]
6885pub fn visit_show_object_type<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ShowObjectType<T>)
6886where
6887    V: Visit<'ast, T, > + ?Sized,
6888{
6889    match node {
6890        ShowObjectType::MaterializedView {
6891            in_cluster: binding0,
6892        } => {
6893            if let Some(v) = binding0 {
6894                visitor.visit_cluster_name(v);
6895            }
6896        }
6897        ShowObjectType::Index {
6898            in_cluster: binding0,
6899            on_object: binding1,
6900        } => {
6901            if let Some(v) = binding0 {
6902                visitor.visit_cluster_name(v);
6903            }
6904            if let Some(v) = binding1 {
6905                visitor.visit_item_name(v);
6906            }
6907        }
6908        ShowObjectType::Table {
6909            on_source: binding0,
6910        } => {
6911            if let Some(v) = binding0 {
6912                visitor.visit_item_name(v);
6913            }
6914        }
6915        ShowObjectType::View {
6916        } => {
6917        }
6918        ShowObjectType::Source {
6919            in_cluster: binding0,
6920        } => {
6921            if let Some(v) = binding0 {
6922                visitor.visit_cluster_name(v);
6923            }
6924        }
6925        ShowObjectType::Sink {
6926            in_cluster: binding0,
6927        } => {
6928            if let Some(v) = binding0 {
6929                visitor.visit_cluster_name(v);
6930            }
6931        }
6932        ShowObjectType::Type {
6933        } => {
6934        }
6935        ShowObjectType::Role {
6936        } => {
6937        }
6938        ShowObjectType::Cluster {
6939        } => {
6940        }
6941        ShowObjectType::ClusterReplica {
6942        } => {
6943        }
6944        ShowObjectType::Object {
6945        } => {
6946        }
6947        ShowObjectType::Secret {
6948        } => {
6949        }
6950        ShowObjectType::Connection {
6951        } => {
6952        }
6953        ShowObjectType::Database {
6954        } => {
6955        }
6956        ShowObjectType::Schema {
6957            from: binding0,
6958        } => {
6959            if let Some(v) = binding0 {
6960                visitor.visit_database_name(v);
6961            }
6962        }
6963        ShowObjectType::Subsource {
6964            on_source: binding0,
6965        } => {
6966            if let Some(v) = binding0 {
6967                visitor.visit_item_name(v);
6968            }
6969        }
6970        ShowObjectType::Privileges {
6971            object_type: binding0,
6972            role: binding1,
6973        } => {
6974            if let Some(v) = binding0 {
6975                visitor.visit_system_object_type(v);
6976            }
6977            if let Some(v) = binding1 {
6978                visitor.visit_role_name(v);
6979            }
6980        }
6981        ShowObjectType::DefaultPrivileges {
6982            object_type: binding0,
6983            role: binding1,
6984        } => {
6985            if let Some(v) = binding0 {
6986                visitor.visit_object_type(v);
6987            }
6988            if let Some(v) = binding1 {
6989                visitor.visit_role_name(v);
6990            }
6991        }
6992        ShowObjectType::RoleMembership {
6993            role: binding0,
6994        } => {
6995            if let Some(v) = binding0 {
6996                visitor.visit_role_name(v);
6997            }
6998        }
6999        ShowObjectType::NetworkPolicy {
7000        } => {
7001        }
7002    }
7003}
7004impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ShowObjectsStatement<T> {
7005    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7006        visitor.visit_show_objects_statement(self)
7007    }
7008}
7009#[allow(clippy::needless_pass_by_ref_mut)]
7010pub fn visit_show_objects_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ShowObjectsStatement<T>)
7011where
7012    V: Visit<'ast, T, > + ?Sized,
7013{
7014    visitor.visit_show_object_type(&node.object_type);
7015    if let Some(v) = &node.from {
7016        visitor.visit_schema_name(v);
7017    }
7018    if let Some(v) = &node.filter {
7019        visitor.visit_show_statement_filter(v);
7020    }
7021}
7022impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ShowStatement<T> {
7023    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7024        visitor.visit_show_statement(self)
7025    }
7026}
7027#[allow(clippy::needless_pass_by_ref_mut)]
7028pub fn visit_show_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ShowStatement<T>)
7029where
7030    V: Visit<'ast, T, > + ?Sized,
7031{
7032    match node {
7033        ShowStatement::ShowObjects {
7034            0: binding0,
7035        } => {
7036            visitor.visit_show_objects_statement(binding0);
7037        }
7038        ShowStatement::ShowColumns {
7039            0: binding0,
7040        } => {
7041            visitor.visit_show_columns_statement(binding0);
7042        }
7043        ShowStatement::ShowCreateView {
7044            0: binding0,
7045        } => {
7046            visitor.visit_show_create_view_statement(binding0);
7047        }
7048        ShowStatement::ShowCreateMaterializedView {
7049            0: binding0,
7050        } => {
7051            visitor.visit_show_create_materialized_view_statement(binding0);
7052        }
7053        ShowStatement::ShowCreateSource {
7054            0: binding0,
7055        } => {
7056            visitor.visit_show_create_source_statement(binding0);
7057        }
7058        ShowStatement::ShowCreateTable {
7059            0: binding0,
7060        } => {
7061            visitor.visit_show_create_table_statement(binding0);
7062        }
7063        ShowStatement::ShowCreateSink {
7064            0: binding0,
7065        } => {
7066            visitor.visit_show_create_sink_statement(binding0);
7067        }
7068        ShowStatement::ShowCreateIndex {
7069            0: binding0,
7070        } => {
7071            visitor.visit_show_create_index_statement(binding0);
7072        }
7073        ShowStatement::ShowCreateConnection {
7074            0: binding0,
7075        } => {
7076            visitor.visit_show_create_connection_statement(binding0);
7077        }
7078        ShowStatement::ShowCreateCluster {
7079            0: binding0,
7080        } => {
7081            visitor.visit_show_create_cluster_statement(binding0);
7082        }
7083        ShowStatement::ShowCreateType {
7084            0: binding0,
7085        } => {
7086            visitor.visit_show_create_type_statement(binding0);
7087        }
7088        ShowStatement::ShowVariable {
7089            0: binding0,
7090        } => {
7091            visitor.visit_show_variable_statement(binding0);
7092        }
7093        ShowStatement::InspectShard {
7094            0: binding0,
7095        } => {
7096            visitor.visit_inspect_shard_statement(binding0);
7097        }
7098    }
7099}
7100impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ShowStatementFilter<T> {
7101    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7102        visitor.visit_show_statement_filter(self)
7103    }
7104}
7105#[allow(clippy::needless_pass_by_ref_mut)]
7106pub fn visit_show_statement_filter<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ShowStatementFilter<T>)
7107where
7108    V: Visit<'ast, T, > + ?Sized,
7109{
7110    match node {
7111        ShowStatementFilter::Like {
7112            0: binding0,
7113        } => {
7114        }
7115        ShowStatementFilter::Where {
7116            0: binding0,
7117        } => {
7118            visitor.visit_expr(binding0);
7119        }
7120    }
7121}
7122impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ShowVariableStatement {
7123    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7124        visitor.visit_show_variable_statement(self)
7125    }
7126}
7127#[allow(clippy::needless_pass_by_ref_mut)]
7128pub fn visit_show_variable_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ShowVariableStatement)
7129where
7130    V: Visit<'ast, T, > + ?Sized,
7131{
7132    visitor.visit_ident(&node.variable);
7133}
7134impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SinkEnvelope {
7135    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7136        visitor.visit_sink_envelope(self)
7137    }
7138}
7139#[allow(clippy::needless_pass_by_ref_mut)]
7140pub fn visit_sink_envelope<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SinkEnvelope)
7141where
7142    V: Visit<'ast, T, > + ?Sized,
7143{
7144    match node {
7145        SinkEnvelope::Debezium {
7146        } => {
7147        }
7148        SinkEnvelope::Upsert {
7149        } => {
7150        }
7151    }
7152}
7153impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SinkKey {
7154    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7155        visitor.visit_sink_key(self)
7156    }
7157}
7158#[allow(clippy::needless_pass_by_ref_mut)]
7159pub fn visit_sink_key<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SinkKey)
7160where
7161    V: Visit<'ast, T, > + ?Sized,
7162{
7163    for v in &node.key_columns {
7164        visitor.visit_ident(v);
7165    }
7166}
7167impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SourceEnvelope {
7168    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7169        visitor.visit_source_envelope(self)
7170    }
7171}
7172#[allow(clippy::needless_pass_by_ref_mut)]
7173pub fn visit_source_envelope<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SourceEnvelope)
7174where
7175    V: Visit<'ast, T, > + ?Sized,
7176{
7177    match node {
7178        SourceEnvelope::None {
7179        } => {
7180        }
7181        SourceEnvelope::Debezium {
7182        } => {
7183        }
7184        SourceEnvelope::Upsert {
7185            value_decode_err_policy: binding0,
7186        } => {
7187            for v in binding0 {
7188                visitor.visit_source_error_policy(v);
7189            }
7190        }
7191        SourceEnvelope::CdcV2 {
7192        } => {
7193        }
7194    }
7195}
7196impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SourceErrorPolicy {
7197    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7198        visitor.visit_source_error_policy(self)
7199    }
7200}
7201#[allow(clippy::needless_pass_by_ref_mut)]
7202pub fn visit_source_error_policy<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SourceErrorPolicy)
7203where
7204    V: Visit<'ast, T, > + ?Sized,
7205{
7206    match node {
7207        SourceErrorPolicy::Inline {
7208            alias: binding0,
7209        } => {
7210            if let Some(v) = binding0 {
7211                visitor.visit_ident(v);
7212            }
7213        }
7214    }
7215}
7216impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SourceIncludeMetadata {
7217    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7218        visitor.visit_source_include_metadata(self)
7219    }
7220}
7221#[allow(clippy::needless_pass_by_ref_mut)]
7222pub fn visit_source_include_metadata<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SourceIncludeMetadata)
7223where
7224    V: Visit<'ast, T, > + ?Sized,
7225{
7226    match node {
7227        SourceIncludeMetadata::Key {
7228            alias: binding0,
7229        } => {
7230            if let Some(v) = binding0 {
7231                visitor.visit_ident(v);
7232            }
7233        }
7234        SourceIncludeMetadata::Timestamp {
7235            alias: binding0,
7236        } => {
7237            if let Some(v) = binding0 {
7238                visitor.visit_ident(v);
7239            }
7240        }
7241        SourceIncludeMetadata::Partition {
7242            alias: binding0,
7243        } => {
7244            if let Some(v) = binding0 {
7245                visitor.visit_ident(v);
7246            }
7247        }
7248        SourceIncludeMetadata::Offset {
7249            alias: binding0,
7250        } => {
7251            if let Some(v) = binding0 {
7252                visitor.visit_ident(v);
7253            }
7254        }
7255        SourceIncludeMetadata::Headers {
7256            alias: binding0,
7257        } => {
7258            if let Some(v) = binding0 {
7259                visitor.visit_ident(v);
7260            }
7261        }
7262        SourceIncludeMetadata::Header {
7263            key: binding0,
7264            alias: binding1,
7265            use_bytes: binding2,
7266        } => {
7267            visitor.visit_ident(binding1);
7268        }
7269    }
7270}
7271impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SqlServerConfigOption<T> {
7272    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7273        visitor.visit_sql_server_config_option(self)
7274    }
7275}
7276#[allow(clippy::needless_pass_by_ref_mut)]
7277pub fn visit_sql_server_config_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SqlServerConfigOption<T>)
7278where
7279    V: Visit<'ast, T, > + ?Sized,
7280{
7281    visitor.visit_sql_server_config_option_name(&node.name);
7282    if let Some(v) = &node.value {
7283        visitor.visit_with_option_value(v);
7284    }
7285}
7286impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SqlServerConfigOptionName {
7287    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7288        visitor.visit_sql_server_config_option_name(self)
7289    }
7290}
7291#[allow(clippy::needless_pass_by_ref_mut)]
7292pub fn visit_sql_server_config_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SqlServerConfigOptionName)
7293where
7294    V: Visit<'ast, T, > + ?Sized,
7295{
7296    match node {
7297        SqlServerConfigOptionName::Details {
7298        } => {
7299        }
7300        SqlServerConfigOptionName::TextColumns {
7301        } => {
7302        }
7303        SqlServerConfigOptionName::ExcludeColumns {
7304        } => {
7305        }
7306    }
7307}
7308impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for StartTransactionStatement {
7309    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7310        visitor.visit_start_transaction_statement(self)
7311    }
7312}
7313#[allow(clippy::needless_pass_by_ref_mut)]
7314pub fn visit_start_transaction_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast StartTransactionStatement)
7315where
7316    V: Visit<'ast, T, > + ?Sized,
7317{
7318    for v in &node.modes {
7319        visitor.visit_transaction_mode(v);
7320    }
7321}
7322impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Statement<T> {
7323    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7324        visitor.visit_statement(self)
7325    }
7326}
7327#[allow(clippy::needless_pass_by_ref_mut)]
7328pub fn visit_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Statement<T>)
7329where
7330    V: Visit<'ast, T, > + ?Sized,
7331{
7332    match node {
7333        Statement::Select {
7334            0: binding0,
7335        } => {
7336            visitor.visit_select_statement(binding0);
7337        }
7338        Statement::Insert {
7339            0: binding0,
7340        } => {
7341            visitor.visit_insert_statement(binding0);
7342        }
7343        Statement::Copy {
7344            0: binding0,
7345        } => {
7346            visitor.visit_copy_statement(binding0);
7347        }
7348        Statement::Update {
7349            0: binding0,
7350        } => {
7351            visitor.visit_update_statement(binding0);
7352        }
7353        Statement::Delete {
7354            0: binding0,
7355        } => {
7356            visitor.visit_delete_statement(binding0);
7357        }
7358        Statement::CreateConnection {
7359            0: binding0,
7360        } => {
7361            visitor.visit_create_connection_statement(binding0);
7362        }
7363        Statement::CreateDatabase {
7364            0: binding0,
7365        } => {
7366            visitor.visit_create_database_statement(binding0);
7367        }
7368        Statement::CreateSchema {
7369            0: binding0,
7370        } => {
7371            visitor.visit_create_schema_statement(binding0);
7372        }
7373        Statement::CreateWebhookSource {
7374            0: binding0,
7375        } => {
7376            visitor.visit_create_webhook_source_statement(binding0);
7377        }
7378        Statement::CreateSource {
7379            0: binding0,
7380        } => {
7381            visitor.visit_create_source_statement(binding0);
7382        }
7383        Statement::CreateSubsource {
7384            0: binding0,
7385        } => {
7386            visitor.visit_create_subsource_statement(binding0);
7387        }
7388        Statement::CreateSink {
7389            0: binding0,
7390        } => {
7391            visitor.visit_create_sink_statement(binding0);
7392        }
7393        Statement::CreateView {
7394            0: binding0,
7395        } => {
7396            visitor.visit_create_view_statement(binding0);
7397        }
7398        Statement::CreateMaterializedView {
7399            0: binding0,
7400        } => {
7401            visitor.visit_create_materialized_view_statement(binding0);
7402        }
7403        Statement::CreateTable {
7404            0: binding0,
7405        } => {
7406            visitor.visit_create_table_statement(binding0);
7407        }
7408        Statement::CreateTableFromSource {
7409            0: binding0,
7410        } => {
7411            visitor.visit_create_table_from_source_statement(binding0);
7412        }
7413        Statement::CreateIndex {
7414            0: binding0,
7415        } => {
7416            visitor.visit_create_index_statement(binding0);
7417        }
7418        Statement::CreateType {
7419            0: binding0,
7420        } => {
7421            visitor.visit_create_type_statement(binding0);
7422        }
7423        Statement::CreateRole {
7424            0: binding0,
7425        } => {
7426            visitor.visit_create_role_statement(binding0);
7427        }
7428        Statement::CreateCluster {
7429            0: binding0,
7430        } => {
7431            visitor.visit_create_cluster_statement(binding0);
7432        }
7433        Statement::CreateClusterReplica {
7434            0: binding0,
7435        } => {
7436            visitor.visit_create_cluster_replica_statement(binding0);
7437        }
7438        Statement::CreateSecret {
7439            0: binding0,
7440        } => {
7441            visitor.visit_create_secret_statement(binding0);
7442        }
7443        Statement::CreateNetworkPolicy {
7444            0: binding0,
7445        } => {
7446            visitor.visit_create_network_policy_statement(binding0);
7447        }
7448        Statement::AlterCluster {
7449            0: binding0,
7450        } => {
7451            visitor.visit_alter_cluster_statement(binding0);
7452        }
7453        Statement::AlterOwner {
7454            0: binding0,
7455        } => {
7456            visitor.visit_alter_owner_statement(binding0);
7457        }
7458        Statement::AlterObjectRename {
7459            0: binding0,
7460        } => {
7461            visitor.visit_alter_object_rename_statement(binding0);
7462        }
7463        Statement::AlterObjectSwap {
7464            0: binding0,
7465        } => {
7466            visitor.visit_alter_object_swap_statement(binding0);
7467        }
7468        Statement::AlterRetainHistory {
7469            0: binding0,
7470        } => {
7471            visitor.visit_alter_retain_history_statement(binding0);
7472        }
7473        Statement::AlterIndex {
7474            0: binding0,
7475        } => {
7476            visitor.visit_alter_index_statement(binding0);
7477        }
7478        Statement::AlterSecret {
7479            0: binding0,
7480        } => {
7481            visitor.visit_alter_secret_statement(binding0);
7482        }
7483        Statement::AlterSetCluster {
7484            0: binding0,
7485        } => {
7486            visitor.visit_alter_set_cluster_statement(binding0);
7487        }
7488        Statement::AlterSink {
7489            0: binding0,
7490        } => {
7491            visitor.visit_alter_sink_statement(binding0);
7492        }
7493        Statement::AlterSource {
7494            0: binding0,
7495        } => {
7496            visitor.visit_alter_source_statement(binding0);
7497        }
7498        Statement::AlterSystemSet {
7499            0: binding0,
7500        } => {
7501            visitor.visit_alter_system_set_statement(binding0);
7502        }
7503        Statement::AlterSystemReset {
7504            0: binding0,
7505        } => {
7506            visitor.visit_alter_system_reset_statement(binding0);
7507        }
7508        Statement::AlterSystemResetAll {
7509            0: binding0,
7510        } => {
7511            visitor.visit_alter_system_reset_all_statement(binding0);
7512        }
7513        Statement::AlterConnection {
7514            0: binding0,
7515        } => {
7516            visitor.visit_alter_connection_statement(binding0);
7517        }
7518        Statement::AlterNetworkPolicy {
7519            0: binding0,
7520        } => {
7521            visitor.visit_alter_network_policy_statement(binding0);
7522        }
7523        Statement::AlterRole {
7524            0: binding0,
7525        } => {
7526            visitor.visit_alter_role_statement(binding0);
7527        }
7528        Statement::AlterTableAddColumn {
7529            0: binding0,
7530        } => {
7531            visitor.visit_alter_table_add_column_statement(binding0);
7532        }
7533        Statement::AlterMaterializedViewApplyReplacement {
7534            0: binding0,
7535        } => {
7536            visitor.visit_alter_materialized_view_apply_replacement_statement(binding0);
7537        }
7538        Statement::Discard {
7539            0: binding0,
7540        } => {
7541            visitor.visit_discard_statement(binding0);
7542        }
7543        Statement::DropObjects {
7544            0: binding0,
7545        } => {
7546            visitor.visit_drop_objects_statement(binding0);
7547        }
7548        Statement::DropOwned {
7549            0: binding0,
7550        } => {
7551            visitor.visit_drop_owned_statement(binding0);
7552        }
7553        Statement::SetVariable {
7554            0: binding0,
7555        } => {
7556            visitor.visit_set_variable_statement(binding0);
7557        }
7558        Statement::ResetVariable {
7559            0: binding0,
7560        } => {
7561            visitor.visit_reset_variable_statement(binding0);
7562        }
7563        Statement::Show {
7564            0: binding0,
7565        } => {
7566            visitor.visit_show_statement(binding0);
7567        }
7568        Statement::StartTransaction {
7569            0: binding0,
7570        } => {
7571            visitor.visit_start_transaction_statement(binding0);
7572        }
7573        Statement::SetTransaction {
7574            0: binding0,
7575        } => {
7576            visitor.visit_set_transaction_statement(binding0);
7577        }
7578        Statement::Commit {
7579            0: binding0,
7580        } => {
7581            visitor.visit_commit_statement(binding0);
7582        }
7583        Statement::Rollback {
7584            0: binding0,
7585        } => {
7586            visitor.visit_rollback_statement(binding0);
7587        }
7588        Statement::Subscribe {
7589            0: binding0,
7590        } => {
7591            visitor.visit_subscribe_statement(binding0);
7592        }
7593        Statement::ExplainPlan {
7594            0: binding0,
7595        } => {
7596            visitor.visit_explain_plan_statement(binding0);
7597        }
7598        Statement::ExplainPushdown {
7599            0: binding0,
7600        } => {
7601            visitor.visit_explain_pushdown_statement(binding0);
7602        }
7603        Statement::ExplainTimestamp {
7604            0: binding0,
7605        } => {
7606            visitor.visit_explain_timestamp_statement(binding0);
7607        }
7608        Statement::ExplainSinkSchema {
7609            0: binding0,
7610        } => {
7611            visitor.visit_explain_sink_schema_statement(binding0);
7612        }
7613        Statement::ExplainAnalyzeObject {
7614            0: binding0,
7615        } => {
7616            visitor.visit_explain_analyze_object_statement(binding0);
7617        }
7618        Statement::ExplainAnalyzeCluster {
7619            0: binding0,
7620        } => {
7621            visitor.visit_explain_analyze_cluster_statement(binding0);
7622        }
7623        Statement::Declare {
7624            0: binding0,
7625        } => {
7626            visitor.visit_declare_statement(binding0);
7627        }
7628        Statement::Fetch {
7629            0: binding0,
7630        } => {
7631            visitor.visit_fetch_statement(binding0);
7632        }
7633        Statement::Close {
7634            0: binding0,
7635        } => {
7636            visitor.visit_close_statement(binding0);
7637        }
7638        Statement::Prepare {
7639            0: binding0,
7640        } => {
7641            visitor.visit_prepare_statement(binding0);
7642        }
7643        Statement::Execute {
7644            0: binding0,
7645        } => {
7646            visitor.visit_execute_statement(binding0);
7647        }
7648        Statement::ExecuteUnitTest {
7649            0: binding0,
7650        } => {
7651            visitor.visit_execute_unit_test_statement(binding0);
7652        }
7653        Statement::Deallocate {
7654            0: binding0,
7655        } => {
7656            visitor.visit_deallocate_statement(binding0);
7657        }
7658        Statement::Raise {
7659            0: binding0,
7660        } => {
7661            visitor.visit_raise_statement(binding0);
7662        }
7663        Statement::GrantRole {
7664            0: binding0,
7665        } => {
7666            visitor.visit_grant_role_statement(binding0);
7667        }
7668        Statement::RevokeRole {
7669            0: binding0,
7670        } => {
7671            visitor.visit_revoke_role_statement(binding0);
7672        }
7673        Statement::GrantPrivileges {
7674            0: binding0,
7675        } => {
7676            visitor.visit_grant_privileges_statement(binding0);
7677        }
7678        Statement::RevokePrivileges {
7679            0: binding0,
7680        } => {
7681            visitor.visit_revoke_privileges_statement(binding0);
7682        }
7683        Statement::AlterDefaultPrivileges {
7684            0: binding0,
7685        } => {
7686            visitor.visit_alter_default_privileges_statement(binding0);
7687        }
7688        Statement::ReassignOwned {
7689            0: binding0,
7690        } => {
7691            visitor.visit_reassign_owned_statement(binding0);
7692        }
7693        Statement::ValidateConnection {
7694            0: binding0,
7695        } => {
7696            visitor.visit_validate_connection_statement(binding0);
7697        }
7698        Statement::Comment {
7699            0: binding0,
7700        } => {
7701            visitor.visit_comment_statement(binding0);
7702        }
7703    }
7704}
7705impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SubscribeOption<T> {
7706    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7707        visitor.visit_subscribe_option(self)
7708    }
7709}
7710#[allow(clippy::needless_pass_by_ref_mut)]
7711pub fn visit_subscribe_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SubscribeOption<T>)
7712where
7713    V: Visit<'ast, T, > + ?Sized,
7714{
7715    visitor.visit_subscribe_option_name(&node.name);
7716    if let Some(v) = &node.value {
7717        visitor.visit_with_option_value(v);
7718    }
7719}
7720impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SubscribeOptionName {
7721    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7722        visitor.visit_subscribe_option_name(self)
7723    }
7724}
7725#[allow(clippy::needless_pass_by_ref_mut)]
7726pub fn visit_subscribe_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SubscribeOptionName)
7727where
7728    V: Visit<'ast, T, > + ?Sized,
7729{
7730    match node {
7731        SubscribeOptionName::Snapshot {
7732        } => {
7733        }
7734        SubscribeOptionName::Progress {
7735        } => {
7736        }
7737    }
7738}
7739impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SubscribeOutput<T> {
7740    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7741        visitor.visit_subscribe_output(self)
7742    }
7743}
7744#[allow(clippy::needless_pass_by_ref_mut)]
7745pub fn visit_subscribe_output<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SubscribeOutput<T>)
7746where
7747    V: Visit<'ast, T, > + ?Sized,
7748{
7749    match node {
7750        SubscribeOutput::Diffs {
7751        } => {
7752        }
7753        SubscribeOutput::WithinTimestampOrderBy {
7754            order_by: binding0,
7755        } => {
7756            for v in binding0 {
7757                visitor.visit_order_by_expr(v);
7758            }
7759        }
7760        SubscribeOutput::EnvelopeUpsert {
7761            key_columns: binding0,
7762        } => {
7763            for v in binding0 {
7764                visitor.visit_ident(v);
7765            }
7766        }
7767        SubscribeOutput::EnvelopeDebezium {
7768            key_columns: binding0,
7769        } => {
7770            for v in binding0 {
7771                visitor.visit_ident(v);
7772            }
7773        }
7774    }
7775}
7776impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SubscribeRelation<T> {
7777    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7778        visitor.visit_subscribe_relation(self)
7779    }
7780}
7781#[allow(clippy::needless_pass_by_ref_mut)]
7782pub fn visit_subscribe_relation<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SubscribeRelation<T>)
7783where
7784    V: Visit<'ast, T, > + ?Sized,
7785{
7786    match node {
7787        SubscribeRelation::Name {
7788            0: binding0,
7789        } => {
7790            visitor.visit_item_name(binding0);
7791        }
7792        SubscribeRelation::Query {
7793            0: binding0,
7794        } => {
7795            visitor.visit_query(binding0);
7796        }
7797    }
7798}
7799impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SubscribeStatement<T> {
7800    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7801        visitor.visit_subscribe_statement(self)
7802    }
7803}
7804#[allow(clippy::needless_pass_by_ref_mut)]
7805pub fn visit_subscribe_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SubscribeStatement<T>)
7806where
7807    V: Visit<'ast, T, > + ?Sized,
7808{
7809    visitor.visit_subscribe_relation(&node.relation);
7810    for v in &node.options {
7811        visitor.visit_subscribe_option(v);
7812    }
7813    if let Some(v) = &node.as_of {
7814        visitor.visit_as_of(v);
7815    }
7816    if let Some(v) = &node.up_to {
7817        visitor.visit_expr(v);
7818    }
7819    visitor.visit_subscribe_output(&node.output);
7820}
7821impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SubscriptPosition<T> {
7822    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7823        visitor.visit_subscript_position(self)
7824    }
7825}
7826#[allow(clippy::needless_pass_by_ref_mut)]
7827pub fn visit_subscript_position<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SubscriptPosition<T>)
7828where
7829    V: Visit<'ast, T, > + ?Sized,
7830{
7831    if let Some(v) = &node.start {
7832        visitor.visit_expr(v);
7833    }
7834    if let Some(v) = &node.end {
7835        visitor.visit_expr(v);
7836    }
7837}
7838impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for SystemObjectType {
7839    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7840        visitor.visit_system_object_type(self)
7841    }
7842}
7843#[allow(clippy::needless_pass_by_ref_mut)]
7844pub fn visit_system_object_type<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast SystemObjectType)
7845where
7846    V: Visit<'ast, T, > + ?Sized,
7847{
7848    match node {
7849        SystemObjectType::System {
7850        } => {
7851        }
7852        SystemObjectType::Object {
7853            0: binding0,
7854        } => {
7855            visitor.visit_object_type(binding0);
7856        }
7857    }
7858}
7859#[allow(clippy::needless_pass_by_ref_mut)]
7860pub fn visit_cluster_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast T::ClusterName)
7861where
7862    V: Visit<'ast, T, > + ?Sized,
7863{
7864}
7865#[allow(clippy::needless_pass_by_ref_mut)]
7866pub fn visit_column_reference<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast T::ColumnReference)
7867where
7868    V: Visit<'ast, T, > + ?Sized,
7869{
7870}
7871#[allow(clippy::needless_pass_by_ref_mut)]
7872pub fn visit_cte_id<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast T::CteId)
7873where
7874    V: Visit<'ast, T, > + ?Sized,
7875{
7876}
7877#[allow(clippy::needless_pass_by_ref_mut)]
7878pub fn visit_data_type<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast T::DataType)
7879where
7880    V: Visit<'ast, T, > + ?Sized,
7881{
7882}
7883#[allow(clippy::needless_pass_by_ref_mut)]
7884pub fn visit_database_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast T::DatabaseName)
7885where
7886    V: Visit<'ast, T, > + ?Sized,
7887{
7888}
7889#[allow(clippy::needless_pass_by_ref_mut)]
7890pub fn visit_item_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast T::ItemName)
7891where
7892    V: Visit<'ast, T, > + ?Sized,
7893{
7894}
7895#[allow(clippy::needless_pass_by_ref_mut)]
7896pub fn visit_nested_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast T::NestedStatement)
7897where
7898    V: Visit<'ast, T, > + ?Sized,
7899{
7900}
7901#[allow(clippy::needless_pass_by_ref_mut)]
7902pub fn visit_network_policy_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast T::NetworkPolicyName)
7903where
7904    V: Visit<'ast, T, > + ?Sized,
7905{
7906}
7907#[allow(clippy::needless_pass_by_ref_mut)]
7908pub fn visit_object_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast T::ObjectName)
7909where
7910    V: Visit<'ast, T, > + ?Sized,
7911{
7912}
7913#[allow(clippy::needless_pass_by_ref_mut)]
7914pub fn visit_role_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast T::RoleName)
7915where
7916    V: Visit<'ast, T, > + ?Sized,
7917{
7918}
7919#[allow(clippy::needless_pass_by_ref_mut)]
7920pub fn visit_schema_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast T::SchemaName)
7921where
7922    V: Visit<'ast, T, > + ?Sized,
7923{
7924}
7925impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for TableAlias {
7926    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7927        visitor.visit_table_alias(self)
7928    }
7929}
7930#[allow(clippy::needless_pass_by_ref_mut)]
7931pub fn visit_table_alias<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast TableAlias)
7932where
7933    V: Visit<'ast, T, > + ?Sized,
7934{
7935    visitor.visit_ident(&node.name);
7936    for v in &node.columns {
7937        visitor.visit_ident(v);
7938    }
7939}
7940impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for TableConstraint<T> {
7941    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7942        visitor.visit_table_constraint(self)
7943    }
7944}
7945#[allow(clippy::needless_pass_by_ref_mut)]
7946pub fn visit_table_constraint<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast TableConstraint<T>)
7947where
7948    V: Visit<'ast, T, > + ?Sized,
7949{
7950    match node {
7951        TableConstraint::Unique {
7952            name: binding0,
7953            columns: binding1,
7954            is_primary: binding2,
7955            nulls_not_distinct: binding3,
7956        } => {
7957            if let Some(v) = binding0 {
7958                visitor.visit_ident(v);
7959            }
7960            for v in binding1 {
7961                visitor.visit_ident(v);
7962            }
7963        }
7964        TableConstraint::ForeignKey {
7965            name: binding0,
7966            columns: binding1,
7967            foreign_table: binding2,
7968            referred_columns: binding3,
7969        } => {
7970            if let Some(v) = binding0 {
7971                visitor.visit_ident(v);
7972            }
7973            for v in binding1 {
7974                visitor.visit_ident(v);
7975            }
7976            visitor.visit_item_name(binding2);
7977            for v in binding3 {
7978                visitor.visit_ident(v);
7979            }
7980        }
7981        TableConstraint::Check {
7982            name: binding0,
7983            expr: binding1,
7984        } => {
7985            if let Some(v) = binding0 {
7986                visitor.visit_ident(v);
7987            }
7988            visitor.visit_expr(&*binding1);
7989        }
7990    }
7991}
7992impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for TableFactor<T> {
7993    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
7994        visitor.visit_table_factor(self)
7995    }
7996}
7997#[allow(clippy::needless_pass_by_ref_mut)]
7998pub fn visit_table_factor<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast TableFactor<T>)
7999where
8000    V: Visit<'ast, T, > + ?Sized,
8001{
8002    match node {
8003        TableFactor::Table {
8004            name: binding0,
8005            alias: binding1,
8006        } => {
8007            visitor.visit_item_name(binding0);
8008            if let Some(v) = binding1 {
8009                visitor.visit_table_alias(v);
8010            }
8011        }
8012        TableFactor::Function {
8013            function: binding0,
8014            alias: binding1,
8015            with_ordinality: binding2,
8016        } => {
8017            visitor.visit_function(binding0);
8018            if let Some(v) = binding1 {
8019                visitor.visit_table_alias(v);
8020            }
8021        }
8022        TableFactor::RowsFrom {
8023            functions: binding0,
8024            alias: binding1,
8025            with_ordinality: binding2,
8026        } => {
8027            for v in binding0 {
8028                visitor.visit_function(v);
8029            }
8030            if let Some(v) = binding1 {
8031                visitor.visit_table_alias(v);
8032            }
8033        }
8034        TableFactor::Derived {
8035            lateral: binding0,
8036            subquery: binding1,
8037            alias: binding2,
8038        } => {
8039            visitor.visit_query(&*binding1);
8040            if let Some(v) = binding2 {
8041                visitor.visit_table_alias(v);
8042            }
8043        }
8044        TableFactor::NestedJoin {
8045            join: binding0,
8046            alias: binding1,
8047        } => {
8048            visitor.visit_table_with_joins(&*binding0);
8049            if let Some(v) = binding1 {
8050                visitor.visit_table_alias(v);
8051            }
8052        }
8053    }
8054}
8055impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for TableFromSourceColumns<T> {
8056    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8057        visitor.visit_table_from_source_columns(self)
8058    }
8059}
8060#[allow(clippy::needless_pass_by_ref_mut)]
8061pub fn visit_table_from_source_columns<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast TableFromSourceColumns<T>)
8062where
8063    V: Visit<'ast, T, > + ?Sized,
8064{
8065    match node {
8066        TableFromSourceColumns::NotSpecified {
8067        } => {
8068        }
8069        TableFromSourceColumns::Named {
8070            0: binding0,
8071        } => {
8072            for v in binding0 {
8073                visitor.visit_ident(v);
8074            }
8075        }
8076        TableFromSourceColumns::Defined {
8077            0: binding0,
8078        } => {
8079            for v in binding0 {
8080                visitor.visit_column_def(v);
8081            }
8082        }
8083    }
8084}
8085impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for TableFromSourceOption<T> {
8086    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8087        visitor.visit_table_from_source_option(self)
8088    }
8089}
8090#[allow(clippy::needless_pass_by_ref_mut)]
8091pub fn visit_table_from_source_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast TableFromSourceOption<T>)
8092where
8093    V: Visit<'ast, T, > + ?Sized,
8094{
8095    visitor.visit_table_from_source_option_name(&node.name);
8096    if let Some(v) = &node.value {
8097        visitor.visit_with_option_value(v);
8098    }
8099}
8100impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for TableFromSourceOptionName {
8101    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8102        visitor.visit_table_from_source_option_name(self)
8103    }
8104}
8105#[allow(clippy::needless_pass_by_ref_mut)]
8106pub fn visit_table_from_source_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast TableFromSourceOptionName)
8107where
8108    V: Visit<'ast, T, > + ?Sized,
8109{
8110    match node {
8111        TableFromSourceOptionName::TextColumns {
8112        } => {
8113        }
8114        TableFromSourceOptionName::ExcludeColumns {
8115        } => {
8116        }
8117        TableFromSourceOptionName::Details {
8118        } => {
8119        }
8120        TableFromSourceOptionName::PartitionBy {
8121        } => {
8122        }
8123        TableFromSourceOptionName::RetainHistory {
8124        } => {
8125        }
8126    }
8127}
8128impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for TableOption<T> {
8129    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8130        visitor.visit_table_option(self)
8131    }
8132}
8133#[allow(clippy::needless_pass_by_ref_mut)]
8134pub fn visit_table_option<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast TableOption<T>)
8135where
8136    V: Visit<'ast, T, > + ?Sized,
8137{
8138    visitor.visit_table_option_name(&node.name);
8139    if let Some(v) = &node.value {
8140        visitor.visit_with_option_value(v);
8141    }
8142}
8143impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for TableOptionName {
8144    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8145        visitor.visit_table_option_name(self)
8146    }
8147}
8148#[allow(clippy::needless_pass_by_ref_mut)]
8149pub fn visit_table_option_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast TableOptionName)
8150where
8151    V: Visit<'ast, T, > + ?Sized,
8152{
8153    match node {
8154        TableOptionName::PartitionBy {
8155        } => {
8156        }
8157        TableOptionName::RetainHistory {
8158        } => {
8159        }
8160        TableOptionName::RedactedTest {
8161        } => {
8162        }
8163    }
8164}
8165impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for TableWithJoins<T> {
8166    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8167        visitor.visit_table_with_joins(self)
8168    }
8169}
8170#[allow(clippy::needless_pass_by_ref_mut)]
8171pub fn visit_table_with_joins<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast TableWithJoins<T>)
8172where
8173    V: Visit<'ast, T, > + ?Sized,
8174{
8175    visitor.visit_table_factor(&node.relation);
8176    for v in &node.joins {
8177        visitor.visit_join(v);
8178    }
8179}
8180impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for TargetRoleSpecification<T> {
8181    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8182        visitor.visit_target_role_specification(self)
8183    }
8184}
8185#[allow(clippy::needless_pass_by_ref_mut)]
8186pub fn visit_target_role_specification<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast TargetRoleSpecification<T>)
8187where
8188    V: Visit<'ast, T, > + ?Sized,
8189{
8190    match node {
8191        TargetRoleSpecification::Roles {
8192            0: binding0,
8193        } => {
8194            for v in binding0 {
8195                visitor.visit_role_name(v);
8196            }
8197        }
8198        TargetRoleSpecification::AllRoles {
8199        } => {
8200        }
8201    }
8202}
8203impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for TransactionAccessMode {
8204    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8205        visitor.visit_transaction_access_mode(self)
8206    }
8207}
8208#[allow(clippy::needless_pass_by_ref_mut)]
8209pub fn visit_transaction_access_mode<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast TransactionAccessMode)
8210where
8211    V: Visit<'ast, T, > + ?Sized,
8212{
8213    match node {
8214        TransactionAccessMode::ReadOnly {
8215        } => {
8216        }
8217        TransactionAccessMode::ReadWrite {
8218        } => {
8219        }
8220    }
8221}
8222impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for TransactionIsolationLevel {
8223    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8224        visitor.visit_transaction_isolation_level(self)
8225    }
8226}
8227#[allow(clippy::needless_pass_by_ref_mut)]
8228pub fn visit_transaction_isolation_level<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast TransactionIsolationLevel)
8229where
8230    V: Visit<'ast, T, > + ?Sized,
8231{
8232    match node {
8233        TransactionIsolationLevel::ReadUncommitted {
8234        } => {
8235        }
8236        TransactionIsolationLevel::ReadCommitted {
8237        } => {
8238        }
8239        TransactionIsolationLevel::RepeatableRead {
8240        } => {
8241        }
8242        TransactionIsolationLevel::Serializable {
8243        } => {
8244        }
8245        TransactionIsolationLevel::StrongSessionSerializable {
8246        } => {
8247        }
8248        TransactionIsolationLevel::StrictSerializable {
8249        } => {
8250        }
8251    }
8252}
8253impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for TransactionMode {
8254    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8255        visitor.visit_transaction_mode(self)
8256    }
8257}
8258#[allow(clippy::needless_pass_by_ref_mut)]
8259pub fn visit_transaction_mode<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast TransactionMode)
8260where
8261    V: Visit<'ast, T, > + ?Sized,
8262{
8263    match node {
8264        TransactionMode::AccessMode {
8265            0: binding0,
8266        } => {
8267            visitor.visit_transaction_access_mode(binding0);
8268        }
8269        TransactionMode::IsolationLevel {
8270            0: binding0,
8271        } => {
8272            visitor.visit_transaction_isolation_level(binding0);
8273        }
8274    }
8275}
8276impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for UnresolvedDatabaseName {
8277    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8278        visitor.visit_unresolved_database_name(self)
8279    }
8280}
8281#[allow(clippy::needless_pass_by_ref_mut)]
8282pub fn visit_unresolved_database_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast UnresolvedDatabaseName)
8283where
8284    V: Visit<'ast, T, > + ?Sized,
8285{
8286    visitor.visit_ident(&node.0);
8287}
8288impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for UnresolvedItemName {
8289    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8290        visitor.visit_unresolved_item_name(self)
8291    }
8292}
8293#[allow(clippy::needless_pass_by_ref_mut)]
8294pub fn visit_unresolved_item_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast UnresolvedItemName)
8295where
8296    V: Visit<'ast, T, > + ?Sized,
8297{
8298    for v in &node.0 {
8299        visitor.visit_ident(v);
8300    }
8301}
8302impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for UnresolvedObjectName {
8303    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8304        visitor.visit_unresolved_object_name(self)
8305    }
8306}
8307#[allow(clippy::needless_pass_by_ref_mut)]
8308pub fn visit_unresolved_object_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast UnresolvedObjectName)
8309where
8310    V: Visit<'ast, T, > + ?Sized,
8311{
8312    match node {
8313        UnresolvedObjectName::Cluster {
8314            0: binding0,
8315        } => {
8316            visitor.visit_ident(binding0);
8317        }
8318        UnresolvedObjectName::ClusterReplica {
8319            0: binding0,
8320        } => {
8321            visitor.visit_qualified_replica(binding0);
8322        }
8323        UnresolvedObjectName::Database {
8324            0: binding0,
8325        } => {
8326            visitor.visit_unresolved_database_name(binding0);
8327        }
8328        UnresolvedObjectName::Schema {
8329            0: binding0,
8330        } => {
8331            visitor.visit_unresolved_schema_name(binding0);
8332        }
8333        UnresolvedObjectName::Role {
8334            0: binding0,
8335        } => {
8336            visitor.visit_ident(binding0);
8337        }
8338        UnresolvedObjectName::Item {
8339            0: binding0,
8340        } => {
8341            visitor.visit_unresolved_item_name(binding0);
8342        }
8343        UnresolvedObjectName::NetworkPolicy {
8344            0: binding0,
8345        } => {
8346            visitor.visit_ident(binding0);
8347        }
8348    }
8349}
8350impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for UnresolvedSchemaName {
8351    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8352        visitor.visit_unresolved_schema_name(self)
8353    }
8354}
8355#[allow(clippy::needless_pass_by_ref_mut)]
8356pub fn visit_unresolved_schema_name<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast UnresolvedSchemaName)
8357where
8358    V: Visit<'ast, T, > + ?Sized,
8359{
8360    for v in &node.0 {
8361        visitor.visit_ident(v);
8362    }
8363}
8364impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for UpdateStatement<T> {
8365    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8366        visitor.visit_update_statement(self)
8367    }
8368}
8369#[allow(clippy::needless_pass_by_ref_mut)]
8370pub fn visit_update_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast UpdateStatement<T>)
8371where
8372    V: Visit<'ast, T, > + ?Sized,
8373{
8374    visitor.visit_item_name(&node.table_name);
8375    if let Some(v) = &node.alias {
8376        visitor.visit_table_alias(v);
8377    }
8378    for v in &node.assignments {
8379        visitor.visit_assignment(v);
8380    }
8381    if let Some(v) = &node.selection {
8382        visitor.visit_expr(v);
8383    }
8384}
8385impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ValidateConnectionStatement<T> {
8386    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8387        visitor.visit_validate_connection_statement(self)
8388    }
8389}
8390#[allow(clippy::needless_pass_by_ref_mut)]
8391pub fn visit_validate_connection_statement<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ValidateConnectionStatement<T>)
8392where
8393    V: Visit<'ast, T, > + ?Sized,
8394{
8395    visitor.visit_item_name(&node.name);
8396}
8397impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Value {
8398    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8399        visitor.visit_value(self)
8400    }
8401}
8402#[allow(clippy::needless_pass_by_ref_mut)]
8403pub fn visit_value<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Value)
8404where
8405    V: Visit<'ast, T, > + ?Sized,
8406{
8407    match node {
8408        Value::Number {
8409            0: binding0,
8410        } => {
8411        }
8412        Value::String {
8413            0: binding0,
8414        } => {
8415        }
8416        Value::HexString {
8417            0: binding0,
8418        } => {
8419        }
8420        Value::Boolean {
8421            0: binding0,
8422        } => {
8423        }
8424        Value::Interval {
8425            0: binding0,
8426        } => {
8427            visitor.visit_interval_value(binding0);
8428        }
8429        Value::Null {
8430        } => {
8431        }
8432    }
8433}
8434impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ValueError {
8435    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8436        visitor.visit_value_error(self)
8437    }
8438}
8439#[allow(clippy::needless_pass_by_ref_mut)]
8440pub fn visit_value_error<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ValueError)
8441where
8442    V: Visit<'ast, T, > + ?Sized,
8443{
8444}
8445impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Values<T> {
8446    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8447        visitor.visit_values(self)
8448    }
8449}
8450#[allow(clippy::needless_pass_by_ref_mut)]
8451pub fn visit_values<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Values<T>)
8452where
8453    V: Visit<'ast, T, > + ?Sized,
8454{
8455    for v in &node.0 {
8456        for v in v {
8457            visitor.visit_expr(v);
8458        }
8459    }
8460}
8461impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for Version {
8462    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8463        visitor.visit_version(self)
8464    }
8465}
8466#[allow(clippy::needless_pass_by_ref_mut)]
8467pub fn visit_version<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast Version)
8468where
8469    V: Visit<'ast, T, > + ?Sized,
8470{
8471}
8472impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for ViewDefinition<T> {
8473    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8474        visitor.visit_view_definition(self)
8475    }
8476}
8477#[allow(clippy::needless_pass_by_ref_mut)]
8478pub fn visit_view_definition<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast ViewDefinition<T>)
8479where
8480    V: Visit<'ast, T, > + ?Sized,
8481{
8482    visitor.visit_unresolved_item_name(&node.name);
8483    for v in &node.columns {
8484        visitor.visit_ident(v);
8485    }
8486    visitor.visit_query(&node.query);
8487}
8488impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for WindowFrame {
8489    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8490        visitor.visit_window_frame(self)
8491    }
8492}
8493#[allow(clippy::needless_pass_by_ref_mut)]
8494pub fn visit_window_frame<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast WindowFrame)
8495where
8496    V: Visit<'ast, T, > + ?Sized,
8497{
8498    visitor.visit_window_frame_units(&node.units);
8499    visitor.visit_window_frame_bound(&node.start_bound);
8500    if let Some(v) = &node.end_bound {
8501        visitor.visit_window_frame_bound(v);
8502    }
8503}
8504impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for WindowFrameBound {
8505    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8506        visitor.visit_window_frame_bound(self)
8507    }
8508}
8509#[allow(clippy::needless_pass_by_ref_mut)]
8510pub fn visit_window_frame_bound<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast WindowFrameBound)
8511where
8512    V: Visit<'ast, T, > + ?Sized,
8513{
8514    match node {
8515        WindowFrameBound::CurrentRow {
8516        } => {
8517        }
8518        WindowFrameBound::Preceding {
8519            0: binding0,
8520        } => {
8521            if let Some(v) = binding0 {
8522            }
8523        }
8524        WindowFrameBound::Following {
8525            0: binding0,
8526        } => {
8527            if let Some(v) = binding0 {
8528            }
8529        }
8530    }
8531}
8532impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for WindowFrameUnits {
8533    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8534        visitor.visit_window_frame_units(self)
8535    }
8536}
8537#[allow(clippy::needless_pass_by_ref_mut)]
8538pub fn visit_window_frame_units<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast WindowFrameUnits)
8539where
8540    V: Visit<'ast, T, > + ?Sized,
8541{
8542    match node {
8543        WindowFrameUnits::Rows {
8544        } => {
8545        }
8546        WindowFrameUnits::Range {
8547        } => {
8548        }
8549        WindowFrameUnits::Groups {
8550        } => {
8551        }
8552    }
8553}
8554impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for WindowSpec<T> {
8555    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8556        visitor.visit_window_spec(self)
8557    }
8558}
8559#[allow(clippy::needless_pass_by_ref_mut)]
8560pub fn visit_window_spec<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast WindowSpec<T>)
8561where
8562    V: Visit<'ast, T, > + ?Sized,
8563{
8564    for v in &node.partition_by {
8565        visitor.visit_expr(v);
8566    }
8567    for v in &node.order_by {
8568        visitor.visit_order_by_expr(v);
8569    }
8570    if let Some(v) = &node.window_frame {
8571        visitor.visit_window_frame(v);
8572    }
8573}
8574impl<'ast, T: AstInfo, > VisitNode<'ast, T, > for WithOptionValue<T> {
8575    fn visit<V: Visit<'ast, T, >>(&'ast self, visitor: &mut V) {
8576        visitor.visit_with_option_value(self)
8577    }
8578}
8579#[allow(clippy::needless_pass_by_ref_mut)]
8580pub fn visit_with_option_value<'ast, V, T: AstInfo, >(visitor: &mut V, node: &'ast WithOptionValue<T>)
8581where
8582    V: Visit<'ast, T, > + ?Sized,
8583{
8584    match node {
8585        WithOptionValue::Value {
8586            0: binding0,
8587        } => {
8588            visitor.visit_value(binding0);
8589        }
8590        WithOptionValue::DataType {
8591            0: binding0,
8592        } => {
8593            visitor.visit_data_type(binding0);
8594        }
8595        WithOptionValue::Secret {
8596            0: binding0,
8597        } => {
8598            visitor.visit_item_name(binding0);
8599        }
8600        WithOptionValue::Item {
8601            0: binding0,
8602        } => {
8603            visitor.visit_item_name(binding0);
8604        }
8605        WithOptionValue::UnresolvedItemName {
8606            0: binding0,
8607        } => {
8608            visitor.visit_unresolved_item_name(binding0);
8609        }
8610        WithOptionValue::Ident {
8611            0: binding0,
8612        } => {
8613            visitor.visit_ident(binding0);
8614        }
8615        WithOptionValue::Sequence {
8616            0: binding0,
8617        } => {
8618            for v in binding0 {
8619                visitor.visit_with_option_value(v);
8620            }
8621        }
8622        WithOptionValue::Map {
8623            0: binding0,
8624        } => {
8625            for (_, value) in binding0 {
8626                visitor.visit_with_option_value(value);
8627            }
8628        }
8629        WithOptionValue::Expr {
8630            0: binding0,
8631        } => {
8632            visitor.visit_expr(binding0);
8633        }
8634        WithOptionValue::ClusterReplicas {
8635            0: binding0,
8636        } => {
8637            for v in binding0 {
8638                visitor.visit_replica_definition(v);
8639            }
8640        }
8641        WithOptionValue::ConnectionKafkaBroker {
8642            0: binding0,
8643        } => {
8644            visitor.visit_kafka_broker(binding0);
8645        }
8646        WithOptionValue::ConnectionAwsPrivatelink {
8647            0: binding0,
8648        } => {
8649            visitor.visit_connection_default_aws_privatelink(binding0);
8650        }
8651        WithOptionValue::KafkaMatchingBrokerRule {
8652            0: binding0,
8653        } => {
8654            visitor.visit_kafka_matching_broker_rule(binding0);
8655        }
8656        WithOptionValue::RetainHistoryFor {
8657            0: binding0,
8658        } => {
8659            visitor.visit_value(binding0);
8660        }
8661        WithOptionValue::Refresh {
8662            0: binding0,
8663        } => {
8664            visitor.visit_refresh_option_value(binding0);
8665        }
8666        WithOptionValue::ClusterScheduleOptionValue {
8667            0: binding0,
8668        } => {
8669            visitor.visit_cluster_schedule_option_value(binding0);
8670        }
8671        WithOptionValue::ClusterAlterStrategy {
8672            0: binding0,
8673        } => {
8674            visitor.visit_cluster_alter_option_value(binding0);
8675        }
8676        WithOptionValue::NetworkPolicyRules {
8677            0: binding0,
8678        } => {
8679            for v in binding0 {
8680                visitor.visit_network_policy_rule_definition(v);
8681            }
8682        }
8683    }
8684}