Skip to main content

SqlLanguage

Struct SqlLanguage 

Source
pub struct SqlLanguage {
    pub case_sensitive: bool,
    pub quoted_identifiers: bool,
    pub backtick_identifiers: bool,
    pub bracket_identifiers: bool,
}
Expand description

SQL language implementation.

Fields§

§case_sensitive: bool

Whether it is case sensitive.

§quoted_identifiers: bool

Whether to allow double-quoted identifiers.

§backtick_identifiers: bool

Whether to allow backtick identifiers.

§bracket_identifiers: bool

Whether to allow bracket identifiers.

Implementations§

Source§

impl SqlLanguage

Source

pub fn new() -> Self

Creates a new SQL language instance.

Source

pub fn standard() -> Self

Creates a standard SQL language instance.

Source

pub fn mysql() -> Self

Creates a MySQL-style SQL language instance.

Source

pub fn postgresql() -> Self

Creates a PostgreSQL-style SQL language instance.

Source

pub fn sqlite() -> Self

SQLite configuration.

Source

pub fn sqlserver() -> Self

Creates a SQL Server-style SQL language instance.

Trait Implementations§

Source§

impl<'config> Builder<SqlLanguage> for SqlBuilder<'config>

Source§

fn build<'a, S: Source + ?Sized>( &self, source: &S, edits: &[TextEdit], cache: &'a mut impl BuilderCache<SqlLanguage>, ) -> BuildOutput<SqlLanguage>

Builds the SQL AST from the source text and edits.

This is the main entry point for the builder. It performs the following steps:

  1. Initializes a SqlParser with the current configuration.
  2. Executes the parser to produce a RedTree (Concrete Syntax Tree).
  3. Converts the resulting green tree into a typed SqlRoot AST.
  4. Handles incremental updates by passing edits to the parser.
§Examples
use oak_core::{Builder, ParseSession, source::SourceText};
use oak_sql::{SqlBuilder, SqlLanguage};

let config = SqlLanguage::default();
let builder = SqlBuilder::new(&config);
let mut cache = ParseSession::default();
let source = "SELECT * FROM users";
let output = builder.build(&source, &[], &mut cache);

if let Ok(root) = output.result {
    assert_eq!(root.statements.len(), 1);
}
§Errors

Returns an error if parsing fails or if the CST cannot be lowered to a valid AST.

Source§

impl Clone for SqlLanguage

Source§

fn clone(&self) -> SqlLanguage

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SqlLanguage

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SqlLanguage

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for SqlLanguage

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Hash for SqlLanguage

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl HoverProvider<SqlLanguage> for SqlHoverProvider

Available on crate feature lsp only.
Source§

fn hover( &self, node: &RedNode<'_, SqlLanguage>, _range: Range<usize>, ) -> Option<Hover>

Returns hover information at the given range.
Source§

impl Language for SqlLanguage

Source§

const NAME: &'static str = "sql"

The name of the language (e.g., “rust”, “sql”).
Source§

const CATEGORY: LanguageCategory = LanguageCategory::Dsl

The category of the language.
Source§

type TokenType = SqlTokenType

The token type used to represent different token and node types in the language. Read more
Source§

type ElementType = SqlElementType

The element type used to represent composite structures in the parsed tree. Read more
Source§

type TypedRoot = SqlRoot

The root type for the parsed tree that represents the top-level structure of the language. Read more
Source§

impl<'config> Lexer<SqlLanguage> for SqlLexer<'config>

Source§

fn lex<'a, S: Source + ?Sized>( &self, text: &S, _edits: &[TextEdit], cache: &'a mut impl LexerCache<SqlLanguage>, ) -> LexOutput<SqlLanguage>

Tokenizes the given source text into a sequence of tokens. Read more
Source§

impl<'config> Parser<SqlLanguage> for SqlParser<'config>

Source§

fn parse<'a, S: Source + ?Sized>( &self, text: &'a S, edits: &[TextEdit], cache: &'a mut impl ParseCache<SqlLanguage>, ) -> ParseOutput<'a, SqlLanguage>

The core parsing entry point. Read more
Source§

impl PartialEq for SqlLanguage

Source§

fn eq(&self, other: &SqlLanguage) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'config> Pratt<SqlLanguage> for SqlParser<'config>

Source§

fn primary<'a, S: Source + ?Sized>( &self, state: &mut ParserState<'a, SqlLanguage, S>, ) -> &'a GreenNode<'a, SqlLanguage>

Parses a primary expression (e.g., literals, identifiers, group).
Source§

fn prefix<'a, S: Source + ?Sized>( &self, state: &mut ParserState<'a, SqlLanguage, S>, ) -> &'a GreenNode<'a, SqlLanguage>

Handles prefix operators and primary expressions. Read more
Source§

fn infix<'a, S: Source + ?Sized>( &self, state: &mut ParserState<'a, SqlLanguage, S>, left: &'a GreenNode<'a, SqlLanguage>, min_precedence: u8, ) -> Option<&'a GreenNode<'a, SqlLanguage>>

Handles infix and postfix operators. Read more
Source§

impl Serialize for SqlLanguage

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Copy for SqlLanguage

Source§

impl Eq for SqlLanguage

Source§

impl StructuralPartialEq for SqlLanguage

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,