- 
                Notifications
    You must be signed in to change notification settings 
- Fork 666
Closed
Description
This bug rhymes with #1244.
parse_sql normally doesn't care whether a single statement is terminated by a semicolon or end of string, but when parsing Snowflake syntax COPY INTO it does.
This deviation seems like a bug.
Discovered on sqlparser v0.51.0, tested on v0.52.0:
use sqlparser::{
    dialect::SnowflakeDialect,
    parser::{Parser, ParserError},
};
fn main() {
    let dialect = SnowflakeDialect {};
    // With other SQL, semicolon being there or not does not seem to matter:
    {
        let no_semicolon = Parser::parse_sql(&dialect, "select 1");
        assert!(no_semicolon.is_ok());
    }
    {
        let with_semicolon = Parser::parse_sql(&dialect, "select 1;");
        assert!(with_semicolon.is_ok());
    }
    // With the SnowFlake COPY INTO statement, it does seem to matter.
    // Parsing only works when the semicolon is omitted:
    {
        let no_semicolon = Parser::parse_sql(&dialect, "COPY INTO foo FROM @bar");
        println!("no semicolon: {no_semicolon:?}");
        assert!(no_semicolon.is_ok());
    }
    {
        // BUG
        let with_semicolon = Parser::parse_sql(&dialect, "COPY INTO foo FROM @bar;");
        println!("with semicolon: {with_semicolon:?}");
        assert_eq!(
            with_semicolon,
            Err(ParserError::ParserError(
                "Expected: stage name identifier, found: EOF".to_string()
            ))
        );
    }
}Metadata
Metadata
Assignees
Labels
No labels