apache / apache/datafusion-sqlparser-rs

Escaping of non-latin column names

オープン
#296 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Rust
スター
3.5k
フォーク
772
平均マージ
4日 9時間
マージ済み PR(30日)
17

説明

Hello!

I'm using `DataFusion` to query my csv file. The problem is: column names consists of Cyrillic letters and within sql query I need a way to escape column names. I've tried: single quotes, double quotes, backticks, square brackets.

In all cases I get the following error:
```
2021-02-22T20:45:46.090317300+03:00 DEBUG sqlparser::parser - parsing expr
2021-02-22T20:45:46.092602200+03:00 ERROR convert - error: SQL error: ParserError("Expected an expression:, found: `")
```

Code sample:
```rust
let mut ctx = ExecutionContext::new();

let csv_file = CsvFile::try_new(args.input.as_path().to_str().unwrap(), CsvReadOptions::new())?;
ctx.register_table("transactions", Arc::new(csv_file));

let df = ctx.sql("SELECT `ДАТА` FROM transactions")?;

let results = df.collect().await?;
log::info!("result: {:?}", results);
```

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

このレポートは `ctx.sql(...)` を通じて SQL parser を実行し、失敗している `sqlparser::parser` パスを示しています。まず、引用符で囲まれた識別子がどのようにパースされるかを追跡してください。キリル文字の列名を使ってクエリを再現し、サポートされているエスケープ形式で正常にパースできることを確認してください。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
rust, sql
領域
databases
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
明確に書かれている
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。