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