It seems that Statement::to_string overflows for deep expressions even if the default recursion limit is able to parse the expression without error:
#[test]fnrender_overflow(){let expr = "SELECT 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1";let statements = sqlparser::parser::Parser::parse_sql(&GenericDialect{}, expr).unwrap();println!("Was able to parse");assert_eq!(&statements[0].to_string(), expr);}Outputs
Was able to parse
thread 'normalize::span::description::sql::parser::render_overflow' has overflowed its stack
fatal runtime error: stack overflow
Version: 0.37.0
It seems that
Statement::to_stringoverflows for deep expressions even if the default recursion limit is able to parse the expression without error:Outputs
Version: 0.37.0