parse_with_arena_fallback

Function parse_with_arena_fallback 

Source
pub fn parse_with_arena_fallback(sql: &str) -> Result<Statement, ParseError>
Expand description

Parse SQL using arena allocation where supported, falling back to standard parsing.

This function provides optimized parsing by:

  1. Detecting the statement type from the first token
  2. Using arena-allocated parsing for SELECT statements
  3. Converting arena AST to standard heap-allocated AST
  4. Falling back to standard parsing for unsupported statement types

§Performance

Arena parsing can provide 10-15% improvement for complex SELECT statements due to reduced allocation overhead and better cache locality. The conversion to standard AST types adds minimal overhead.

§Supported Statement Types

Currently uses arena parsing for:

  • SELECT statements (including CTEs, subqueries, joins)

Falls back to standard parsing for:

  • INSERT, UPDATE, DELETE (arena support planned for future)
  • DDL statements (CREATE, ALTER, DROP)
  • Transaction statements (BEGIN, COMMIT, ROLLBACK)
  • Other SQL statements

§Example

use vibesql_parser::parse_with_arena_fallback;

// Uses arena parsing
let select = parse_with_arena_fallback("SELECT * FROM users WHERE id = 1").unwrap();

// Falls back to standard parsing
let insert = parse_with_arena_fallback("INSERT INTO users VALUES (1, 'Alice')").unwrap();