Skip to main content

squonk_ast/generated/
spanned.rs

1// SPDX-License-Identifier: MIT
2// Copyright (c) 2026 Moderately AI Inc.
3
4//! @generated by `squonk-sourcegen`; do not edit by hand.
5//! Regenerate with `cargo run -p squonk-sourcegen`.
6
7#![allow(clippy::all)]
8
9use crate::ast::*;
10use crate::vocab::Span;
11impl<X: Extension> Spanned for SessionStatement<X> {
12    fn span(&self) -> Span {
13        match self {
14            SessionStatement::Set { meta, .. } => meta.span,
15            SessionStatement::SetTimeZone { meta, .. } => meta.span,
16            SessionStatement::SetRole { meta, .. } => meta.span,
17            SessionStatement::SetSessionAuthorization { meta, .. } => meta.span,
18            SessionStatement::SetConstraints { meta, .. } => meta.span,
19            SessionStatement::SetNames { meta, .. } => meta.span,
20            SessionStatement::SetSessionCharacteristics { meta, .. } => meta.span,
21            SessionStatement::Reset { meta, .. } => meta.span,
22            SessionStatement::Show { meta, .. } => meta.span,
23            SessionStatement::SetVariables { meta, .. } => meta.span,
24            SessionStatement::SetCharacterSet { meta, .. } => meta.span,
25            SessionStatement::SetResourceGroup { meta, .. } => meta.span,
26        }
27    }
28}
29impl<X: Extension> Spanned for SetVariableAssignment<X> {
30    fn span(&self) -> Span {
31        match self {
32            SetVariableAssignment::SystemVariable { meta, .. } => meta.span,
33            SetVariableAssignment::UserVariable { meta, .. } => meta.span,
34        }
35    }
36}
37impl<X: Extension> Spanned for SetVariableValue<X> {
38    fn span(&self) -> Span {
39        match self {
40            SetVariableValue::Default { meta, .. } => meta.span,
41            SetVariableValue::Keyword { meta, .. } => meta.span,
42            SetVariableValue::Expr { meta, .. } => meta.span,
43        }
44    }
45}
46impl Spanned for SetCharacterSetValue {
47    fn span(&self) -> Span {
48        match self {
49            SetCharacterSetValue::Default { meta, .. } => meta.span,
50            SetCharacterSetValue::Charset { meta, .. } => meta.span,
51        }
52    }
53}
54impl Spanned for SetValue {
55    fn span(&self) -> Span {
56        match self {
57            SetValue::Default { meta, .. } => meta.span,
58            SetValue::Values { meta, .. } => meta.span,
59        }
60    }
61}
62impl Spanned for SetParameterValue {
63    fn span(&self) -> Span {
64        match self {
65            SetParameterValue::Literal { meta, .. } => meta.span,
66            SetParameterValue::Name { meta, .. } => meta.span,
67            SetParameterValue::Parameter { meta, .. } => meta.span,
68            SetParameterValue::List { meta, .. } => meta.span,
69        }
70    }
71}
72impl Spanned for SpecialSetValue {
73    fn span(&self) -> Span {
74        match self {
75            SpecialSetValue::Default { meta, .. } => meta.span,
76            SpecialSetValue::Local { meta, .. } => meta.span,
77            SpecialSetValue::None { meta, .. } => meta.span,
78            SpecialSetValue::Value { meta, .. } => meta.span,
79        }
80    }
81}
82impl Spanned for ConstraintsTarget {
83    fn span(&self) -> Span {
84        match self {
85            ConstraintsTarget::All { meta, .. } => meta.span,
86            ConstraintsTarget::Names { meta, .. } => meta.span,
87        }
88    }
89}
90impl Spanned for SetNamesValue {
91    fn span(&self) -> Span {
92        match self {
93            SetNamesValue::Default { meta, .. } => meta.span,
94            SetNamesValue::Charset { meta, .. } => meta.span,
95        }
96    }
97}
98impl Spanned for ConfigParameter {
99    fn span(&self) -> Span {
100        match self {
101            ConfigParameter::All { meta, .. } => meta.span,
102            ConfigParameter::Named { meta, .. } => meta.span,
103        }
104    }
105}
106impl Spanned for AlterSystem {
107    fn span(&self) -> Span {
108        self.meta.span
109    }
110}
111impl Spanned for AlterSystemAction {
112    fn span(&self) -> Span {
113        match self {
114            AlterSystemAction::Set { meta, .. } => meta.span,
115            AlterSystemAction::Reset { meta, .. } => meta.span,
116        }
117    }
118}
119impl<X: Extension> Spanned for AccessControlStatement<X> {
120    fn span(&self) -> Span {
121        match self {
122            AccessControlStatement::AlterRoleRename { meta, .. } => meta.span,
123            AccessControlStatement::Grant { meta, .. } => meta.span,
124            AccessControlStatement::Revoke { meta, .. } => meta.span,
125            AccessControlStatement::GrantRole { meta, .. } => meta.span,
126            AccessControlStatement::RevokeRole { meta, .. } => meta.span,
127            AccessControlStatement::AccountGrantPrivilege { meta, .. } => meta.span,
128            AccessControlStatement::AccountGrantProxy { meta, .. } => meta.span,
129            AccessControlStatement::AccountGrantRole { meta, .. } => meta.span,
130            AccessControlStatement::AccountRevokePrivilege { meta, .. } => meta.span,
131            AccessControlStatement::AccountRevokeAll { meta, .. } => meta.span,
132            AccessControlStatement::AccountRevokeProxy { meta, .. } => meta.span,
133            AccessControlStatement::AccountRevokeRole { meta, .. } => meta.span,
134        }
135    }
136}
137impl Spanned for PrivilegeLevelObject {
138    fn span(&self) -> Span {
139        self.meta.span
140    }
141}
142impl Spanned for PrivilegeLevel {
143    fn span(&self) -> Span {
144        match self {
145            PrivilegeLevel::Global { meta, .. } => meta.span,
146            PrivilegeLevel::CurrentDatabase { meta, .. } => meta.span,
147            PrivilegeLevel::Database { meta, .. } => meta.span,
148            PrivilegeLevel::Object { meta, .. } => meta.span,
149        }
150    }
151}
152impl Spanned for GrantAs {
153    fn span(&self) -> Span {
154        self.meta.span
155    }
156}
157impl Spanned for WithRoleSpec {
158    fn span(&self) -> Span {
159        match self {
160            WithRoleSpec::Roles { meta, .. } => meta.span,
161            WithRoleSpec::All { meta, .. } => meta.span,
162            WithRoleSpec::None { meta, .. } => meta.span,
163            WithRoleSpec::Default { meta, .. } => meta.span,
164        }
165    }
166}
167impl Spanned for Privileges {
168    fn span(&self) -> Span {
169        match self {
170            Privileges::All { meta, .. } => meta.span,
171            Privileges::List { meta, .. } => meta.span,
172        }
173    }
174}
175impl Spanned for Privilege {
176    fn span(&self) -> Span {
177        match self {
178            Privilege::Known { meta, .. } => meta.span,
179            Privilege::Other { meta, .. } => meta.span,
180        }
181    }
182}
183impl<X: Extension> Spanned for GrantObject<X> {
184    fn span(&self) -> Span {
185        match self {
186            GrantObject::Table { meta, .. } => meta.span,
187            GrantObject::Named { meta, .. } => meta.span,
188            GrantObject::Routines { meta, .. } => meta.span,
189            GrantObject::AllInSchema { meta, .. } => meta.span,
190        }
191    }
192}
193impl<X: Extension> Spanned for RoutineSignature<X> {
194    fn span(&self) -> Span {
195        self.meta.span
196    }
197}
198impl Spanned for Grantee {
199    fn span(&self) -> Span {
200        self.meta.span
201    }
202}
203impl Spanned for RoleSpec {
204    fn span(&self) -> Span {
205        match self {
206            RoleSpec::Public { meta, .. } => meta.span,
207            RoleSpec::CurrentRole { meta, .. } => meta.span,
208            RoleSpec::CurrentUser { meta, .. } => meta.span,
209            RoleSpec::SessionUser { meta, .. } => meta.span,
210            RoleSpec::Name { meta, .. } => meta.span,
211        }
212    }
213}
214impl Spanned for CreateUser {
215    fn span(&self) -> Span {
216        self.meta.span
217    }
218}
219impl Spanned for UserSpec {
220    fn span(&self) -> Span {
221        self.meta.span
222    }
223}
224impl Spanned for AuthOption {
225    fn span(&self) -> Span {
226        match self {
227            AuthOption::Password { meta, .. } => meta.span,
228            AuthOption::RandomPassword { meta, .. } => meta.span,
229            AuthOption::Plugin { meta, .. } => meta.span,
230            AuthOption::PluginAs { meta, .. } => meta.span,
231            AuthOption::PluginByPassword { meta, .. } => meta.span,
232            AuthOption::PluginByRandomPassword { meta, .. } => meta.span,
233        }
234    }
235}
236impl Spanned for AlterUser {
237    fn span(&self) -> Span {
238        match self {
239            AlterUser::Modify { meta, .. } => meta.span,
240            AlterUser::DefaultRole { meta, .. } => meta.span,
241        }
242    }
243}
244impl Spanned for AlterUserSpec {
245    fn span(&self) -> Span {
246        self.meta.span
247    }
248}
249impl Spanned for DefaultRoleTarget {
250    fn span(&self) -> Span {
251        match self {
252            DefaultRoleTarget::All { meta, .. } => meta.span,
253            DefaultRoleTarget::None { meta, .. } => meta.span,
254            DefaultRoleTarget::Roles { meta, .. } => meta.span,
255        }
256    }
257}
258impl Spanned for UserRoleList {
259    fn span(&self) -> Span {
260        self.meta.span
261    }
262}
263impl Spanned for TlsRequirement {
264    fn span(&self) -> Span {
265        match self {
266            TlsRequirement::None { meta, .. } => meta.span,
267            TlsRequirement::Ssl { meta, .. } => meta.span,
268            TlsRequirement::X509 { meta, .. } => meta.span,
269            TlsRequirement::Options { meta, .. } => meta.span,
270        }
271    }
272}
273impl Spanned for TlsOption {
274    fn span(&self) -> Span {
275        match self {
276            TlsOption::Subject { meta, .. } => meta.span,
277            TlsOption::Issuer { meta, .. } => meta.span,
278            TlsOption::Cipher { meta, .. } => meta.span,
279        }
280    }
281}
282impl Spanned for ResourceLimit {
283    fn span(&self) -> Span {
284        match self {
285            ResourceLimit::MaxQueriesPerHour { meta, .. } => meta.span,
286            ResourceLimit::MaxUpdatesPerHour { meta, .. } => meta.span,
287            ResourceLimit::MaxConnectionsPerHour { meta, .. } => meta.span,
288            ResourceLimit::MaxUserConnections { meta, .. } => meta.span,
289        }
290    }
291}
292impl Spanned for PasswordLockOption {
293    fn span(&self) -> Span {
294        match self {
295            PasswordLockOption::AccountLock { meta, .. } => meta.span,
296            PasswordLockOption::AccountUnlock { meta, .. } => meta.span,
297            PasswordLockOption::PasswordExpire { meta, .. } => meta.span,
298            PasswordLockOption::PasswordExpireDefault { meta, .. } => meta.span,
299            PasswordLockOption::PasswordExpireNever { meta, .. } => meta.span,
300            PasswordLockOption::PasswordExpireInterval { meta, .. } => meta.span,
301            PasswordLockOption::PasswordHistory { meta, .. } => meta.span,
302            PasswordLockOption::PasswordHistoryDefault { meta, .. } => meta.span,
303            PasswordLockOption::PasswordReuseInterval { meta, .. } => meta.span,
304            PasswordLockOption::PasswordReuseIntervalDefault { meta, .. } => meta.span,
305            PasswordLockOption::PasswordRequireCurrent { meta, .. } => meta.span,
306            PasswordLockOption::PasswordRequireCurrentDefault { meta, .. } => meta.span,
307            PasswordLockOption::PasswordRequireCurrentOptional { meta, .. } => meta.span,
308            PasswordLockOption::FailedLoginAttempts { meta, .. } => meta.span,
309            PasswordLockOption::PasswordLockTime { meta, .. } => meta.span,
310            PasswordLockOption::PasswordLockTimeUnbounded { meta, .. } => meta.span,
311        }
312    }
313}
314impl Spanned for UserAttribute {
315    fn span(&self) -> Span {
316        match self {
317            UserAttribute::Comment { meta, .. } => meta.span,
318            UserAttribute::Attribute { meta, .. } => meta.span,
319        }
320    }
321}
322impl<X: Extension> Spanned for CreateTable<X> {
323    fn span(&self) -> Span {
324        self.meta.span
325    }
326}
327impl<X: Extension> Spanned for CreateTableBody<X> {
328    fn span(&self) -> Span {
329        match self {
330            CreateTableBody::Definition { meta, .. } => meta.span,
331            CreateTableBody::AsQuery { meta, .. } => meta.span,
332            CreateTableBody::AsExecute { meta, .. } => meta.span,
333            CreateTableBody::PartitionOf { meta, .. } => meta.span,
334            CreateTableBody::OfType { meta, .. } => meta.span,
335            CreateTableBody::LikeSource { meta, .. } => meta.span,
336        }
337    }
338}
339impl<X: Extension> Spanned for PartitionSpec<X> {
340    fn span(&self) -> Span {
341        self.meta.span
342    }
343}
344impl<X: Extension> Spanned for PartitionElem<X> {
345    fn span(&self) -> Span {
346        self.meta.span
347    }
348}
349impl<X: Extension> Spanned for PartitionBound<X> {
350    fn span(&self) -> Span {
351        match self {
352            PartitionBound::List { meta, .. } => meta.span,
353            PartitionBound::Range { meta, .. } => meta.span,
354            PartitionBound::Hash { meta, .. } => meta.span,
355            PartitionBound::Default { meta, .. } => meta.span,
356        }
357    }
358}
359impl<X: Extension> Spanned for TableElement<X> {
360    fn span(&self) -> Span {
361        match self {
362            TableElement::Column { meta, .. } => meta.span,
363            TableElement::Constraint { meta, .. } => meta.span,
364            TableElement::Like { meta, .. } => meta.span,
365        }
366    }
367}
368impl Spanned for TableLikeOption {
369    fn span(&self) -> Span {
370        self.meta.span
371    }
372}
373impl<X: Extension> Spanned for ColumnDef<X> {
374    fn span(&self) -> Span {
375        self.meta.span
376    }
377}
378impl<X: Extension> Spanned for ColumnConstraint<X> {
379    fn span(&self) -> Span {
380        self.meta.span
381    }
382}
383impl Spanned for ConstraintCharacteristics {
384    fn span(&self) -> Span {
385        self.meta.span
386    }
387}
388impl<X: Extension> Spanned for ColumnOption<X> {
389    fn span(&self) -> Span {
390        match self {
391            ColumnOption::Null { meta, .. } => meta.span,
392            ColumnOption::NotNull { meta, .. } => meta.span,
393            ColumnOption::Default { meta, .. } => meta.span,
394            ColumnOption::Generated { meta, .. } => meta.span,
395            ColumnOption::Identity { meta, .. } => meta.span,
396            ColumnOption::PrimaryKey { meta, .. } => meta.span,
397            ColumnOption::Unique { meta, .. } => meta.span,
398            ColumnOption::AutoIncrement { meta, .. } => meta.span,
399            ColumnOption::Collate { meta, .. } => meta.span,
400            ColumnOption::Check { meta, .. } => meta.span,
401            ColumnOption::References { meta, .. } => meta.span,
402            ColumnOption::Bare { meta, .. } => meta.span,
403            ColumnOption::Other { meta, .. } => meta.span,
404        }
405    }
406}
407impl Spanned for ForeignKeyRef {
408    fn span(&self) -> Span {
409        self.meta.span
410    }
411}
412impl Spanned for ReferentialAction {
413    fn span(&self) -> Span {
414        match self {
415            ReferentialAction::NoAction { meta, .. } => meta.span,
416            ReferentialAction::Restrict { meta, .. } => meta.span,
417            ReferentialAction::Cascade { meta, .. } => meta.span,
418            ReferentialAction::SetNull { meta, .. } => meta.span,
419            ReferentialAction::SetDefault { meta, .. } => meta.span,
420        }
421    }
422}
423impl<X: Extension> Spanned for GeneratedColumn<X> {
424    fn span(&self) -> Span {
425        self.meta.span
426    }
427}
428impl<X: Extension> Spanned for IdentityColumn<X> {
429    fn span(&self) -> Span {
430        self.meta.span
431    }
432}
433impl<X: Extension> Spanned for IdentityOption<X> {
434    fn span(&self) -> Span {
435        match self {
436            IdentityOption::StartWith { meta, .. } => meta.span,
437            IdentityOption::IncrementBy { meta, .. } => meta.span,
438            IdentityOption::MinValue { meta, .. } => meta.span,
439            IdentityOption::MaxValue { meta, .. } => meta.span,
440            IdentityOption::Cache { meta, .. } => meta.span,
441            IdentityOption::Cycle { meta, .. } => meta.span,
442        }
443    }
444}
445impl<X: Extension> Spanned for TableConstraintDef<X> {
446    fn span(&self) -> Span {
447        self.meta.span
448    }
449}
450impl<X: Extension> Spanned for TableConstraint<X> {
451    fn span(&self) -> Span {
452        match self {
453            TableConstraint::PrimaryKey { meta, .. } => meta.span,
454            TableConstraint::Unique { meta, .. } => meta.span,
455            TableConstraint::Check { meta, .. } => meta.span,
456            TableConstraint::Exclude { meta, .. } => meta.span,
457            TableConstraint::ForeignKey { meta, .. } => meta.span,
458            TableConstraint::Bare { meta, .. } => meta.span,
459            TableConstraint::Other { meta, .. } => meta.span,
460        }
461    }
462}
463impl<X: Extension> Spanned for ExcludeConstraint<X> {
464    fn span(&self) -> Span {
465        self.meta.span
466    }
467}
468impl<X: Extension> Spanned for ExcludeElement<X> {
469    fn span(&self) -> Span {
470        self.meta.span
471    }
472}
473impl<X: Extension> Spanned for CreateTableOption<X> {
474    fn span(&self) -> Span {
475        self.meta.span
476    }
477}
478impl<X: Extension> Spanned for CreateTableOptionKind<X> {
479    fn span(&self) -> Span {
480        match self {
481            CreateTableOptionKind::ColocateWith { meta, .. } => meta.span,
482            CreateTableOptionKind::InColocationGroup { meta, .. } => meta.span,
483            CreateTableOptionKind::With { meta, .. } => meta.span,
484            CreateTableOptionKind::OnCommit { meta, .. } => meta.span,
485            CreateTableOptionKind::Tablespace { meta, .. } => meta.span,
486            CreateTableOptionKind::KeyValue { meta, .. } => meta.span,
487            CreateTableOptionKind::WithoutRowid { meta, .. } => meta.span,
488            CreateTableOptionKind::Strict { meta, .. } => meta.span,
489            CreateTableOptionKind::WithoutOids { meta, .. } => meta.span,
490        }
491    }
492}
493impl Spanned for TableOption {
494    fn span(&self) -> Span {
495        self.meta.span
496    }
497}
498impl Spanned for TableOptionValue {
499    fn span(&self) -> Span {
500        match self {
501            TableOptionValue::Word { meta, .. } => meta.span,
502            TableOptionValue::String { meta, .. } => meta.span,
503            TableOptionValue::Number { meta, .. } => meta.span,
504        }
505    }
506}
507impl<X: Extension> Spanned for TableStorageParameter<X> {
508    fn span(&self) -> Span {
509        self.meta.span
510    }
511}
512impl<X: Extension> Spanned for AlterTable<X> {
513    fn span(&self) -> Span {
514        self.meta.span
515    }
516}
517impl Spanned for AlterColumnTarget {
518    fn span(&self) -> Span {
519        self.meta.span
520    }
521}
522impl<X: Extension> Spanned for AlterTableAction<X> {
523    fn span(&self) -> Span {
524        match self {
525            AlterTableAction::SetColocationGroup { meta, .. } => meta.span,
526            AlterTableAction::DropColocationGroup { meta, .. } => meta.span,
527            AlterTableAction::AddColumn { meta, .. } => meta.span,
528            AlterTableAction::DropColumn { meta, .. } => meta.span,
529            AlterTableAction::AlterColumn { meta, .. } => meta.span,
530            AlterTableAction::AddConstraint { meta, .. } => meta.span,
531            AlterTableAction::DropConstraint { meta, .. } => meta.span,
532            AlterTableAction::DropPrimaryKey { meta, .. } => meta.span,
533            AlterTableAction::SetOptions { meta, .. } => meta.span,
534            AlterTableAction::RenameColumn { meta, .. } => meta.span,
535            AlterTableAction::RenameConstraint { meta, .. } => meta.span,
536            AlterTableAction::RenameTable { meta, .. } => meta.span,
537            AlterTableAction::AttachPartition { meta, .. } => meta.span,
538            AlterTableAction::DetachPartition { meta, .. } => meta.span,
539        }
540    }
541}
542impl<X: Extension> Spanned for AlterColumnAction<X> {
543    fn span(&self) -> Span {
544        match self {
545            AlterColumnAction::SetDefault { meta, .. } => meta.span,
546            AlterColumnAction::DropDefault { meta, .. } => meta.span,
547            AlterColumnAction::SetNotNull { meta, .. } => meta.span,
548            AlterColumnAction::DropNotNull { meta, .. } => meta.span,
549            AlterColumnAction::AddIdentity { meta, .. } => meta.span,
550            AlterColumnAction::SetDataType { meta, .. } => meta.span,
551        }
552    }
553}
554impl Spanned for DropStatement {
555    fn span(&self) -> Span {
556        self.meta.span
557    }
558}
559impl<X: Extension> Spanned for DropTransform<X> {
560    fn span(&self) -> Span {
561        self.meta.span
562    }
563}
564impl<X: Extension> Spanned for CommentOnStatement<X> {
565    fn span(&self) -> Span {
566        self.meta.span
567    }
568}
569impl<X: Extension> Spanned for CreateSchema<X> {
570    fn span(&self) -> Span {
571        self.meta.span
572    }
573}
574impl<X: Extension> Spanned for CreateView<X> {
575    fn span(&self) -> Span {
576        self.meta.span
577    }
578}
579impl Spanned for RefreshMaterializedView {
580    fn span(&self) -> Span {
581        self.meta.span
582    }
583}
584impl Spanned for CreateColocationGroup {
585    fn span(&self) -> Span {
586        self.meta.span
587    }
588}
589impl Spanned for DropColocationGroup {
590    fn span(&self) -> Span {
591        self.meta.span
592    }
593}
594impl<X: Extension> Spanned for AlterView<X> {
595    fn span(&self) -> Span {
596        self.meta.span
597    }
598}
599impl<X: Extension> Spanned for CreateSecret<X> {
600    fn span(&self) -> Span {
601        self.meta.span
602    }
603}
604impl<X: Extension> Spanned for SecretOption<X> {
605    fn span(&self) -> Span {
606        self.meta.span
607    }
608}
609impl Spanned for DropSecretStmt {
610    fn span(&self) -> Span {
611        self.meta.span
612    }
613}
614impl Spanned for CreateVirtualTable {
615    fn span(&self) -> Span {
616        self.meta.span
617    }
618}
619impl Spanned for ModuleArg {
620    fn span(&self) -> Span {
621        self.meta.span
622    }
623}
624impl<X: Extension> Spanned for CreateIndex<X> {
625    fn span(&self) -> Span {
626        self.meta.span
627    }
628}
629impl<X: Extension> Spanned for IndexColumn<X> {
630    fn span(&self) -> Span {
631        self.meta.span
632    }
633}
634impl<X: Extension> Spanned for CreateTrigger<X> {
635    fn span(&self) -> Span {
636        self.meta.span
637    }
638}
639impl Spanned for TriggerEvent {
640    fn span(&self) -> Span {
641        match self {
642            TriggerEvent::Delete { meta, .. } => meta.span,
643            TriggerEvent::Insert { meta, .. } => meta.span,
644            TriggerEvent::Update { meta, .. } => meta.span,
645        }
646    }
647}
648impl<X: Extension> Spanned for CreateStoredTrigger<X> {
649    fn span(&self) -> Span {
650        self.meta.span
651    }
652}
653impl Spanned for TriggerOrder {
654    fn span(&self) -> Span {
655        match self {
656            TriggerOrder::Follows { meta, .. } => meta.span,
657            TriggerOrder::Precedes { meta, .. } => meta.span,
658        }
659    }
660}
661impl Spanned for CreateDatabase {
662    fn span(&self) -> Span {
663        self.meta.span
664    }
665}
666impl<X: Extension> Spanned for CreateFunction<X> {
667    fn span(&self) -> Span {
668        self.meta.span
669    }
670}
671impl<X: Extension> Spanned for FunctionParam<X> {
672    fn span(&self) -> Span {
673        self.meta.span
674    }
675}
676impl<X: Extension> Spanned for FunctionParamDefault<X> {
677    fn span(&self) -> Span {
678        self.meta.span
679    }
680}
681impl<X: Extension> Spanned for FunctionOption<X> {
682    fn span(&self) -> Span {
683        match self {
684            FunctionOption::Language { meta, .. } => meta.span,
685            FunctionOption::As { meta, .. } => meta.span,
686            FunctionOption::NullBehavior { meta, .. } => meta.span,
687            FunctionOption::Deterministic { meta, .. } => meta.span,
688            FunctionOption::DataAccess { meta, .. } => meta.span,
689            FunctionOption::SqlSecurity { meta, .. } => meta.span,
690            FunctionOption::Comment { meta, .. } => meta.span,
691        }
692    }
693}
694impl<X: Extension> Spanned for FunctionBody<X> {
695    fn span(&self) -> Span {
696        match self {
697            FunctionBody::Definition { meta, .. } => meta.span,
698            FunctionBody::Return { meta, .. } => meta.span,
699            FunctionBody::Block { meta, .. } => meta.span,
700        }
701    }
702}
703impl Spanned for Definer {
704    fn span(&self) -> Span {
705        match self {
706            Definer::Account { meta, .. } => meta.span,
707            Definer::CurrentUser { meta, .. } => meta.span,
708        }
709    }
710}
711impl<X: Extension> Spanned for CreateProcedure<X> {
712    fn span(&self) -> Span {
713        self.meta.span
714    }
715}
716impl<X: Extension> Spanned for AlterRoutine<X> {
717    fn span(&self) -> Span {
718        self.meta.span
719    }
720}
721impl<X: Extension> Spanned for EventSchedule<X> {
722    fn span(&self) -> Span {
723        match self {
724            EventSchedule::At { meta, .. } => meta.span,
725            EventSchedule::Every { meta, .. } => meta.span,
726        }
727    }
728}
729impl<X: Extension> Spanned for CreateEvent<X> {
730    fn span(&self) -> Span {
731        self.meta.span
732    }
733}
734impl<X: Extension> Spanned for AlterEvent<X> {
735    fn span(&self) -> Span {
736        self.meta.span
737    }
738}
739impl Spanned for DropEvent {
740    fn span(&self) -> Span {
741        self.meta.span
742    }
743}
744impl Spanned for DropDatabase {
745    fn span(&self) -> Span {
746        self.meta.span
747    }
748}
749impl Spanned for DropIndexOnTable {
750    fn span(&self) -> Span {
751        self.meta.span
752    }
753}
754impl<X: Extension> Spanned for CreateMacro<X> {
755    fn span(&self) -> Span {
756        self.meta.span
757    }
758}
759impl<X: Extension> Spanned for MacroParam<X> {
760    fn span(&self) -> Span {
761        self.meta.span
762    }
763}
764impl<X: Extension> Spanned for MacroBody<X> {
765    fn span(&self) -> Span {
766        match self {
767            MacroBody::Scalar { meta, .. } => meta.span,
768            MacroBody::Table { meta, .. } => meta.span,
769        }
770    }
771}
772impl<X: Extension> Spanned for CreateType<X> {
773    fn span(&self) -> Span {
774        self.meta.span
775    }
776}
777impl<X: Extension> Spanned for CreateTypeDefinition<X> {
778    fn span(&self) -> Span {
779        match self {
780            CreateTypeDefinition::Enum { meta, .. } => meta.span,
781            CreateTypeDefinition::EnumFromQuery { meta, .. } => meta.span,
782            CreateTypeDefinition::Alias { meta, .. } => meta.span,
783        }
784    }
785}
786impl<X: Extension> Spanned for CreateSequence<X> {
787    fn span(&self) -> Span {
788        self.meta.span
789    }
790}
791impl Spanned for CreateExtension {
792    fn span(&self) -> Span {
793        self.meta.span
794    }
795}
796impl Spanned for CreateExtensionOption {
797    fn span(&self) -> Span {
798        match self {
799            CreateExtensionOption::Schema { meta, .. } => meta.span,
800            CreateExtensionOption::Version { meta, .. } => meta.span,
801            CreateExtensionOption::Cascade { meta, .. } => meta.span,
802        }
803    }
804}
805impl Spanned for ExtensionVersion {
806    fn span(&self) -> Span {
807        match self {
808            ExtensionVersion::Word { meta, .. } => meta.span,
809            ExtensionVersion::String { meta, .. } => meta.span,
810        }
811    }
812}
813impl<X: Extension> Spanned for AlterExtension<X> {
814    fn span(&self) -> Span {
815        self.meta.span
816    }
817}
818impl<X: Extension> Spanned for AlterExtensionAction<X> {
819    fn span(&self) -> Span {
820        match self {
821            AlterExtensionAction::Update { meta, .. } => meta.span,
822            AlterExtensionAction::Change { meta, .. } => meta.span,
823        }
824    }
825}
826impl Spanned for AlterDatabase {
827    fn span(&self) -> Span {
828        self.meta.span
829    }
830}
831impl Spanned for AlterDatabaseAction {
832    fn span(&self) -> Span {
833        match self {
834            AlterDatabaseAction::SetAlias { meta, .. } => meta.span,
835        }
836    }
837}
838impl<X: Extension> Spanned for AlterSequence<X> {
839    fn span(&self) -> Span {
840        self.meta.span
841    }
842}
843impl<X: Extension> Spanned for AlterSequenceOption<X> {
844    fn span(&self) -> Span {
845        match self {
846            AlterSequenceOption::Common { meta, .. } => meta.span,
847            AlterSequenceOption::Restart { meta, .. } => meta.span,
848            AlterSequenceOption::As { meta, .. } => meta.span,
849            AlterSequenceOption::OwnedBy { meta, .. } => meta.span,
850            AlterSequenceOption::SequenceName { meta, .. } => meta.span,
851        }
852    }
853}
854impl Spanned for AlterObjectSchema {
855    fn span(&self) -> Span {
856        self.meta.span
857    }
858}
859impl<X: Extension> Spanned for ObjectReference<X> {
860    fn span(&self) -> Span {
861        match self {
862            ObjectReference::Named { meta, .. } => meta.span,
863            ObjectReference::Routine { meta, .. } => meta.span,
864            ObjectReference::Aggregate { meta, .. } => meta.span,
865            ObjectReference::Operator { meta, .. } => meta.span,
866            ObjectReference::OperatorClass { meta, .. } => meta.span,
867            ObjectReference::Cast { meta, .. } => meta.span,
868            ObjectReference::Type { meta, .. } => meta.span,
869            ObjectReference::Transform { meta, .. } => meta.span,
870            ObjectReference::Trigger { meta, .. } => meta.span,
871        }
872    }
873}
874impl<X: Extension> Spanned for AggregateArgs<X> {
875    fn span(&self) -> Span {
876        match self {
877            AggregateArgs::Star { meta, .. } => meta.span,
878            AggregateArgs::Types { meta, .. } => meta.span,
879        }
880    }
881}
882impl<X: Extension> Spanned for OperatorArgs<X> {
883    fn span(&self) -> Span {
884        self.meta.span
885    }
886}
887impl<X: Extension> Spanned for AlterObjectDepends<X> {
888    fn span(&self) -> Span {
889        self.meta.span
890    }
891}
892impl Spanned for CreateServer {
893    fn span(&self) -> Span {
894        self.meta.span
895    }
896}
897impl Spanned for AlterServer {
898    fn span(&self) -> Span {
899        self.meta.span
900    }
901}
902impl Spanned for DropServer {
903    fn span(&self) -> Span {
904        self.meta.span
905    }
906}
907impl Spanned for ServerOption {
908    fn span(&self) -> Span {
909        self.meta.span
910    }
911}
912impl Spanned for AlterInstance {
913    fn span(&self) -> Span {
914        self.meta.span
915    }
916}
917impl Spanned for AlterInstanceAction {
918    fn span(&self) -> Span {
919        match self {
920            AlterInstanceAction::RotateInnodbMasterKey { meta, .. } => meta.span,
921            AlterInstanceAction::RotateBinlogMasterKey { meta, .. } => meta.span,
922            AlterInstanceAction::ReloadTls { meta, .. } => meta.span,
923            AlterInstanceAction::ReloadKeyring { meta, .. } => meta.span,
924            AlterInstanceAction::EnableInnodbRedoLog { meta, .. } => meta.span,
925            AlterInstanceAction::DisableInnodbRedoLog { meta, .. } => meta.span,
926        }
927    }
928}
929impl Spanned for CreateSpatialReferenceSystem {
930    fn span(&self) -> Span {
931        self.meta.span
932    }
933}
934impl Spanned for SrsAttribute {
935    fn span(&self) -> Span {
936        match self {
937            SrsAttribute::Name { meta, .. } => meta.span,
938            SrsAttribute::Definition { meta, .. } => meta.span,
939            SrsAttribute::Organization { meta, .. } => meta.span,
940            SrsAttribute::Description { meta, .. } => meta.span,
941        }
942    }
943}
944impl Spanned for DropSpatialReferenceSystem {
945    fn span(&self) -> Span {
946        self.meta.span
947    }
948}
949impl Spanned for CreateResourceGroup {
950    fn span(&self) -> Span {
951        self.meta.span
952    }
953}
954impl Spanned for AlterResourceGroup {
955    fn span(&self) -> Span {
956        self.meta.span
957    }
958}
959impl Spanned for DropResourceGroup {
960    fn span(&self) -> Span {
961        self.meta.span
962    }
963}
964impl Spanned for ResourceGroupVcpu {
965    fn span(&self) -> Span {
966        self.meta.span
967    }
968}
969impl Spanned for VcpuRange {
970    fn span(&self) -> Span {
971        self.meta.span
972    }
973}
974impl Spanned for ResourceGroupThreadPriority {
975    fn span(&self) -> Span {
976        self.meta.span
977    }
978}
979impl Spanned for AlterDatabaseOptions {
980    fn span(&self) -> Span {
981        self.meta.span
982    }
983}
984impl Spanned for AlterDatabaseOption {
985    fn span(&self) -> Span {
986        match self {
987            AlterDatabaseOption::CharacterSet { meta, .. } => meta.span,
988            AlterDatabaseOption::Collate { meta, .. } => meta.span,
989            AlterDatabaseOption::Encryption { meta, .. } => meta.span,
990            AlterDatabaseOption::ReadOnly { meta, .. } => meta.span,
991        }
992    }
993}
994impl Spanned for SizeLiteral {
995    fn span(&self) -> Span {
996        self.meta.span
997    }
998}
999impl Spanned for TablespaceOption {
1000    fn span(&self) -> Span {
1001        match self {
1002            TablespaceOption::Size { meta, .. } => meta.span,
1003            TablespaceOption::Nodegroup { meta, .. } => meta.span,
1004            TablespaceOption::Engine { meta, .. } => meta.span,
1005            TablespaceOption::Wait { meta, .. } => meta.span,
1006            TablespaceOption::Comment { meta, .. } => meta.span,
1007            TablespaceOption::Encryption { meta, .. } => meta.span,
1008            TablespaceOption::EngineAttribute { meta, .. } => meta.span,
1009        }
1010    }
1011}
1012impl Spanned for CreateTablespace {
1013    fn span(&self) -> Span {
1014        self.meta.span
1015    }
1016}
1017impl Spanned for AlterTablespace {
1018    fn span(&self) -> Span {
1019        self.meta.span
1020    }
1021}
1022impl Spanned for AlterTablespaceAction {
1023    fn span(&self) -> Span {
1024        match self {
1025            AlterTablespaceAction::AddDatafile { meta, .. } => meta.span,
1026            AlterTablespaceAction::DropDatafile { meta, .. } => meta.span,
1027            AlterTablespaceAction::Rename { meta, .. } => meta.span,
1028            AlterTablespaceAction::Options { meta, .. } => meta.span,
1029            AlterTablespaceAction::SetState { meta, .. } => meta.span,
1030        }
1031    }
1032}
1033impl Spanned for DropTablespace {
1034    fn span(&self) -> Span {
1035        self.meta.span
1036    }
1037}
1038impl Spanned for CreateLogfileGroup {
1039    fn span(&self) -> Span {
1040        self.meta.span
1041    }
1042}
1043impl Spanned for AlterLogfileGroup {
1044    fn span(&self) -> Span {
1045        self.meta.span
1046    }
1047}
1048impl Spanned for DropLogfileGroup {
1049    fn span(&self) -> Span {
1050        self.meta.span
1051    }
1052}
1053impl<X: Extension> Spanned for Insert<X> {
1054    fn span(&self) -> Span {
1055        self.meta.span
1056    }
1057}
1058impl Spanned for InsertTarget {
1059    fn span(&self) -> Span {
1060        self.meta.span
1061    }
1062}
1063impl<X: Extension> Spanned for InsertSource<X> {
1064    fn span(&self) -> Span {
1065        match self {
1066            InsertSource::DefaultValues { meta, .. } => meta.span,
1067            InsertSource::Values { meta, .. } => meta.span,
1068            InsertSource::Query { meta, .. } => meta.span,
1069            InsertSource::Set { meta, .. } => meta.span,
1070        }
1071    }
1072}
1073impl<X: Extension> Spanned for InsertValues<X> {
1074    fn span(&self) -> Span {
1075        self.meta.span
1076    }
1077}
1078impl<X: Extension> Spanned for InsertValue<X> {
1079    fn span(&self) -> Span {
1080        match self {
1081            InsertValue::Expr { meta, .. } => meta.span,
1082            InsertValue::Default { meta, .. } => meta.span,
1083        }
1084    }
1085}
1086impl Spanned for DmlTarget {
1087    fn span(&self) -> Span {
1088        self.meta.span
1089    }
1090}
1091impl<X: Extension> Spanned for Update<X> {
1092    fn span(&self) -> Span {
1093        self.meta.span
1094    }
1095}
1096impl<X: Extension> Spanned for UpdateAssignment<X> {
1097    fn span(&self) -> Span {
1098        match self {
1099            UpdateAssignment::Single { meta, .. } => meta.span,
1100            UpdateAssignment::Tuple { meta, .. } => meta.span,
1101        }
1102    }
1103}
1104impl<X: Extension> Spanned for UpdateValue<X> {
1105    fn span(&self) -> Span {
1106        match self {
1107            UpdateValue::Expr { meta, .. } => meta.span,
1108            UpdateValue::Default { meta, .. } => meta.span,
1109        }
1110    }
1111}
1112impl<X: Extension> Spanned for UpdateTupleSource<X> {
1113    fn span(&self) -> Span {
1114        match self {
1115            UpdateTupleSource::Row { meta, .. } => meta.span,
1116            UpdateTupleSource::Subquery { meta, .. } => meta.span,
1117            UpdateTupleSource::Default { meta, .. } => meta.span,
1118        }
1119    }
1120}
1121impl<X: Extension> Spanned for Delete<X> {
1122    fn span(&self) -> Span {
1123        self.meta.span
1124    }
1125}
1126impl<X: Extension> Spanned for DmlSelection<X> {
1127    fn span(&self) -> Span {
1128        match self {
1129            DmlSelection::Where { meta, .. } => meta.span,
1130            DmlSelection::CurrentOf { meta, .. } => meta.span,
1131        }
1132    }
1133}
1134impl Spanned for DefaultValue {
1135    fn span(&self) -> Span {
1136        self.meta.span
1137    }
1138}
1139impl<X: Extension> Spanned for Returning<X> {
1140    fn span(&self) -> Span {
1141        self.meta.span
1142    }
1143}
1144impl<X: Extension> Spanned for Upsert<X> {
1145    fn span(&self) -> Span {
1146        match self {
1147            Upsert::OnConflict { meta, .. } => meta.span,
1148            Upsert::OnDuplicateKeyUpdate { meta, .. } => meta.span,
1149        }
1150    }
1151}
1152impl<X: Extension> Spanned for OnConflict<X> {
1153    fn span(&self) -> Span {
1154        self.meta.span
1155    }
1156}
1157impl<X: Extension> Spanned for ConflictTarget<X> {
1158    fn span(&self) -> Span {
1159        match self {
1160            ConflictTarget::Index { meta, .. } => meta.span,
1161            ConflictTarget::Constraint { meta, .. } => meta.span,
1162        }
1163    }
1164}
1165impl<X: Extension> Spanned for ConflictAction<X> {
1166    fn span(&self) -> Span {
1167        match self {
1168            ConflictAction::Nothing { meta, .. } => meta.span,
1169            ConflictAction::Update { meta, .. } => meta.span,
1170        }
1171    }
1172}
1173impl<X: Extension> Spanned for Merge<X> {
1174    fn span(&self) -> Span {
1175        self.meta.span
1176    }
1177}
1178impl<X: Extension> Spanned for MergeWhenClause<X> {
1179    fn span(&self) -> Span {
1180        self.meta.span
1181    }
1182}
1183impl<X: Extension> Spanned for MergeAction<X> {
1184    fn span(&self) -> Span {
1185        match self {
1186            MergeAction::Insert { meta, .. } => meta.span,
1187            MergeAction::InsertDefault { meta, .. } => meta.span,
1188            MergeAction::Update { meta, .. } => meta.span,
1189            MergeAction::UpdateStar { meta, .. } => meta.span,
1190            MergeAction::InsertStar { meta, .. } => meta.span,
1191            MergeAction::InsertByName { meta, .. } => meta.span,
1192            MergeAction::Error { meta, .. } => meta.span,
1193            MergeAction::Delete { meta, .. } => meta.span,
1194            MergeAction::DoNothing { meta, .. } => meta.span,
1195        }
1196    }
1197}
1198impl<X: Extension> Spanned for Expr<X> {
1199    fn span(&self) -> Span {
1200        match self {
1201            Expr::Column { meta, .. } => meta.span,
1202            Expr::Literal { meta, .. } => meta.span,
1203            Expr::BinaryOp { meta, .. } => meta.span,
1204            Expr::UnaryOp { meta, .. } => meta.span,
1205            Expr::Function { meta, .. } => meta.span,
1206            Expr::Case { meta, .. } => meta.span,
1207            Expr::Extract { meta, .. } => meta.span,
1208            Expr::Cast { meta, .. } => meta.span,
1209            Expr::IsNull { meta, .. } => meta.span,
1210            Expr::IsTruth { meta, .. } => meta.span,
1211            Expr::IsNormalized { meta, .. } => meta.span,
1212            Expr::Between { meta, .. } => meta.span,
1213            Expr::Like { meta, .. } => meta.span,
1214            Expr::InList { meta, .. } => meta.span,
1215            Expr::InSubquery { meta, .. } => meta.span,
1216            Expr::InExpr { meta, .. } => meta.span,
1217            Expr::Exists { meta, .. } => meta.span,
1218            Expr::QuantifiedComparison { meta, .. } => meta.span,
1219            Expr::QuantifiedList { meta, .. } => meta.span,
1220            Expr::QuantifiedLike { meta, .. } => meta.span,
1221            Expr::Subquery { meta, .. } => meta.span,
1222            Expr::Parameter { meta, .. } => meta.span,
1223            Expr::PositionalColumn { meta, .. } => meta.span,
1224            Expr::SessionVariable { meta, .. } => meta.span,
1225            Expr::Subscript { meta, .. } => meta.span,
1226            Expr::SemiStructuredAccess { meta, .. } => meta.span,
1227            Expr::Collate { meta, .. } => meta.span,
1228            Expr::Interval { meta, .. } => meta.span,
1229            Expr::AtTimeZone { meta, .. } => meta.span,
1230            Expr::Array { meta, .. } => meta.span,
1231            Expr::Struct { meta, .. } => meta.span,
1232            Expr::StructConstructor { meta, .. } => meta.span,
1233            Expr::Map { meta, .. } => meta.span,
1234            Expr::Row { meta, .. } => meta.span,
1235            Expr::FieldSelection { meta, .. } => meta.span,
1236            Expr::NamedOperator { meta, .. } => meta.span,
1237            Expr::PrefixOperator { meta, .. } => meta.span,
1238            Expr::PostfixOperator { meta, .. } => meta.span,
1239            Expr::Lambda { meta, .. } => meta.span,
1240            Expr::Columns { meta, .. } => meta.span,
1241            Expr::SpecialFunction { meta, .. } => meta.span,
1242            Expr::JsonFunc { meta, .. } => meta.span,
1243            Expr::JsonObject { meta, .. } => meta.span,
1244            Expr::JsonArray { meta, .. } => meta.span,
1245            Expr::JsonAggregate { meta, .. } => meta.span,
1246            Expr::JsonConstructor { meta, .. } => meta.span,
1247            Expr::IsJson { meta, .. } => meta.span,
1248            Expr::XmlFunc { meta, .. } => meta.span,
1249            Expr::IsDocument { meta, .. } => meta.span,
1250            Expr::StringFunc { meta, .. } => meta.span,
1251            Expr::Other { meta, .. } => meta.span,
1252        }
1253    }
1254}
1255impl<X: Extension> Spanned for SubscriptExpr<X> {
1256    fn span(&self) -> Span {
1257        self.meta.span
1258    }
1259}
1260impl<X: Extension> Spanned for SemiStructuredAccessExpr<X> {
1261    fn span(&self) -> Span {
1262        self.meta.span
1263    }
1264}
1265impl<X: Extension> Spanned for SemiStructuredPathSegment<X> {
1266    fn span(&self) -> Span {
1267        match self {
1268            SemiStructuredPathSegment::Key { meta, .. } => meta.span,
1269            SemiStructuredPathSegment::Index { meta, .. } => meta.span,
1270        }
1271    }
1272}
1273impl<X: Extension> Spanned for CollateExpr<X> {
1274    fn span(&self) -> Span {
1275        self.meta.span
1276    }
1277}
1278impl<X: Extension> Spanned for AtTimeZoneExpr<X> {
1279    fn span(&self) -> Span {
1280        self.meta.span
1281    }
1282}
1283impl<X: Extension> Spanned for ArrayExpr<X> {
1284    fn span(&self) -> Span {
1285        match self {
1286            ArrayExpr::Elements { meta, .. } => meta.span,
1287            ArrayExpr::Subquery { meta, .. } => meta.span,
1288            ArrayExpr::Comprehension { meta, .. } => meta.span,
1289        }
1290    }
1291}
1292impl<X: Extension> Spanned for ListComprehension<X> {
1293    fn span(&self) -> Span {
1294        self.meta.span
1295    }
1296}
1297impl<X: Extension> Spanned for ComprehensionSource<X> {
1298    fn span(&self) -> Span {
1299        match self {
1300            ComprehensionSource::Expr { meta, .. } => meta.span,
1301            ComprehensionSource::Star { meta, .. } => meta.span,
1302        }
1303    }
1304}
1305impl<X: Extension> Spanned for StructExpr<X> {
1306    fn span(&self) -> Span {
1307        self.meta.span
1308    }
1309}
1310impl<X: Extension> Spanned for StructField<X> {
1311    fn span(&self) -> Span {
1312        self.meta.span
1313    }
1314}
1315impl<X: Extension> Spanned for StructConstructorExpr<X> {
1316    fn span(&self) -> Span {
1317        self.meta.span
1318    }
1319}
1320impl<X: Extension> Spanned for StructConstructorField<X> {
1321    fn span(&self) -> Span {
1322        self.meta.span
1323    }
1324}
1325impl<X: Extension> Spanned for StructConstructorArg<X> {
1326    fn span(&self) -> Span {
1327        self.meta.span
1328    }
1329}
1330impl<X: Extension> Spanned for MapExpr<X> {
1331    fn span(&self) -> Span {
1332        self.meta.span
1333    }
1334}
1335impl<X: Extension> Spanned for MapEntry<X> {
1336    fn span(&self) -> Span {
1337        self.meta.span
1338    }
1339}
1340impl<X: Extension> Spanned for RowExpr<X> {
1341    fn span(&self) -> Span {
1342        self.meta.span
1343    }
1344}
1345impl<X: Extension> Spanned for FieldSelectionExpr<X> {
1346    fn span(&self) -> Span {
1347        self.meta.span
1348    }
1349}
1350impl Spanned for FieldSelector {
1351    fn span(&self) -> Span {
1352        match self {
1353            FieldSelector::Field { meta, .. } => meta.span,
1354            FieldSelector::Star { meta, .. } => meta.span,
1355        }
1356    }
1357}
1358impl<X: Extension> Spanned for NamedOperatorExpr<X> {
1359    fn span(&self) -> Span {
1360        self.meta.span
1361    }
1362}
1363impl<X: Extension> Spanned for PrefixOperatorExpr<X> {
1364    fn span(&self) -> Span {
1365        self.meta.span
1366    }
1367}
1368impl<X: Extension> Spanned for PostfixOperatorExpr<X> {
1369    fn span(&self) -> Span {
1370        self.meta.span
1371    }
1372}
1373impl<X: Extension> Spanned for LambdaExpr<X> {
1374    fn span(&self) -> Span {
1375        self.meta.span
1376    }
1377}
1378impl<X: Extension> Spanned for FunctionCall<X> {
1379    fn span(&self) -> Span {
1380        self.meta.span
1381    }
1382}
1383impl<X: Extension> Spanned for FunctionArg<X> {
1384    fn span(&self) -> Span {
1385        self.meta.span
1386    }
1387}
1388impl<X: Extension> Spanned for CaseExpr<X> {
1389    fn span(&self) -> Span {
1390        self.meta.span
1391    }
1392}
1393impl<X: Extension> Spanned for WhenClause<X> {
1394    fn span(&self) -> Span {
1395        self.meta.span
1396    }
1397}
1398impl<X: Extension> Spanned for ExtractExpr<X> {
1399    fn span(&self) -> Span {
1400        self.meta.span
1401    }
1402}
1403impl<X: Extension> Spanned for JsonValueExpr<X> {
1404    fn span(&self) -> Span {
1405        self.meta.span
1406    }
1407}
1408impl<X: Extension> Spanned for JsonReturning<X> {
1409    fn span(&self) -> Span {
1410        self.meta.span
1411    }
1412}
1413impl<X: Extension> Spanned for JsonPassingArg<X> {
1414    fn span(&self) -> Span {
1415        self.meta.span
1416    }
1417}
1418impl<X: Extension> Spanned for JsonBehavior<X> {
1419    fn span(&self) -> Span {
1420        self.meta.span
1421    }
1422}
1423impl<X: Extension> Spanned for JsonFuncExpr<X> {
1424    fn span(&self) -> Span {
1425        self.meta.span
1426    }
1427}
1428impl<X: Extension> Spanned for JsonKeyValue<X> {
1429    fn span(&self) -> Span {
1430        self.meta.span
1431    }
1432}
1433impl<X: Extension> Spanned for JsonObjectExpr<X> {
1434    fn span(&self) -> Span {
1435        self.meta.span
1436    }
1437}
1438impl<X: Extension> Spanned for JsonArrayBody<X> {
1439    fn span(&self) -> Span {
1440        match self {
1441            JsonArrayBody::Values { meta, .. } => meta.span,
1442            JsonArrayBody::Query { meta, .. } => meta.span,
1443        }
1444    }
1445}
1446impl<X: Extension> Spanned for JsonArrayExpr<X> {
1447    fn span(&self) -> Span {
1448        self.meta.span
1449    }
1450}
1451impl<X: Extension> Spanned for JsonAggregateBody<X> {
1452    fn span(&self) -> Span {
1453        match self {
1454            JsonAggregateBody::Object { meta, .. } => meta.span,
1455            JsonAggregateBody::Array { meta, .. } => meta.span,
1456        }
1457    }
1458}
1459impl<X: Extension> Spanned for JsonAggregateExpr<X> {
1460    fn span(&self) -> Span {
1461        self.meta.span
1462    }
1463}
1464impl<X: Extension> Spanned for JsonConstructorExpr<X> {
1465    fn span(&self) -> Span {
1466        self.meta.span
1467    }
1468}
1469impl<X: Extension> Spanned for IsJsonExpr<X> {
1470    fn span(&self) -> Span {
1471        self.meta.span
1472    }
1473}
1474impl<X: Extension> Spanned for XmlFunc<X> {
1475    fn span(&self) -> Span {
1476        match self {
1477            XmlFunc::Element { meta, .. } => meta.span,
1478            XmlFunc::Forest { meta, .. } => meta.span,
1479            XmlFunc::Concat { meta, .. } => meta.span,
1480            XmlFunc::Parse { meta, .. } => meta.span,
1481            XmlFunc::Pi { meta, .. } => meta.span,
1482            XmlFunc::Root { meta, .. } => meta.span,
1483            XmlFunc::Serialize { meta, .. } => meta.span,
1484            XmlFunc::Exists { meta, .. } => meta.span,
1485        }
1486    }
1487}
1488impl<X: Extension> Spanned for XmlAttribute<X> {
1489    fn span(&self) -> Span {
1490        self.meta.span
1491    }
1492}
1493impl<X: Extension> Spanned for StringFunc<X> {
1494    fn span(&self) -> Span {
1495        match self {
1496            StringFunc::Substring { meta, .. } => meta.span,
1497            StringFunc::SubstringSimilar { meta, .. } => meta.span,
1498            StringFunc::Position { meta, .. } => meta.span,
1499            StringFunc::Overlay { meta, .. } => meta.span,
1500            StringFunc::Trim { meta, .. } => meta.span,
1501            StringFunc::CollationFor { meta, .. } => meta.span,
1502            StringFunc::ConvertUsing { meta, .. } => meta.span,
1503            StringFunc::MatchAgainst { meta, .. } => meta.span,
1504            StringFunc::CeilTo { meta, .. } => meta.span,
1505            StringFunc::FloorTo { meta, .. } => meta.span,
1506        }
1507    }
1508}
1509impl Spanned for Ident {
1510    fn span(&self) -> Span {
1511        self.meta.span
1512    }
1513}
1514impl Spanned for ObjectName {
1515    fn span(&self) -> Span {
1516        self.0
1517            .iter()
1518            .fold(Span::SYNTHETIC, |acc, item| acc.union(item.span()))
1519    }
1520}
1521impl Spanned for Literal {
1522    fn span(&self) -> Span {
1523        self.meta.span
1524    }
1525}
1526impl<X: Extension> Spanned for MatchRecognize<X> {
1527    fn span(&self) -> Span {
1528        self.meta.span
1529    }
1530}
1531impl<X: Extension> Spanned for Measure<X> {
1532    fn span(&self) -> Span {
1533        self.meta.span
1534    }
1535}
1536impl Spanned for AfterMatchSkip {
1537    fn span(&self) -> Span {
1538        match self {
1539            AfterMatchSkip::PastLastRow { meta, .. } => meta.span,
1540            AfterMatchSkip::ToNextRow { meta, .. } => meta.span,
1541            AfterMatchSkip::ToFirst { meta, .. } => meta.span,
1542            AfterMatchSkip::ToLast { meta, .. } => meta.span,
1543        }
1544    }
1545}
1546impl Spanned for SubsetDefinition {
1547    fn span(&self) -> Span {
1548        self.meta.span
1549    }
1550}
1551impl<X: Extension> Spanned for SymbolDefinition<X> {
1552    fn span(&self) -> Span {
1553        self.meta.span
1554    }
1555}
1556impl Spanned for MatchRecognizePattern {
1557    fn span(&self) -> Span {
1558        match self {
1559            MatchRecognizePattern::Symbol { meta, .. } => meta.span,
1560            MatchRecognizePattern::Start { meta, .. } => meta.span,
1561            MatchRecognizePattern::End { meta, .. } => meta.span,
1562            MatchRecognizePattern::Concat { meta, .. } => meta.span,
1563            MatchRecognizePattern::Alternation { meta, .. } => meta.span,
1564            MatchRecognizePattern::Group { meta, .. } => meta.span,
1565            MatchRecognizePattern::Exclude { meta, .. } => meta.span,
1566            MatchRecognizePattern::Permute { meta, .. } => meta.span,
1567            MatchRecognizePattern::Repetition { meta, .. } => meta.span,
1568        }
1569    }
1570}
1571impl<X: Extension> Spanned for PipeOperator<X> {
1572    fn span(&self) -> Span {
1573        match self {
1574            PipeOperator::Where { meta, .. } => meta.span,
1575            PipeOperator::Select { meta, .. } => meta.span,
1576            PipeOperator::Extend { meta, .. } => meta.span,
1577            PipeOperator::As { meta, .. } => meta.span,
1578            PipeOperator::OrderBy { meta, .. } => meta.span,
1579            PipeOperator::Limit { meta, .. } => meta.span,
1580            PipeOperator::Join { meta, .. } => meta.span,
1581            PipeOperator::SetOperation { meta, .. } => meta.span,
1582            PipeOperator::Set { meta, .. } => meta.span,
1583            PipeOperator::Call { meta, .. } => meta.span,
1584            PipeOperator::Aggregate { meta, .. } => meta.span,
1585            PipeOperator::Drop { meta, .. } => meta.span,
1586            PipeOperator::Rename { meta, .. } => meta.span,
1587            PipeOperator::Pivot { meta, .. } => meta.span,
1588            PipeOperator::Unpivot { meta, .. } => meta.span,
1589            PipeOperator::TableSample { meta, .. } => meta.span,
1590        }
1591    }
1592}
1593impl<X: Extension> Spanned for PipeAggregateExpr<X> {
1594    fn span(&self) -> Span {
1595        self.meta.span
1596    }
1597}
1598impl Spanned for PipeRenameItem {
1599    fn span(&self) -> Span {
1600        self.meta.span
1601    }
1602}
1603impl<X: Extension> Spanned for Pivot<X> {
1604    fn span(&self) -> Span {
1605        self.meta.span
1606    }
1607}
1608impl<X: Extension> Spanned for Unpivot<X> {
1609    fn span(&self) -> Span {
1610        self.meta.span
1611    }
1612}
1613impl<X: Extension> Spanned for PivotExpr<X> {
1614    fn span(&self) -> Span {
1615        self.meta.span
1616    }
1617}
1618impl<X: Extension> Spanned for PivotColumn<X> {
1619    fn span(&self) -> Span {
1620        self.meta.span
1621    }
1622}
1623impl<X: Extension> Spanned for PivotValueSource<X> {
1624    fn span(&self) -> Span {
1625        match self {
1626            PivotValueSource::Any { meta, .. } => meta.span,
1627            PivotValueSource::Subquery { meta, .. } => meta.span,
1628        }
1629    }
1630}
1631impl<X: Extension> Spanned for UnpivotColumn<X> {
1632    fn span(&self) -> Span {
1633        self.meta.span
1634    }
1635}
1636impl<X: Extension> Spanned for Query<X> {
1637    fn span(&self) -> Span {
1638        self.meta.span
1639    }
1640}
1641impl Spanned for LockingClause {
1642    fn span(&self) -> Span {
1643        self.meta.span
1644    }
1645}
1646impl<X: Extension> Spanned for SetExpr<X> {
1647    fn span(&self) -> Span {
1648        match self {
1649            SetExpr::Select { meta, .. } => meta.span,
1650            SetExpr::Values { meta, .. } => meta.span,
1651            SetExpr::Query { meta, .. } => meta.span,
1652            SetExpr::SetOperation { meta, .. } => meta.span,
1653            SetExpr::Pivot { meta, .. } => meta.span,
1654            SetExpr::Unpivot { meta, .. } => meta.span,
1655        }
1656    }
1657}
1658impl<X: Extension> Spanned for With<X> {
1659    fn span(&self) -> Span {
1660        self.meta.span
1661    }
1662}
1663impl<X: Extension> Spanned for Cte<X> {
1664    fn span(&self) -> Span {
1665        self.meta.span
1666    }
1667}
1668impl Spanned for CteSearchClause {
1669    fn span(&self) -> Span {
1670        self.meta.span
1671    }
1672}
1673impl<X: Extension> Spanned for CteCycleClause<X> {
1674    fn span(&self) -> Span {
1675        self.meta.span
1676    }
1677}
1678impl<X: Extension> Spanned for CteCycleMark<X> {
1679    fn span(&self) -> Span {
1680        self.meta.span
1681    }
1682}
1683impl<X: Extension> Spanned for CteBody<X> {
1684    fn span(&self) -> Span {
1685        match self {
1686            CteBody::Query { meta, .. } => meta.span,
1687            CteBody::Insert { meta, .. } => meta.span,
1688            CteBody::Update { meta, .. } => meta.span,
1689            CteBody::Delete { meta, .. } => meta.span,
1690            CteBody::Merge { meta, .. } => meta.span,
1691        }
1692    }
1693}
1694impl<X: Extension> Spanned for Values<X> {
1695    fn span(&self) -> Span {
1696        self.meta.span
1697    }
1698}
1699impl<X: Extension> Spanned for ValuesItem<X> {
1700    fn span(&self) -> Span {
1701        match self {
1702            ValuesItem::Expr { meta, .. } => meta.span,
1703            ValuesItem::Default { meta, .. } => meta.span,
1704        }
1705    }
1706}
1707impl<X: Extension> Spanned for Select<X> {
1708    fn span(&self) -> Span {
1709        self.meta.span
1710    }
1711}
1712impl Spanned for IntoTarget {
1713    fn span(&self) -> Span {
1714        self.meta.span
1715    }
1716}
1717impl<X: Extension> Spanned for GroupByItem<X> {
1718    fn span(&self) -> Span {
1719        match self {
1720            GroupByItem::Expr { meta, .. } => meta.span,
1721            GroupByItem::Rollup { meta, .. } => meta.span,
1722            GroupByItem::Cube { meta, .. } => meta.span,
1723            GroupByItem::GroupingSets { meta, .. } => meta.span,
1724            GroupByItem::Empty { meta, .. } => meta.span,
1725        }
1726    }
1727}
1728impl<X: Extension> Spanned for SelectItem<X> {
1729    fn span(&self) -> Span {
1730        match self {
1731            SelectItem::Wildcard { meta, .. } => meta.span,
1732            SelectItem::QualifiedWildcard { meta, .. } => meta.span,
1733            SelectItem::Expr { meta, .. } => meta.span,
1734        }
1735    }
1736}
1737impl<X: Extension> Spanned for WildcardOptions<X> {
1738    fn span(&self) -> Span {
1739        self.meta.span
1740    }
1741}
1742impl<X: Extension> Spanned for WildcardReplace<X> {
1743    fn span(&self) -> Span {
1744        self.meta.span
1745    }
1746}
1747impl Spanned for WildcardRename {
1748    fn span(&self) -> Span {
1749        self.meta.span
1750    }
1751}
1752impl<X: Extension> Spanned for SelectDistinct<X> {
1753    fn span(&self) -> Span {
1754        match self {
1755            SelectDistinct::Quantifier { meta, .. } => meta.span,
1756            SelectDistinct::On { meta, .. } => meta.span,
1757        }
1758    }
1759}
1760impl<X: Extension> Spanned for TableWithJoins<X> {
1761    fn span(&self) -> Span {
1762        self.meta.span
1763    }
1764}
1765impl Spanned for TableAlias {
1766    fn span(&self) -> Span {
1767        self.meta.span
1768    }
1769}
1770impl<X: Extension> Spanned for TableSample<X> {
1771    fn span(&self) -> Span {
1772        self.meta.span
1773    }
1774}
1775impl<X: Extension> Spanned for TableVersion<X> {
1776    fn span(&self) -> Span {
1777        match self {
1778            TableVersion::ForSystemTimeAsOf { meta, .. } => meta.span,
1779            TableVersion::ForSystemTimeFromTo { meta, .. } => meta.span,
1780            TableVersion::ForSystemTimeBetween { meta, .. } => meta.span,
1781            TableVersion::ForSystemTimeContainedIn { meta, .. } => meta.span,
1782            TableVersion::ForSystemTimeAll { meta, .. } => meta.span,
1783            TableVersion::VersionAsOf { meta, .. } => meta.span,
1784            TableVersion::TimestampAsOf { meta, .. } => meta.span,
1785        }
1786    }
1787}
1788impl Spanned for SampleClause {
1789    fn span(&self) -> Span {
1790        self.meta.span
1791    }
1792}
1793impl<X: Extension> Spanned for TableFunctionColumn<X> {
1794    fn span(&self) -> Span {
1795        self.meta.span
1796    }
1797}
1798impl<X: Extension> Spanned for RowsFromItem<X> {
1799    fn span(&self) -> Span {
1800        self.meta.span
1801    }
1802}
1803impl Spanned for IndexHint {
1804    fn span(&self) -> Span {
1805        self.meta.span
1806    }
1807}
1808impl Spanned for IndexedBy {
1809    fn span(&self) -> Span {
1810        match self {
1811            IndexedBy::Named { meta, .. } => meta.span,
1812            IndexedBy::NotIndexed { meta, .. } => meta.span,
1813        }
1814    }
1815}
1816impl Spanned for TableHint {
1817    fn span(&self) -> Span {
1818        match self {
1819            TableHint::Keyword { meta, .. } => meta.span,
1820            TableHint::Index { meta, .. } => meta.span,
1821            TableHint::ForceSeek { meta, .. } => meta.span,
1822            TableHint::Other { meta, .. } => meta.span,
1823        }
1824    }
1825}
1826impl Spanned for ForceSeekTarget {
1827    fn span(&self) -> Span {
1828        self.meta.span
1829    }
1830}
1831impl<X: Extension> Spanned for TableFactor<X> {
1832    fn span(&self) -> Span {
1833        match self {
1834            TableFactor::Table { meta, .. } => meta.span,
1835            TableFactor::Derived { meta, .. } => meta.span,
1836            TableFactor::Function { meta, .. } => meta.span,
1837            TableFactor::RowsFrom { meta, .. } => meta.span,
1838            TableFactor::Unnest { meta, .. } => meta.span,
1839            TableFactor::NestedJoin { meta, .. } => meta.span,
1840            TableFactor::SpecialFunction { meta, .. } => meta.span,
1841            TableFactor::Pivot { meta, .. } => meta.span,
1842            TableFactor::Unpivot { meta, .. } => meta.span,
1843            TableFactor::MatchRecognize { meta, .. } => meta.span,
1844            TableFactor::ShowRef { meta, .. } => meta.span,
1845            TableFactor::JsonTable { meta, .. } => meta.span,
1846            TableFactor::XmlTable { meta, .. } => meta.span,
1847            TableFactor::OpenJson { meta, .. } => meta.span,
1848            TableFactor::TableExpr { meta, .. } => meta.span,
1849            TableFactor::Other { meta, .. } => meta.span,
1850        }
1851    }
1852}
1853impl<X: Extension> Spanned for ShowRef<X> {
1854    fn span(&self) -> Span {
1855        self.meta.span
1856    }
1857}
1858impl<X: Extension> Spanned for ShowRefTarget<X> {
1859    fn span(&self) -> Span {
1860        match self {
1861            ShowRefTarget::Empty { meta, .. } => meta.span,
1862            ShowRefTarget::Query { meta, .. } => meta.span,
1863            ShowRefTarget::Name { meta, .. } => meta.span,
1864        }
1865    }
1866}
1867impl<X: Extension> Spanned for JsonTable<X> {
1868    fn span(&self) -> Span {
1869        self.meta.span
1870    }
1871}
1872impl<X: Extension> Spanned for JsonTableColumn<X> {
1873    fn span(&self) -> Span {
1874        match self {
1875            JsonTableColumn::ForOrdinality { meta, .. } => meta.span,
1876            JsonTableColumn::Regular { meta, .. } => meta.span,
1877            JsonTableColumn::Exists { meta, .. } => meta.span,
1878            JsonTableColumn::Nested { meta, .. } => meta.span,
1879        }
1880    }
1881}
1882impl<X: Extension> Spanned for XmlTable<X> {
1883    fn span(&self) -> Span {
1884        self.meta.span
1885    }
1886}
1887impl<X: Extension> Spanned for XmlNamespace<X> {
1888    fn span(&self) -> Span {
1889        self.meta.span
1890    }
1891}
1892impl<X: Extension> Spanned for XmlTableColumn<X> {
1893    fn span(&self) -> Span {
1894        match self {
1895            XmlTableColumn::ForOrdinality { meta, .. } => meta.span,
1896            XmlTableColumn::Regular { meta, .. } => meta.span,
1897        }
1898    }
1899}
1900impl<X: Extension> Spanned for OpenJson<X> {
1901    fn span(&self) -> Span {
1902        self.meta.span
1903    }
1904}
1905impl<X: Extension> Spanned for OpenJsonColumn<X> {
1906    fn span(&self) -> Span {
1907        self.meta.span
1908    }
1909}
1910impl<X: Extension> Spanned for Join<X> {
1911    fn span(&self) -> Span {
1912        self.meta.span
1913    }
1914}
1915impl<X: Extension> Spanned for JoinOperator<X> {
1916    fn span(&self) -> Span {
1917        match self {
1918            JoinOperator::Inner { meta, .. } => meta.span,
1919            JoinOperator::LeftOuter { meta, .. } => meta.span,
1920            JoinOperator::RightOuter { meta, .. } => meta.span,
1921            JoinOperator::FullOuter { meta, .. } => meta.span,
1922            JoinOperator::AsOf { meta, .. } => meta.span,
1923            JoinOperator::Cross { meta, .. } => meta.span,
1924            JoinOperator::Positional { meta, .. } => meta.span,
1925            JoinOperator::Semi { meta, .. } => meta.span,
1926            JoinOperator::Anti { meta, .. } => meta.span,
1927            JoinOperator::Apply { meta, .. } => meta.span,
1928        }
1929    }
1930}
1931impl<X: Extension> Spanned for JoinConstraint<X> {
1932    fn span(&self) -> Span {
1933        match self {
1934            JoinConstraint::On { meta, .. } => meta.span,
1935            JoinConstraint::Using { meta, .. } => meta.span,
1936            JoinConstraint::Natural { meta, .. } => meta.span,
1937            JoinConstraint::None { meta, .. } => meta.span,
1938        }
1939    }
1940}
1941impl<X: Extension> Spanned for OrderByExpr<X> {
1942    fn span(&self) -> Span {
1943        self.meta.span
1944    }
1945}
1946impl Spanned for OrderByUsing {
1947    fn span(&self) -> Span {
1948        self.meta.span
1949    }
1950}
1951impl Spanned for OrderByAll {
1952    fn span(&self) -> Span {
1953        self.meta.span
1954    }
1955}
1956impl<X: Extension> Spanned for Limit<X> {
1957    fn span(&self) -> Span {
1958        self.meta.span
1959    }
1960}
1961impl<X: Extension> Spanned for LimitBy<X> {
1962    fn span(&self) -> Span {
1963        self.meta.span
1964    }
1965}
1966impl<X: Extension> Spanned for Setting<X> {
1967    fn span(&self) -> Span {
1968        self.meta.span
1969    }
1970}
1971impl Spanned for FormatClause {
1972    fn span(&self) -> Span {
1973        self.meta.span
1974    }
1975}
1976impl Spanned for ForClause {
1977    fn span(&self) -> Span {
1978        match self {
1979            ForClause::Xml { meta, .. } => meta.span,
1980            ForClause::Json { meta, .. } => meta.span,
1981        }
1982    }
1983}
1984impl Spanned for ForXmlMode {
1985    fn span(&self) -> Span {
1986        match self {
1987            ForXmlMode::Raw { meta, .. } => meta.span,
1988            ForXmlMode::Auto { meta, .. } => meta.span,
1989            ForXmlMode::Explicit { meta, .. } => meta.span,
1990            ForXmlMode::Path { meta, .. } => meta.span,
1991        }
1992    }
1993}
1994impl Spanned for ForRoot {
1995    fn span(&self) -> Span {
1996        self.meta.span
1997    }
1998}
1999impl<X: Extension> Spanned for LateralView<X> {
2000    fn span(&self) -> Span {
2001        self.meta.span
2002    }
2003}
2004impl<X: Extension> Spanned for HierarchicalClause<X> {
2005    fn span(&self) -> Span {
2006        self.meta.span
2007    }
2008}
2009impl Spanned for ReplicationStatement {
2010    fn span(&self) -> Span {
2011        match self {
2012            ReplicationStatement::ChangeSource { meta, .. } => meta.span,
2013            ReplicationStatement::ChangeFilter { meta, .. } => meta.span,
2014            ReplicationStatement::StartReplica { meta, .. } => meta.span,
2015            ReplicationStatement::StopReplica { meta, .. } => meta.span,
2016            ReplicationStatement::StartGroupReplication { meta, .. } => meta.span,
2017            ReplicationStatement::StopGroupReplication { meta, .. } => meta.span,
2018        }
2019    }
2020}
2021impl Spanned for ChangeReplicationSourceOption {
2022    fn span(&self) -> Span {
2023        self.meta.span
2024    }
2025}
2026impl Spanned for ChangeReplicationSourceOptionValue {
2027    fn span(&self) -> Span {
2028        match self {
2029            ChangeReplicationSourceOptionValue::String { meta, .. } => meta.span,
2030            ChangeReplicationSourceOptionValue::Number { meta, .. } => meta.span,
2031            ChangeReplicationSourceOptionValue::NullableString { meta, .. } => meta.span,
2032            ChangeReplicationSourceOptionValue::User { meta, .. } => meta.span,
2033            ChangeReplicationSourceOptionValue::ServerIds { meta, .. } => meta.span,
2034            ChangeReplicationSourceOptionValue::PrimaryKeyCheck { meta, .. } => meta.span,
2035            ChangeReplicationSourceOptionValue::AssignGtids { meta, .. } => meta.span,
2036        }
2037    }
2038}
2039impl Spanned for ReplicationFilterRule {
2040    fn span(&self) -> Span {
2041        match self {
2042            ReplicationFilterRule::DoDb { meta, .. } => meta.span,
2043            ReplicationFilterRule::IgnoreDb { meta, .. } => meta.span,
2044            ReplicationFilterRule::DoTable { meta, .. } => meta.span,
2045            ReplicationFilterRule::IgnoreTable { meta, .. } => meta.span,
2046            ReplicationFilterRule::WildDoTable { meta, .. } => meta.span,
2047            ReplicationFilterRule::WildIgnoreTable { meta, .. } => meta.span,
2048            ReplicationFilterRule::RewriteDb { meta, .. } => meta.span,
2049        }
2050    }
2051}
2052impl Spanned for RewriteDbPair {
2053    fn span(&self) -> Span {
2054        self.meta.span
2055    }
2056}
2057impl Spanned for ReplicaThreadOption {
2058    fn span(&self) -> Span {
2059        match self {
2060            ReplicaThreadOption::Sql { meta, .. } => meta.span,
2061            ReplicaThreadOption::Io { meta, .. } => meta.span,
2062        }
2063    }
2064}
2065impl Spanned for ReplicaUntilCondition {
2066    fn span(&self) -> Span {
2067        match self {
2068            ReplicaUntilCondition::SourceLogFile { meta, .. } => meta.span,
2069            ReplicaUntilCondition::SourceLogPos { meta, .. } => meta.span,
2070            ReplicaUntilCondition::RelayLogFile { meta, .. } => meta.span,
2071            ReplicaUntilCondition::RelayLogPos { meta, .. } => meta.span,
2072            ReplicaUntilCondition::SqlBeforeGtids { meta, .. } => meta.span,
2073            ReplicaUntilCondition::SqlAfterGtids { meta, .. } => meta.span,
2074            ReplicaUntilCondition::SqlAfterMtsGaps { meta, .. } => meta.span,
2075        }
2076    }
2077}
2078impl Spanned for GroupReplicationOption {
2079    fn span(&self) -> Span {
2080        match self {
2081            GroupReplicationOption::User { meta, .. } => meta.span,
2082            GroupReplicationOption::Password { meta, .. } => meta.span,
2083            GroupReplicationOption::DefaultAuth { meta, .. } => meta.span,
2084        }
2085    }
2086}
2087impl<X: Extension> Spanned for Statement<X> {
2088    fn span(&self) -> Span {
2089        match self {
2090            Statement::Query { meta, .. } => meta.span,
2091            Statement::CreateTable { meta, .. } => meta.span,
2092            Statement::AlterTable { meta, .. } => meta.span,
2093            Statement::Drop { meta, .. } => meta.span,
2094            Statement::CreateSchema { meta, .. } => meta.span,
2095            Statement::CreateView { meta, .. } => meta.span,
2096            Statement::RefreshMaterializedView { meta, .. } => meta.span,
2097            Statement::CreateColocationGroup { meta, .. } => meta.span,
2098            Statement::DropColocationGroup { meta, .. } => meta.span,
2099            Statement::AlterView { meta, .. } => meta.span,
2100            Statement::CreateIndex { meta, .. } => meta.span,
2101            Statement::CreateFunction { meta, .. } => meta.span,
2102            Statement::CreateProcedure { meta, .. } => meta.span,
2103            Statement::AlterRoutine { meta, .. } => meta.span,
2104            Statement::CreateEvent { meta, .. } => meta.span,
2105            Statement::AlterEvent { meta, .. } => meta.span,
2106            Statement::DropEvent { meta, .. } => meta.span,
2107            Statement::DropDatabase { meta, .. } => meta.span,
2108            Statement::DropIndex { meta, .. } => meta.span,
2109            Statement::CreateDatabase { meta, .. } => meta.span,
2110            Statement::DropRoutine { meta, .. } => meta.span,
2111            Statement::DropTransform { meta, .. } => meta.span,
2112            Statement::Truncate { meta, .. } => meta.span,
2113            Statement::CommentOn { meta, .. } => meta.span,
2114            Statement::Insert { meta, .. } => meta.span,
2115            Statement::Update { meta, .. } => meta.span,
2116            Statement::Delete { meta, .. } => meta.span,
2117            Statement::Merge { meta, .. } => meta.span,
2118            Statement::Transaction { meta, .. } => meta.span,
2119            Statement::Xa { meta, .. } => meta.span,
2120            Statement::Session { meta, .. } => meta.span,
2121            Statement::AccessControl { meta, .. } => meta.span,
2122            Statement::Copy { meta, .. } => meta.span,
2123            Statement::CopyInto { meta, .. } => meta.span,
2124            Statement::Export { meta, .. } => meta.span,
2125            Statement::Import { meta, .. } => meta.span,
2126            Statement::Explain { meta, .. } => meta.span,
2127            Statement::Describe { meta, .. } => meta.span,
2128            Statement::Show { meta, .. } => meta.span,
2129            Statement::Kill { meta, .. } => meta.span,
2130            Statement::Handler { meta, .. } => meta.span,
2131            Statement::Install { meta, .. } => meta.span,
2132            Statement::Uninstall { meta, .. } => meta.span,
2133            Statement::Shutdown { meta, .. } => meta.span,
2134            Statement::Restart { meta, .. } => meta.span,
2135            Statement::Clone { meta, .. } => meta.span,
2136            Statement::ImportTable { meta, .. } => meta.span,
2137            Statement::Help { meta, .. } => meta.span,
2138            Statement::Binlog { meta, .. } => meta.span,
2139            Statement::Pragma { meta, .. } => meta.span,
2140            Statement::Attach { meta, .. } => meta.span,
2141            Statement::Detach { meta, .. } => meta.span,
2142            Statement::Checkpoint { meta, .. } => meta.span,
2143            Statement::Load { meta, .. } => meta.span,
2144            Statement::LoadData { meta, .. } => meta.span,
2145            Statement::UpdateExtensions { meta, .. } => meta.span,
2146            Statement::Vacuum { meta, .. } => meta.span,
2147            Statement::Reindex { meta, .. } => meta.span,
2148            Statement::Analyze { meta, .. } => meta.span,
2149            Statement::TableMaintenance { meta, .. } => meta.span,
2150            Statement::CacheIndex { meta, .. } => meta.span,
2151            Statement::LoadIndex { meta, .. } => meta.span,
2152            Statement::Rename { meta, .. } => meta.span,
2153            Statement::Flush { meta, .. } => meta.span,
2154            Statement::Purge { meta, .. } => meta.span,
2155            Statement::Replication { meta, .. } => meta.span,
2156            Statement::CreateUser { meta, .. } => meta.span,
2157            Statement::AlterUser { meta, .. } => meta.span,
2158            Statement::UserRoleList { meta, .. } => meta.span,
2159            Statement::Use { meta, .. } => meta.span,
2160            Statement::CreateTrigger { meta, .. } => meta.span,
2161            Statement::CreateStoredTrigger { meta, .. } => meta.span,
2162            Statement::CreateMacro { meta, .. } => meta.span,
2163            Statement::CreateSecret { meta, .. } => meta.span,
2164            Statement::DropSecret { meta, .. } => meta.span,
2165            Statement::CreateType { meta, .. } => meta.span,
2166            Statement::CreateVirtualTable { meta, .. } => meta.span,
2167            Statement::CreateSequence { meta, .. } => meta.span,
2168            Statement::CreateExtension { meta, .. } => meta.span,
2169            Statement::AlterExtension { meta, .. } => meta.span,
2170            Statement::CreateTablespace { meta, .. } => meta.span,
2171            Statement::AlterTablespace { meta, .. } => meta.span,
2172            Statement::DropTablespace { meta, .. } => meta.span,
2173            Statement::CreateLogfileGroup { meta, .. } => meta.span,
2174            Statement::AlterLogfileGroup { meta, .. } => meta.span,
2175            Statement::DropLogfileGroup { meta, .. } => meta.span,
2176            Statement::AlterObjectDepends { meta, .. } => meta.span,
2177            Statement::AlterSystem { meta, .. } => meta.span,
2178            Statement::AlterDatabase { meta, .. } => meta.span,
2179            Statement::AlterDatabaseOptions { meta, .. } => meta.span,
2180            Statement::CreateServer { meta, .. } => meta.span,
2181            Statement::AlterServer { meta, .. } => meta.span,
2182            Statement::DropServer { meta, .. } => meta.span,
2183            Statement::AlterInstance { meta, .. } => meta.span,
2184            Statement::CreateSpatialReferenceSystem { meta, .. } => meta.span,
2185            Statement::DropSpatialReferenceSystem { meta, .. } => meta.span,
2186            Statement::CreateResourceGroup { meta, .. } => meta.span,
2187            Statement::AlterResourceGroup { meta, .. } => meta.span,
2188            Statement::DropResourceGroup { meta, .. } => meta.span,
2189            Statement::AlterSequence { meta, .. } => meta.span,
2190            Statement::AlterObjectSchema { meta, .. } => meta.span,
2191            Statement::Pivot { meta, .. } => meta.span,
2192            Statement::Unpivot { meta, .. } => meta.span,
2193            Statement::ShowRef { meta, .. } => meta.span,
2194            Statement::Prepare { meta, .. } => meta.span,
2195            Statement::Execute { meta, .. } => meta.span,
2196            Statement::PrepareFrom { meta, .. } => meta.span,
2197            Statement::ExecuteUsing { meta, .. } => meta.span,
2198            Statement::Deallocate { meta, .. } => meta.span,
2199            Statement::Call { meta, .. } => meta.span,
2200            Statement::Do { meta, .. } => meta.span,
2201            Statement::DoExpressions { meta, .. } => meta.span,
2202            Statement::LockTables { meta, .. } => meta.span,
2203            Statement::UnlockTables { meta, .. } => meta.span,
2204            Statement::InstanceLock { meta, .. } => meta.span,
2205            Statement::Compound { meta, .. } => meta.span,
2206            Statement::If { meta, .. } => meta.span,
2207            Statement::Case { meta, .. } => meta.span,
2208            Statement::Loop { meta, .. } => meta.span,
2209            Statement::While { meta, .. } => meta.span,
2210            Statement::Repeat { meta, .. } => meta.span,
2211            Statement::Leave { meta, .. } => meta.span,
2212            Statement::Iterate { meta, .. } => meta.span,
2213            Statement::Return { meta, .. } => meta.span,
2214            Statement::OpenCursor { meta, .. } => meta.span,
2215            Statement::FetchCursor { meta, .. } => meta.span,
2216            Statement::CloseCursor { meta, .. } => meta.span,
2217            Statement::Signal { meta, .. } => meta.span,
2218            Statement::Resignal { meta, .. } => meta.span,
2219            Statement::GetDiagnostics { meta, .. } => meta.span,
2220            Statement::Other { meta, .. } => meta.span,
2221        }
2222    }
2223}
2224impl<X: Extension> Spanned for CompoundStatement<X> {
2225    fn span(&self) -> Span {
2226        self.meta.span
2227    }
2228}
2229impl<X: Extension> Spanned for Declaration<X> {
2230    fn span(&self) -> Span {
2231        match self {
2232            Declaration::Variable { meta, .. } => meta.span,
2233            Declaration::Condition { meta, .. } => meta.span,
2234            Declaration::Cursor { meta, .. } => meta.span,
2235            Declaration::Handler { meta, .. } => meta.span,
2236        }
2237    }
2238}
2239impl Spanned for ConditionValue {
2240    fn span(&self) -> Span {
2241        match self {
2242            ConditionValue::SqlState { meta, .. } => meta.span,
2243            ConditionValue::ErrorCode { meta, .. } => meta.span,
2244            ConditionValue::ConditionName { meta, .. } => meta.span,
2245        }
2246    }
2247}
2248impl Spanned for HandlerCondition {
2249    fn span(&self) -> Span {
2250        match self {
2251            HandlerCondition::SqlState { meta, .. } => meta.span,
2252            HandlerCondition::ErrorCode { meta, .. } => meta.span,
2253            HandlerCondition::ConditionName { meta, .. } => meta.span,
2254            HandlerCondition::SqlWarning { meta, .. } => meta.span,
2255            HandlerCondition::NotFound { meta, .. } => meta.span,
2256            HandlerCondition::SqlException { meta, .. } => meta.span,
2257        }
2258    }
2259}
2260impl<X: Extension> Spanned for IfStatement<X> {
2261    fn span(&self) -> Span {
2262        self.meta.span
2263    }
2264}
2265impl<X: Extension> Spanned for ConditionalBranch<X> {
2266    fn span(&self) -> Span {
2267        self.meta.span
2268    }
2269}
2270impl<X: Extension> Spanned for CaseStatement<X> {
2271    fn span(&self) -> Span {
2272        self.meta.span
2273    }
2274}
2275impl<X: Extension> Spanned for LoopStatement<X> {
2276    fn span(&self) -> Span {
2277        self.meta.span
2278    }
2279}
2280impl<X: Extension> Spanned for WhileStatement<X> {
2281    fn span(&self) -> Span {
2282        self.meta.span
2283    }
2284}
2285impl<X: Extension> Spanned for RepeatStatement<X> {
2286    fn span(&self) -> Span {
2287        self.meta.span
2288    }
2289}
2290impl Spanned for LeaveStatement {
2291    fn span(&self) -> Span {
2292        self.meta.span
2293    }
2294}
2295impl Spanned for IterateStatement {
2296    fn span(&self) -> Span {
2297        self.meta.span
2298    }
2299}
2300impl<X: Extension> Spanned for ReturnStatement<X> {
2301    fn span(&self) -> Span {
2302        self.meta.span
2303    }
2304}
2305impl Spanned for OpenCursorStatement {
2306    fn span(&self) -> Span {
2307        self.meta.span
2308    }
2309}
2310impl Spanned for CloseCursorStatement {
2311    fn span(&self) -> Span {
2312        self.meta.span
2313    }
2314}
2315impl Spanned for FetchCursorStatement {
2316    fn span(&self) -> Span {
2317        self.meta.span
2318    }
2319}
2320impl<X: Extension> Spanned for SignalStatement<X> {
2321    fn span(&self) -> Span {
2322        self.meta.span
2323    }
2324}
2325impl<X: Extension> Spanned for SignalItem<X> {
2326    fn span(&self) -> Span {
2327        self.meta.span
2328    }
2329}
2330impl<X: Extension> Spanned for GetDiagnosticsStatement<X> {
2331    fn span(&self) -> Span {
2332        self.meta.span
2333    }
2334}
2335impl<X: Extension> Spanned for DiagnosticsInfo<X> {
2336    fn span(&self) -> Span {
2337        match self {
2338            DiagnosticsInfo::Statement { meta, .. } => meta.span,
2339            DiagnosticsInfo::Condition { meta, .. } => meta.span,
2340        }
2341    }
2342}
2343impl<X: Extension> Spanned for StatementInfoItem<X> {
2344    fn span(&self) -> Span {
2345        self.meta.span
2346    }
2347}
2348impl<X: Extension> Spanned for ConditionInfoItem<X> {
2349    fn span(&self) -> Span {
2350        self.meta.span
2351    }
2352}
2353impl Spanned for TransactionStatement {
2354    fn span(&self) -> Span {
2355        match self {
2356            TransactionStatement::Begin { meta, .. } => meta.span,
2357            TransactionStatement::Commit { meta, .. } => meta.span,
2358            TransactionStatement::Rollback { meta, .. } => meta.span,
2359            TransactionStatement::Savepoint { meta, .. } => meta.span,
2360            TransactionStatement::Release { meta, .. } => meta.span,
2361            TransactionStatement::SetCharacteristics { meta, .. } => meta.span,
2362        }
2363    }
2364}
2365impl Spanned for TransactionMode {
2366    fn span(&self) -> Span {
2367        match self {
2368            TransactionMode::IsolationLevel { meta, .. } => meta.span,
2369            TransactionMode::AccessMode { meta, .. } => meta.span,
2370            TransactionMode::Deferrable { meta, .. } => meta.span,
2371            TransactionMode::ConsistentSnapshot { meta, .. } => meta.span,
2372        }
2373    }
2374}
2375impl Spanned for XaStatement {
2376    fn span(&self) -> Span {
2377        match self {
2378            XaStatement::Start { meta, .. } => meta.span,
2379            XaStatement::End { meta, .. } => meta.span,
2380            XaStatement::Prepare { meta, .. } => meta.span,
2381            XaStatement::Commit { meta, .. } => meta.span,
2382            XaStatement::Rollback { meta, .. } => meta.span,
2383            XaStatement::Recover { meta, .. } => meta.span,
2384        }
2385    }
2386}
2387impl Spanned for Xid {
2388    fn span(&self) -> Span {
2389        self.meta.span
2390    }
2391}
2392impl<X: Extension> Spanned for DataType<X> {
2393    fn span(&self) -> Span {
2394        match self {
2395            DataType::Boolean { meta, .. } => meta.span,
2396            DataType::TinyInt { meta, .. } => meta.span,
2397            DataType::SmallInt { meta, .. } => meta.span,
2398            DataType::MediumInt { meta, .. } => meta.span,
2399            DataType::Integer { meta, .. } => meta.span,
2400            DataType::BigInt { meta, .. } => meta.span,
2401            DataType::Decimal { meta, .. } => meta.span,
2402            DataType::Float { meta, .. } => meta.span,
2403            DataType::Real { meta, .. } => meta.span,
2404            DataType::Double { meta, .. } => meta.span,
2405            DataType::Text { meta, .. } => meta.span,
2406            DataType::Blob { meta, .. } => meta.span,
2407            DataType::Character { meta, .. } => meta.span,
2408            DataType::Binary { meta, .. } => meta.span,
2409            DataType::Bit { meta, .. } => meta.span,
2410            DataType::Json { meta, .. } => meta.span,
2411            DataType::Uuid { meta, .. } => meta.span,
2412            DataType::Date { meta, .. } => meta.span,
2413            DataType::Time { meta, .. } => meta.span,
2414            DataType::Timestamp { meta, .. } => meta.span,
2415            DataType::Interval { meta, .. } => meta.span,
2416            DataType::Enum { meta, .. } => meta.span,
2417            DataType::Set { meta, .. } => meta.span,
2418            DataType::NumericModifier { meta, .. } => meta.span,
2419            DataType::Array { meta, .. } => meta.span,
2420            DataType::Struct { meta, .. } => meta.span,
2421            DataType::Union { meta, .. } => meta.span,
2422            DataType::Map { meta, .. } => meta.span,
2423            DataType::Wrapped { meta, .. } => meta.span,
2424            DataType::FixedString { meta, .. } => meta.span,
2425            DataType::DateTime64 { meta, .. } => meta.span,
2426            DataType::Nested { meta, .. } => meta.span,
2427            DataType::FixedWidthInt { meta, .. } => meta.span,
2428            DataType::UserDefined { meta, .. } => meta.span,
2429            DataType::Liberal { meta, .. } => meta.span,
2430            DataType::Other { meta, .. } => meta.span,
2431        }
2432    }
2433}
2434impl<X: Extension> Spanned for StructTypeField<X> {
2435    fn span(&self) -> Span {
2436        self.meta.span
2437    }
2438}
2439impl Spanned for CharsetAnnotation {
2440    fn span(&self) -> Span {
2441        self.meta.span
2442    }
2443}
2444impl<X: Extension> Spanned for CopyStatement<X> {
2445    fn span(&self) -> Span {
2446        self.meta.span
2447    }
2448}
2449impl<X: Extension> Spanned for CopySource<X> {
2450    fn span(&self) -> Span {
2451        match self {
2452            CopySource::Table { meta, .. } => meta.span,
2453            CopySource::Query { meta, .. } => meta.span,
2454        }
2455    }
2456}
2457impl Spanned for CopyTarget {
2458    fn span(&self) -> Span {
2459        match self {
2460            CopyTarget::File { meta, .. } => meta.span,
2461            CopyTarget::Stdin { meta, .. } => meta.span,
2462            CopyTarget::Stdout { meta, .. } => meta.span,
2463            CopyTarget::Program { meta, .. } => meta.span,
2464        }
2465    }
2466}
2467impl Spanned for CopyOption {
2468    fn span(&self) -> Span {
2469        self.meta.span
2470    }
2471}
2472impl Spanned for CopyOptionValue {
2473    fn span(&self) -> Span {
2474        match self {
2475            CopyOptionValue::Word { meta, .. } => meta.span,
2476            CopyOptionValue::String { meta, .. } => meta.span,
2477            CopyOptionValue::Number { meta, .. } => meta.span,
2478            CopyOptionValue::Star { meta, .. } => meta.span,
2479            CopyOptionValue::List { meta, .. } => meta.span,
2480            CopyOptionValue::Force { meta, .. } => meta.span,
2481            CopyOptionValue::OptionList { meta, .. } => meta.span,
2482        }
2483    }
2484}
2485impl<X: Extension> Spanned for CopyIntoStatement<X> {
2486    fn span(&self) -> Span {
2487        self.meta.span
2488    }
2489}
2490impl Spanned for CopyIntoTarget {
2491    fn span(&self) -> Span {
2492        match self {
2493            CopyIntoTarget::Table { meta, .. } => meta.span,
2494            CopyIntoTarget::External { meta, .. } => meta.span,
2495            CopyIntoTarget::Stage { meta, .. } => meta.span,
2496        }
2497    }
2498}
2499impl<X: Extension> Spanned for CopyIntoSource<X> {
2500    fn span(&self) -> Span {
2501        match self {
2502            CopyIntoSource::Table { meta, .. } => meta.span,
2503            CopyIntoSource::External { meta, .. } => meta.span,
2504            CopyIntoSource::Stage { meta, .. } => meta.span,
2505            CopyIntoSource::Query { meta, .. } => meta.span,
2506        }
2507    }
2508}
2509impl Spanned for ExportStatement {
2510    fn span(&self) -> Span {
2511        self.meta.span
2512    }
2513}
2514impl Spanned for ImportStatement {
2515    fn span(&self) -> Span {
2516        self.meta.span
2517    }
2518}
2519impl<X: Extension> Spanned for ExplainStatement<X> {
2520    fn span(&self) -> Span {
2521        self.meta.span
2522    }
2523}
2524impl Spanned for ExplainOption {
2525    fn span(&self) -> Span {
2526        match self {
2527            ExplainOption::Analyze { meta, .. } => meta.span,
2528            ExplainOption::Verbose { meta, .. } => meta.span,
2529            ExplainOption::Format { meta, .. } => meta.span,
2530            ExplainOption::Other { meta, .. } => meta.span,
2531        }
2532    }
2533}
2534impl Spanned for DescribeStatement {
2535    fn span(&self) -> Span {
2536        self.meta.span
2537    }
2538}
2539impl Spanned for DescribeColumn {
2540    fn span(&self) -> Span {
2541        match self {
2542            DescribeColumn::Name { meta, .. } => meta.span,
2543            DescribeColumn::Wild { meta, .. } => meta.span,
2544        }
2545    }
2546}
2547impl<X: Extension> Spanned for KillStatement<X> {
2548    fn span(&self) -> Span {
2549        self.meta.span
2550    }
2551}
2552impl<X: Extension> Spanned for InstallStatement<X> {
2553    fn span(&self) -> Span {
2554        match self {
2555            InstallStatement::Plugin { meta, .. } => meta.span,
2556            InstallStatement::Component { meta, .. } => meta.span,
2557        }
2558    }
2559}
2560impl Spanned for UninstallStatement {
2561    fn span(&self) -> Span {
2562        match self {
2563            UninstallStatement::Plugin { meta, .. } => meta.span,
2564            UninstallStatement::Component { meta, .. } => meta.span,
2565        }
2566    }
2567}
2568impl<X: Extension> Spanned for InstallComponentSetElement<X> {
2569    fn span(&self) -> Span {
2570        self.meta.span
2571    }
2572}
2573impl<X: Extension> Spanned for InstallComponentSetValue<X> {
2574    fn span(&self) -> Span {
2575        match self {
2576            InstallComponentSetValue::On { meta, .. } => meta.span,
2577            InstallComponentSetValue::Expr { meta, .. } => meta.span,
2578        }
2579    }
2580}
2581impl<X: Extension> Spanned for HandlerStatement<X> {
2582    fn span(&self) -> Span {
2583        self.meta.span
2584    }
2585}
2586impl<X: Extension> Spanned for HandlerOperation<X> {
2587    fn span(&self) -> Span {
2588        match self {
2589            HandlerOperation::Open { meta, .. } => meta.span,
2590            HandlerOperation::Close { meta, .. } => meta.span,
2591            HandlerOperation::Read { meta, .. } => meta.span,
2592        }
2593    }
2594}
2595impl<X: Extension> Spanned for HandlerReadSelector<X> {
2596    fn span(&self) -> Span {
2597        match self {
2598            HandlerReadSelector::Scan { meta, .. } => meta.span,
2599            HandlerReadSelector::Index { meta, .. } => meta.span,
2600            HandlerReadSelector::Key { meta, .. } => meta.span,
2601        }
2602    }
2603}
2604impl Spanned for CloneStatement {
2605    fn span(&self) -> Span {
2606        match self {
2607            CloneStatement::Local { meta, .. } => meta.span,
2608            CloneStatement::Instance { meta, .. } => meta.span,
2609        }
2610    }
2611}
2612impl Spanned for CloneDataDirectory {
2613    fn span(&self) -> Span {
2614        self.meta.span
2615    }
2616}
2617impl Spanned for ImportTableStatement {
2618    fn span(&self) -> Span {
2619        self.meta.span
2620    }
2621}
2622impl Spanned for HelpStatement {
2623    fn span(&self) -> Span {
2624        self.meta.span
2625    }
2626}
2627impl Spanned for BinlogStatement {
2628    fn span(&self) -> Span {
2629        self.meta.span
2630    }
2631}
2632impl Spanned for PragmaStatement {
2633    fn span(&self) -> Span {
2634        self.meta.span
2635    }
2636}
2637impl<X: Extension> Spanned for AttachStatement<X> {
2638    fn span(&self) -> Span {
2639        self.meta.span
2640    }
2641}
2642impl Spanned for DetachStatement {
2643    fn span(&self) -> Span {
2644        self.meta.span
2645    }
2646}
2647impl Spanned for CheckpointStatement {
2648    fn span(&self) -> Span {
2649        self.meta.span
2650    }
2651}
2652impl Spanned for LoadStatement {
2653    fn span(&self) -> Span {
2654        self.meta.span
2655    }
2656}
2657impl Spanned for LoadTarget {
2658    fn span(&self) -> Span {
2659        match self {
2660            LoadTarget::Name { meta, .. } => meta.span,
2661            LoadTarget::Path { meta, .. } => meta.span,
2662        }
2663    }
2664}
2665impl Spanned for UpdateExtensionsStatement {
2666    fn span(&self) -> Span {
2667        self.meta.span
2668    }
2669}
2670impl<X: Extension> Spanned for VacuumStatement<X> {
2671    fn span(&self) -> Span {
2672        self.meta.span
2673    }
2674}
2675impl Spanned for ReindexStatement {
2676    fn span(&self) -> Span {
2677        self.meta.span
2678    }
2679}
2680impl Spanned for AnalyzeStatement {
2681    fn span(&self) -> Span {
2682        self.meta.span
2683    }
2684}
2685impl Spanned for TableMaintenanceStatement {
2686    fn span(&self) -> Span {
2687        self.meta.span
2688    }
2689}
2690impl Spanned for TableMaintenanceKind {
2691    fn span(&self) -> Span {
2692        match self {
2693            TableMaintenanceKind::Analyze { meta, .. } => meta.span,
2694            TableMaintenanceKind::Check { meta, .. } => meta.span,
2695            TableMaintenanceKind::Checksum { meta, .. } => meta.span,
2696            TableMaintenanceKind::Optimize { meta, .. } => meta.span,
2697            TableMaintenanceKind::Repair { meta, .. } => meta.span,
2698        }
2699    }
2700}
2701impl Spanned for AnalyzeHistogram {
2702    fn span(&self) -> Span {
2703        match self {
2704            AnalyzeHistogram::Update { meta, .. } => meta.span,
2705            AnalyzeHistogram::Drop { meta, .. } => meta.span,
2706        }
2707    }
2708}
2709impl Spanned for CacheIndexStatement {
2710    fn span(&self) -> Span {
2711        self.meta.span
2712    }
2713}
2714impl Spanned for CacheIndexTargets {
2715    fn span(&self) -> Span {
2716        match self {
2717            CacheIndexTargets::Tables { meta, .. } => meta.span,
2718            CacheIndexTargets::Partition { meta, .. } => meta.span,
2719        }
2720    }
2721}
2722impl Spanned for CacheIndexTable {
2723    fn span(&self) -> Span {
2724        self.meta.span
2725    }
2726}
2727impl Spanned for LoadIndexStatement {
2728    fn span(&self) -> Span {
2729        self.meta.span
2730    }
2731}
2732impl Spanned for LoadIndexTargets {
2733    fn span(&self) -> Span {
2734        match self {
2735            LoadIndexTargets::Tables { meta, .. } => meta.span,
2736            LoadIndexTargets::Partition { meta, .. } => meta.span,
2737        }
2738    }
2739}
2740impl Spanned for LoadIndexTable {
2741    fn span(&self) -> Span {
2742        self.meta.span
2743    }
2744}
2745impl Spanned for CacheIndexKeyList {
2746    fn span(&self) -> Span {
2747        self.meta.span
2748    }
2749}
2750impl Spanned for KeyCacheName {
2751    fn span(&self) -> Span {
2752        match self {
2753            KeyCacheName::Named { meta, .. } => meta.span,
2754            KeyCacheName::Default { meta, .. } => meta.span,
2755        }
2756    }
2757}
2758impl Spanned for PartitionSelection {
2759    fn span(&self) -> Span {
2760        match self {
2761            PartitionSelection::All { meta, .. } => meta.span,
2762            PartitionSelection::Names { meta, .. } => meta.span,
2763        }
2764    }
2765}
2766impl Spanned for RenameStatement {
2767    fn span(&self) -> Span {
2768        match self {
2769            RenameStatement::Table { meta, .. } => meta.span,
2770            RenameStatement::User { meta, .. } => meta.span,
2771        }
2772    }
2773}
2774impl Spanned for TableRename {
2775    fn span(&self) -> Span {
2776        self.meta.span
2777    }
2778}
2779impl Spanned for UserRename {
2780    fn span(&self) -> Span {
2781        self.meta.span
2782    }
2783}
2784impl Spanned for AccountName {
2785    fn span(&self) -> Span {
2786        match self {
2787            AccountName::Account { meta, .. } => meta.span,
2788            AccountName::CurrentUser { meta, .. } => meta.span,
2789        }
2790    }
2791}
2792impl Spanned for FlushStatement {
2793    fn span(&self) -> Span {
2794        self.meta.span
2795    }
2796}
2797impl Spanned for FlushTarget {
2798    fn span(&self) -> Span {
2799        match self {
2800            FlushTarget::Tables { meta, .. } => meta.span,
2801            FlushTarget::Options { meta, .. } => meta.span,
2802        }
2803    }
2804}
2805impl Spanned for FlushOption {
2806    fn span(&self) -> Span {
2807        match self {
2808            FlushOption::Privileges { meta, .. } => meta.span,
2809            FlushOption::Logs { meta, .. } => meta.span,
2810            FlushOption::BinaryLogs { meta, .. } => meta.span,
2811            FlushOption::EngineLogs { meta, .. } => meta.span,
2812            FlushOption::ErrorLogs { meta, .. } => meta.span,
2813            FlushOption::GeneralLogs { meta, .. } => meta.span,
2814            FlushOption::SlowLogs { meta, .. } => meta.span,
2815            FlushOption::RelayLogs { meta, .. } => meta.span,
2816            FlushOption::Status { meta, .. } => meta.span,
2817            FlushOption::UserResources { meta, .. } => meta.span,
2818            FlushOption::OptimizerCosts { meta, .. } => meta.span,
2819        }
2820    }
2821}
2822impl<X: Extension> Spanned for PurgeStatement<X> {
2823    fn span(&self) -> Span {
2824        self.meta.span
2825    }
2826}
2827impl<X: Extension> Spanned for PurgeTarget<X> {
2828    fn span(&self) -> Span {
2829        match self {
2830            PurgeTarget::To { meta, .. } => meta.span,
2831            PurgeTarget::Before { meta, .. } => meta.span,
2832        }
2833    }
2834}
2835impl Spanned for UseStatement {
2836    fn span(&self) -> Span {
2837        self.meta.span
2838    }
2839}
2840impl<X: Extension> Spanned for PrepareStatement<X> {
2841    fn span(&self) -> Span {
2842        self.meta.span
2843    }
2844}
2845impl Spanned for PrepareFromStatement {
2846    fn span(&self) -> Span {
2847        self.meta.span
2848    }
2849}
2850impl Spanned for PrepareSource {
2851    fn span(&self) -> Span {
2852        match self {
2853            PrepareSource::Text { meta, .. } => meta.span,
2854            PrepareSource::Variable { meta, .. } => meta.span,
2855        }
2856    }
2857}
2858impl<X: Extension> Spanned for ExecuteStatement<X> {
2859    fn span(&self) -> Span {
2860        self.meta.span
2861    }
2862}
2863impl Spanned for ExecuteUsingStatement {
2864    fn span(&self) -> Span {
2865        self.meta.span
2866    }
2867}
2868impl<X: Extension> Spanned for CallStatement<X> {
2869    fn span(&self) -> Span {
2870        self.meta.span
2871    }
2872}
2873impl Spanned for DeallocateStatement {
2874    fn span(&self) -> Span {
2875        self.meta.span
2876    }
2877}
2878impl Spanned for DoStatement {
2879    fn span(&self) -> Span {
2880        self.meta.span
2881    }
2882}
2883impl Spanned for DoArg {
2884    fn span(&self) -> Span {
2885        match self {
2886            DoArg::Body { meta, .. } => meta.span,
2887            DoArg::Language { meta, .. } => meta.span,
2888        }
2889    }
2890}
2891impl Spanned for LanguageName {
2892    fn span(&self) -> Span {
2893        match self {
2894            LanguageName::Word { meta, .. } => meta.span,
2895            LanguageName::String { meta, .. } => meta.span,
2896        }
2897    }
2898}
2899impl<X: Extension> Spanned for DoExpressionsStatement<X> {
2900    fn span(&self) -> Span {
2901        self.meta.span
2902    }
2903}
2904impl Spanned for LockTablesStatement {
2905    fn span(&self) -> Span {
2906        self.meta.span
2907    }
2908}
2909impl Spanned for TableLock {
2910    fn span(&self) -> Span {
2911        self.meta.span
2912    }
2913}
2914impl Spanned for UnlockTablesStatement {
2915    fn span(&self) -> Span {
2916        self.meta.span
2917    }
2918}
2919impl Spanned for InstanceLockStatement {
2920    fn span(&self) -> Span {
2921        self.meta.span
2922    }
2923}
2924impl<X: Extension> Spanned for LoadDataStatement<X> {
2925    fn span(&self) -> Span {
2926        self.meta.span
2927    }
2928}
2929impl Spanned for LoadDataFields {
2930    fn span(&self) -> Span {
2931        self.meta.span
2932    }
2933}
2934impl Spanned for LoadDataEnclosed {
2935    fn span(&self) -> Span {
2936        self.meta.span
2937    }
2938}
2939impl Spanned for LoadDataLines {
2940    fn span(&self) -> Span {
2941        self.meta.span
2942    }
2943}
2944impl Spanned for LoadDataIgnoreRows {
2945    fn span(&self) -> Span {
2946        self.meta.span
2947    }
2948}
2949impl Spanned for LoadDataFieldOrVar {
2950    fn span(&self) -> Span {
2951        match self {
2952            LoadDataFieldOrVar::Column { meta, .. } => meta.span,
2953            LoadDataFieldOrVar::Variable { meta, .. } => meta.span,
2954        }
2955    }
2956}
2957impl<X: Extension> Spanned for ShowStatement<X> {
2958    fn span(&self) -> Span {
2959        self.meta.span
2960    }
2961}
2962impl<X: Extension> Spanned for ShowTarget<X> {
2963    fn span(&self) -> Span {
2964        match self {
2965            ShowTarget::Tables { meta, .. } => meta.span,
2966            ShowTarget::Columns { meta, .. } => meta.span,
2967            ShowTarget::Create { meta, .. } => meta.span,
2968            ShowTarget::Functions { meta, .. } => meta.span,
2969            ShowTarget::RoutineStatus { meta, .. } => meta.span,
2970            ShowTarget::Listing { meta, .. } => meta.span,
2971            ShowTarget::Bare { meta, .. } => meta.span,
2972            ShowTarget::Grants { meta, .. } => meta.span,
2973            ShowTarget::CreateUser { meta, .. } => meta.span,
2974            ShowTarget::Profile { meta, .. } => meta.span,
2975            ShowTarget::LogEvents { meta, .. } => meta.span,
2976            ShowTarget::Index { meta, .. } => meta.span,
2977            ShowTarget::Engine { meta, .. } => meta.span,
2978            ShowTarget::ReplicaStatus { meta, .. } => meta.span,
2979            ShowTarget::Diagnostics { meta, .. } => meta.span,
2980            ShowTarget::RoutineCode { meta, .. } => meta.span,
2981        }
2982    }
2983}
2984impl Spanned for ShowFunctionsFilter {
2985    fn span(&self) -> Span {
2986        match self {
2987            ShowFunctionsFilter::Name { meta, .. } => meta.span,
2988            ShowFunctionsFilter::Regex { meta, .. } => meta.span,
2989        }
2990    }
2991}
2992impl Spanned for ShowFrom {
2993    fn span(&self) -> Span {
2994        self.meta.span
2995    }
2996}
2997impl<X: Extension> Spanned for ShowFilter<X> {
2998    fn span(&self) -> Span {
2999        match self {
3000            ShowFilter::Like { meta, .. } => meta.span,
3001            ShowFilter::Where { meta, .. } => meta.span,
3002        }
3003    }
3004}
3005impl Spanned for ShowLimit {
3006    fn span(&self) -> Span {
3007        self.meta.span
3008    }
3009}
3010impl<X: Extension> Spanned for WindowSpec<X> {
3011    fn span(&self) -> Span {
3012        match self {
3013            WindowSpec::Named { meta, .. } => meta.span,
3014            WindowSpec::Inline { meta, .. } => meta.span,
3015        }
3016    }
3017}
3018impl<X: Extension> Spanned for WindowDefinition<X> {
3019    fn span(&self) -> Span {
3020        self.meta.span
3021    }
3022}
3023impl<X: Extension> Spanned for WindowFrame<X> {
3024    fn span(&self) -> Span {
3025        self.meta.span
3026    }
3027}
3028impl<X: Extension> Spanned for WindowFrameBound<X> {
3029    fn span(&self) -> Span {
3030        match self {
3031            WindowFrameBound::CurrentRow { meta, .. } => meta.span,
3032            WindowFrameBound::UnboundedPreceding { meta, .. } => meta.span,
3033            WindowFrameBound::UnboundedFollowing { meta, .. } => meta.span,
3034            WindowFrameBound::Preceding { meta, .. } => meta.span,
3035            WindowFrameBound::Following { meta, .. } => meta.span,
3036        }
3037    }
3038}
3039impl<X: Extension> Spanned for NamedWindow<X> {
3040    fn span(&self) -> Span {
3041        self.meta.span
3042    }
3043}