pub struct ArenaParser<'arena> { /* private fields */ }Expand description
Arena-based SQL parser.
Unlike the standard Parser, this parser allocates all
AST nodes from a bump arena, resulting in:
- O(1) allocation time (vs heap allocation overhead)
- Better cache locality (contiguous memory)
- Single deallocation when arena is dropped
Implementations§
Source§impl<'arena> ArenaParser<'arena>
impl<'arena> ArenaParser<'arena>
Sourcepub fn parse_alter_table_statement(
&mut self,
) -> Result<&'arena AlterTableStmt<'arena>, ParseError>
pub fn parse_alter_table_statement( &mut self, ) -> Result<&'arena AlterTableStmt<'arena>, ParseError>
Parse ALTER TABLE statement.
Source§impl<'arena> ArenaParser<'arena>
impl<'arena> ArenaParser<'arena>
Sourcepub fn new_with_spans(
tokens: Vec<Token>,
spans: Vec<Span>,
input: &'arena str,
arena: &'arena Bump,
) -> Self
pub fn new_with_spans( tokens: Vec<Token>, spans: Vec<Span>, input: &'arena str, arena: &'arena Bump, ) -> Self
Create a new arena parser from tokens with spans and original input.
Sourcepub fn new(tokens: Vec<Token>, arena: &'arena Bump) -> Self
pub fn new(tokens: Vec<Token>, arena: &'arena Bump) -> Self
Create a new arena parser from tokens (legacy constructor without spans). Source text reconstruction will fall back to token-based reconstruction.
Sourcepub fn interner(&self) -> &ArenaInterner<'arena>
pub fn interner(&self) -> &ArenaInterner<'arena>
Returns a reference to the interner for symbol resolution during conversion.
Sourcepub fn into_interner(self) -> ArenaInterner<'arena>
pub fn into_interner(self) -> ArenaInterner<'arena>
Consumes the parser and returns the interner.
Sourcepub fn parse_sql(
input: &str,
arena: &'arena Bump,
) -> Result<Statement<'arena>, ParseError>
pub fn parse_sql( input: &str, arena: &'arena Bump, ) -> Result<Statement<'arena>, ParseError>
Parse SQL input string into an arena-allocated Statement.
Supports the full range of SQL statements including DML (SELECT, INSERT, UPDATE, DELETE), DDL (CREATE, DROP, ALTER), and transaction statements.
Sourcepub fn parse_select(
input: &str,
arena: &'arena Bump,
) -> Result<&'arena SelectStmt<'arena>, ParseError>
pub fn parse_select( input: &str, arena: &'arena Bump, ) -> Result<&'arena SelectStmt<'arena>, ParseError>
Parse SQL input string into an arena-allocated SelectStmt.
Convenience method for when you know you’re parsing a SELECT.
Sourcepub fn parse_select_with_interner(
input: &str,
arena: &'arena Bump,
) -> Result<(&'arena SelectStmt<'arena>, ArenaInterner<'arena>), ParseError>
pub fn parse_select_with_interner( input: &str, arena: &'arena Bump, ) -> Result<(&'arena SelectStmt<'arena>, ArenaInterner<'arena>), ParseError>
Parse SQL input string into an arena-allocated SelectStmt, returning the interner too.
Use this method when you need to resolve Symbol values to strings.
Sourcepub fn parse_expression_sql(
input: &str,
arena: &'arena Bump,
) -> Result<&'arena Expression<'arena>, ParseError>
pub fn parse_expression_sql( input: &str, arena: &'arena Bump, ) -> Result<&'arena Expression<'arena>, ParseError>
Parse an expression and return an arena-allocated reference.
Sourcepub fn parse_alter_table_sql(
input: &str,
arena: &'arena Bump,
) -> Result<&'arena AlterTableStmt<'arena>, ParseError>
pub fn parse_alter_table_sql( input: &str, arena: &'arena Bump, ) -> Result<&'arena AlterTableStmt<'arena>, ParseError>
Parse SQL input string into an arena-allocated AlterTableStmt.
Sourcepub fn parse_insert(
input: &str,
arena: &'arena Bump,
) -> Result<&'arena InsertStmt<'arena>, ParseError>
pub fn parse_insert( input: &str, arena: &'arena Bump, ) -> Result<&'arena InsertStmt<'arena>, ParseError>
Parse an INSERT statement into an arena-allocated InsertStmt.
Sourcepub fn parse_update(
input: &str,
arena: &'arena Bump,
) -> Result<&'arena UpdateStmt<'arena>, ParseError>
pub fn parse_update( input: &str, arena: &'arena Bump, ) -> Result<&'arena UpdateStmt<'arena>, ParseError>
Parse an UPDATE statement into an arena-allocated UpdateStmt.
Sourcepub fn parse_delete(
input: &str,
arena: &'arena Bump,
) -> Result<&'arena DeleteStmt<'arena>, ParseError>
pub fn parse_delete( input: &str, arena: &'arena Bump, ) -> Result<&'arena DeleteStmt<'arena>, ParseError>
Parse a DELETE statement into an arena-allocated DeleteStmt.
Sourcepub fn parse_replace(
input: &str,
arena: &'arena Bump,
) -> Result<&'arena InsertStmt<'arena>, ParseError>
pub fn parse_replace( input: &str, arena: &'arena Bump, ) -> Result<&'arena InsertStmt<'arena>, ParseError>
Parse a REPLACE statement (alias for INSERT OR REPLACE) into an arena-allocated InsertStmt.
Sourcepub fn parse_alter_table_sql_with_interner(
input: &str,
arena: &'arena Bump,
) -> Result<(&'arena AlterTableStmt<'arena>, ArenaInterner<'arena>), ParseError>
pub fn parse_alter_table_sql_with_interner( input: &str, arena: &'arena Bump, ) -> Result<(&'arena AlterTableStmt<'arena>, ArenaInterner<'arena>), ParseError>
Parse an ALTER TABLE statement, returning the interner for symbol resolution.
Sourcepub fn parse_delete_with_interner(
input: &str,
arena: &'arena Bump,
) -> Result<(&'arena DeleteStmt<'arena>, ArenaInterner<'arena>), ParseError>
pub fn parse_delete_with_interner( input: &str, arena: &'arena Bump, ) -> Result<(&'arena DeleteStmt<'arena>, ArenaInterner<'arena>), ParseError>
Parse a DELETE statement, returning the interner for symbol resolution.
Sourcepub fn parse_update_with_interner(
input: &str,
arena: &'arena Bump,
) -> Result<(&'arena UpdateStmt<'arena>, ArenaInterner<'arena>), ParseError>
pub fn parse_update_with_interner( input: &str, arena: &'arena Bump, ) -> Result<(&'arena UpdateStmt<'arena>, ArenaInterner<'arena>), ParseError>
Parse an UPDATE statement, returning the interner for symbol resolution.
Sourcepub fn parse_insert_with_interner(
input: &str,
arena: &'arena Bump,
) -> Result<(&'arena InsertStmt<'arena>, ArenaInterner<'arena>), ParseError>
pub fn parse_insert_with_interner( input: &str, arena: &'arena Bump, ) -> Result<(&'arena InsertStmt<'arena>, ArenaInterner<'arena>), ParseError>
Parse an INSERT statement, returning the interner for symbol resolution.
Sourcepub fn parse_replace_with_interner(
input: &str,
arena: &'arena Bump,
) -> Result<(&'arena InsertStmt<'arena>, ArenaInterner<'arena>), ParseError>
pub fn parse_replace_with_interner( input: &str, arena: &'arena Bump, ) -> Result<(&'arena InsertStmt<'arena>, ArenaInterner<'arena>), ParseError>
Parse a REPLACE statement, returning the interner for symbol resolution.