in src/ast/spans.rs [1860:1976]
fn span(&self) -> Span {
match self {
TableFactor::Table {
name,
alias,
args: _,
with_hints: _,
version: _,
with_ordinality: _,
partitions: _,
json_path: _,
sample: _,
index_hints: _,
} => union_spans(
name.0
.iter()
.map(|i| i.span())
.chain(alias.as_ref().map(|alias| {
union_spans(
iter::once(alias.name.span)
.chain(alias.columns.iter().map(|i| i.span())),
)
})),
),
TableFactor::Derived {
lateral: _,
subquery,
alias,
} => subquery
.span()
.union_opt(&alias.as_ref().map(|alias| alias.span())),
TableFactor::TableFunction { expr, alias } => expr
.span()
.union_opt(&alias.as_ref().map(|alias| alias.span())),
TableFactor::UNNEST {
alias,
with_offset: _,
with_offset_alias,
array_exprs,
with_ordinality: _,
} => union_spans(
alias
.iter()
.map(|i| i.span())
.chain(array_exprs.iter().map(|i| i.span()))
.chain(with_offset_alias.as_ref().map(|i| i.span)),
),
TableFactor::NestedJoin {
table_with_joins,
alias,
} => table_with_joins
.span()
.union_opt(&alias.as_ref().map(|alias| alias.span())),
TableFactor::Function {
lateral: _,
name,
args,
alias,
} => union_spans(
name.0
.iter()
.map(|i| i.span())
.chain(args.iter().map(|i| i.span()))
.chain(alias.as_ref().map(|alias| alias.span())),
),
TableFactor::JsonTable { .. } => Span::empty(),
TableFactor::XmlTable { .. } => Span::empty(),
TableFactor::Pivot {
table,
aggregate_functions,
value_column,
value_source,
default_on_null,
alias,
} => union_spans(
core::iter::once(table.span())
.chain(aggregate_functions.iter().map(|i| i.span()))
.chain(value_column.iter().map(|i| i.span))
.chain(core::iter::once(value_source.span()))
.chain(default_on_null.as_ref().map(|i| i.span()))
.chain(alias.as_ref().map(|i| i.span())),
),
TableFactor::Unpivot {
table,
value,
name,
columns,
alias,
} => union_spans(
core::iter::once(table.span())
.chain(core::iter::once(value.span))
.chain(core::iter::once(name.span))
.chain(columns.iter().map(|i| i.span))
.chain(alias.as_ref().map(|alias| alias.span())),
),
TableFactor::MatchRecognize {
table,
partition_by,
order_by,
measures,
rows_per_match: _,
after_match_skip: _,
pattern,
symbols,
alias,
} => union_spans(
core::iter::once(table.span())
.chain(partition_by.iter().map(|i| i.span()))
.chain(order_by.iter().map(|i| i.span()))
.chain(measures.iter().map(|i| i.span()))
.chain(core::iter::once(pattern.span()))
.chain(symbols.iter().map(|i| i.span()))
.chain(alias.as_ref().map(|i| i.span())),
),
TableFactor::OpenJsonTable { .. } => Span::empty(),
}
}