pg_parse 0.12.0

PostgreSQL parser that uses the actual PostgreSQL server source to parse SQL queries and return the internal PostgreSQL parse tree.
Documentation
#[test]
fn it_can_parse_a_simple_function() {
    let result = pg_parse::parse_plpgsql(
        " \
        CREATE OR REPLACE FUNCTION cs_fmt_browser_version(v_name varchar, v_version varchar) \
        RETURNS varchar AS $$ \
        BEGIN \
            IF v_version IS NULL THEN \
                RETURN v_name; \
            END IF; \
            RETURN v_name || '/' || v_version; \
        END; \
        $$ LANGUAGE plpgsql;",
    );
    assert!(result.is_ok());
    let result = result.unwrap();
    let expected = include_str!("data/tree/simple_plpgsql.json");
    assert_eq!(serde_json::to_string_pretty(&result).unwrap(), expected);
}

#[test]
fn it_will_error_on_invalid_input() {
    let result = pg_parse::parse_plpgsql("CREATE RANDOM ix_test ON contacts.person;");
    assert!(result.is_err());
    assert_eq!(
        result.err().unwrap(),
        pg_parse::Error::ParseError("syntax error at or near \"RANDOM\"".into())
    );
}