apache / apache/datafusion-sqlparser-rs
[Postgres]: `?` JSON operator cannot be parsed without a space after the field name
- 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