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