mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-10-12 23:12:01 +00:00
Update comments / docs for Spanned
(#1549)
Co-authored-by: Ifeanyi Ubah <ify1992@yahoo.com>
This commit is contained in:
parent
f4f112d7d6
commit
4ab3ab9147
8 changed files with 306 additions and 91 deletions
59
src/lib.rs
59
src/lib.rs
|
@ -25,6 +25,9 @@
|
|||
//! 1. [`Parser::parse_sql`] and [`Parser::new`] for the Parsing API
|
||||
//! 2. [`ast`] for the AST structure
|
||||
//! 3. [`Dialect`] for supported SQL dialects
|
||||
//! 4. [`Spanned`] for source text locations (see "Source Spans" below for details)
|
||||
//!
|
||||
//! [`Spanned`]: ast::Spanned
|
||||
//!
|
||||
//! # Example parsing SQL text
|
||||
//!
|
||||
|
@ -61,13 +64,67 @@
|
|||
//! // The original SQL text can be generated from the AST
|
||||
//! assert_eq!(ast[0].to_string(), sql);
|
||||
//! ```
|
||||
//!
|
||||
//! [sqlparser crates.io page]: https://crates.io/crates/sqlparser
|
||||
//! [`Parser::parse_sql`]: crate::parser::Parser::parse_sql
|
||||
//! [`Parser::new`]: crate::parser::Parser::new
|
||||
//! [`AST`]: crate::ast
|
||||
//! [`ast`]: crate::ast
|
||||
//! [`Dialect`]: crate::dialect::Dialect
|
||||
//!
|
||||
//! # Source Spans
|
||||
//!
|
||||
//! Starting with version `0.53.0` sqlparser introduced source spans to the
|
||||
//! AST. This feature provides source information for syntax errors, enabling
|
||||
//! better error messages. See [issue #1548] for more information and the
|
||||
//! [`Spanned`] trait to access the spans.
|
||||
//!
|
||||
//! [issue #1548]: https://github.com/apache/datafusion-sqlparser-rs/issues/1548
|
||||
//! [`Spanned`]: ast::Spanned
|
||||
//!
|
||||
//! ## Migration Guide
|
||||
//!
|
||||
//! For the next few releases, we will be incrementally adding source spans to the
|
||||
//! AST nodes, trying to minimize the impact on existing users. Some breaking
|
||||
//! changes are inevitable, and the following is a summary of the changes:
|
||||
//!
|
||||
//! #### New fields for spans (must be added to any existing pattern matches)
|
||||
//!
|
||||
//! The primary change is that new fields will be added to AST nodes to store the source `Span` or `TokenWithLocation`.
|
||||
//!
|
||||
//! This will require
|
||||
//! 1. Adding new fields to existing pattern matches.
|
||||
//! 2. Filling in the proper span information when constructing AST nodes.
|
||||
//!
|
||||
//! For example, since `Ident` now stores a `Span`, to construct an `Ident` you
|
||||
//! must provide now provide one:
|
||||
//!
|
||||
//! Previously:
|
||||
//! ```text
|
||||
//! # use sqlparser::ast::Ident;
|
||||
//! Ident {
|
||||
//! value: "name".into(),
|
||||
//! quote_style: None,
|
||||
//! }
|
||||
//! ```
|
||||
//! Now
|
||||
//! ```rust
|
||||
//! # use sqlparser::ast::Ident;
|
||||
//! # use sqlparser::tokenizer::Span;
|
||||
//! Ident {
|
||||
//! value: "name".into(),
|
||||
//! quote_style: None,
|
||||
//! span: Span::empty(),
|
||||
//! };
|
||||
//! ```
|
||||
//!
|
||||
//! Similarly, when pattern matching on `Ident`, you must now account for the
|
||||
//! `span` field.
|
||||
//!
|
||||
//! #### Misc.
|
||||
//! - [`TokenWithLocation`] stores a full `Span`, rather than just a source location.
|
||||
//! Users relying on `token.location` should use `token.location.start` instead.
|
||||
//!
|
||||
//![`TokenWithLocation`]: tokenizer::TokenWithLocation
|
||||
|
||||
#![cfg_attr(not(feature = "std"), no_std)]
|
||||
#![allow(clippy::upper_case_acronyms)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue