apache / apache/datafusion-sqlparser-rs

Add Support for Postgres JSON prepared query

Ouverte
#132 1 commentaire 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

I am using sqlparser 0.4.0 with rust version 1.36.0
Query:
`
SELECT "emp"."id", "emp"."data" FROM "emp" WHERE id = $1 AND data->>'id'=$2 -- binds: ["emp_name", "123"]
`

Error:
`ParserError("Expected an expression, found: >")`

Dialect Used:
```rust
impl Dialect for MyPostgresSqlDialect {
fn is_identifier_start(&self, ch: char) -> bool {
(ch >= 'a' && ch <= 'z')
|| (ch >= 'A' && ch <= 'Z')
|| (ch == '@')
|| ch == '$'
|| ch == '_'
}

fn is_identifier_part(&self, ch: char) -> bool {
(ch >= 'a' && ch <= 'z')
|| (ch >= 'A' && ch <= 'Z')
|| (ch >= '0' && ch <= '9')
|| (ch == '@')
|| ch == '$'
|| ch == '_'
}
}
```

Even I am adding chars `-` and `>` into `is_identifier_part` then it is giving Error:: `ParserError("Expected end of statement, found: \'id\'")`

Guide de contribution

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

Piste de recherche

Commencez par reproduire la requête et l’erreur signalées avec le dialecte PostgreSQL, puis examinez comment is_identifier_start et is_identifier_part gèrent l’opérateur d’extraction JSON et les espaces réservés des requêtes préparées. Le travail est terminé lorsque la requête est analysée avec succès sans nécessiter de caractères d’identifiant ad hoc, avec une couverture pour l’expression SQL présentée.

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

Évaluation

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

Recevez les nouvelles issues par e-mail

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