Incorrect escaping for order keyword in Oracle

オープン
#595 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

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

調査の方向性

まず、issue に示されている F# SQLProvider クエリを Oracle 11 XE に対して再現し、生成された SQL を調べます。JOIN 内の order エイリアスに重点を置いてください。エイリアスが Oracle のキーワードである場合でも同じクエリが正常に実行され、生成された SQL が有効なエスケープを使用していれば完了です。

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

説明

Oracle
Description

I have the following query for oracle :

let qry =
        query {
            for cust in ctx.Onur.Customers do
            join order in (!!) ctx.Onur.Customers on (cust.CustomerId = order.CustomerId)
            select (cust.CustomerId)


        } |> Seq.toArray |> printf "%A"

This generates the following SQL :

SELECT cust.CUSTOMER_ID as "cust.CUSTOMER_ID" FROM ONUR.CUSTOMERS cust LEFT OUTER JOIN  ONUR.CUSTOMERS order on cust.CUSTOMER_ID = order.CUSTOMER_ID "

The problem is here "ONUR.CUSTOMERS order" since order is also a keyword for Oracle the query fails with a missing keyword error. If you use any other name than order the query works. So there should be a way to escape order

Related information
  • Oracle 11 XE
  • Windows
  • Latest version of SqlProvider
  • .net core 2.2
主要言語
F#
スター
627
フォーク
147
平均マージ
2時間 2分
マージ済み PR(30日)
1

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

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

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

fsprojects/SQLProvider のほかの issue

fsprojects/SQLProvider の issue をすべて見る

似ている issue

Databases の issue をもっと見る

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

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