apache / apache/datafusion-sqlparser-rs

[Postgres]: `?` JSON operator cannot be parsed without a space after the field name

Ouverte
#1,992 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Rust
Étoiles
3.5k
Forks
772
Merge moyen
4 j 9 h
PR mergées (30 j)
17

Description

When using `PostgreSqlDialect`, the question mark cannot be parsed if it is not followed by a space, whereas postgres accepts the query. The following code panics when parsing `broken`:

```rust
fn main() {
let broken = r#"SELECT user?'adress' FROM my_table"#;
let working = r#"SELECT user? 'adress' FROM my_table"#;

let working_parsed =
sqlparser::parser::Parser::parse_sql(&sqlparser::dialect::PostgreSqlDialect {}, working)
.expect("Failed to parse SQL query");
println!("{:?}", working_parsed);

let broken_parsed =
sqlparser::parser::Parser::parse_sql(&sqlparser::dialect::PostgreSqlDialect {}, broken)
.expect("Failed to parse SQL query");
println!("{:?}", broken_parsed);
}
```

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par exécuter l’exemple fourni de Parser::parse_sql avec PostgreSqlDialect et comparez les deux formes de requête. Suivez la manière dont le parser traite ? à côté du nom du champ, puis ajoutez une couverture pour les deux formes d’espacement et confirmez que l’opérateur JSON de PostgreSQL est analysé sans provoquer de panic.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
postgresql, rust
Domaine
compilers, databases
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
55/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.