apache / apache/datafusion-sqlparser-rs
Regression: Decreased tolerance to column names matching SQL keywords
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Rust
- Estrelas
- 3.5k
- Forks
- 774
- Merge médio
- 4d 9h
- PRs com merge (30d)
- 17
Descrição
Related to: https://github.com/apache/datafusion/issues/17802
Between versions 0.57.0 and 0.58.0 there appears to be a regression that decreased parser tolerance to column names that collide with SQL keywords.
Example:
use sqlparser::dialect::GenericDialect;
use sqlparser::parser::Parser;
fn main() {
let dialect = GenericDialect {}; // or AnsiDialect
let sql = r#"
SELECT
'a' as a,
offset
FROM my_table
"#;
let ast = Parser::parse_sql(&dialect, sql).unwrap();
println!("AST: {:#?}", ast);
}
This works on version 0.57.0, but fails on 0.58.0 with error:
ParserError("Expected: end of statement, found: my_table at Line: 5, Column: 14")
These queries work fine, which adds some confusing inconsistency into the mix:
SELECT
offset
FROM my_table
SELECT
offset,
'a' as a
FROM my_table
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Comece reproduzindo a consulta reportada com GenericDialect e AnsiDialect nas versões 0.57.0 e 0.58.0 e, em seguida, compare o comportamento do parser em torno da coluna offset e da cláusula FROM. Rastreie os pontos de entrada do parser alcançados por este exemplo e adicione um teste de regressão cobrindo a consulta que falha; considera-se concluído quando a consulta é analisada de forma consistente sem quebrar as variantes que funcionam.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- rust, sql
- Domínio
- compilers
- Tipo de issue
- Bug
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 52/100