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