apache / apache/datafusion-sqlparser-rs

Regression: Decreased tolerance to column names matching SQL keywords

Aberta
#2,049 0 comentários 0 reações 0 responsáveis Ver no GitHub

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

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. 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

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.