2017-09-08 2 views
1

私は(C#の場合)コスモスグラフで次のクエリを実行している:あなたが "で「L」を見ることができるように(例えば、「等」)の文字「L」でのバグ

IDocumentQuery<dynamic> query = db.Client.CreateGremlinQuery<dynamic>(db.Graph, $"g.addV().property('value','{HttpUtility.UrlEncode("\"like\"")}')"); 
var result = query.ExecuteNextAsync().Result.FirstOrDefault(); 

をlike "は小文字です。しかし、Azureポータルの結果を見ると "Like"が格納されています!質問はです。この問題はどこから起こっていますか?。 cosmos dbには'などの特定の文字を格納する際に問題があるため、HttpUtility.UrlEncodeが存在することに注意してください(実際にはこれらの文字はありませんが実際にはあります)。 問題はHttpUtility.UrlEncodeにありません。その結果は監視されていて、 "%22like%22"でした。

私がテストしたように、この問題は "b"をインスタンスとして使用しない "l"文字で発生します。 Azureのポータルでの出力を参照してください:

enter image description here

+0

「L」が異なる方法で処理されるという単純な方法はないことが分かります。 –

+0

@PanagiotisKanavos確かにそうです。しかし、このクエリではどうなりましたか?これは再現可能なバグです。あなたが試すことができます。 – OmG

+0

保存する*実際の文字列は何ですか?補間する前に保管して点検してください。 'HttpUtility.UrlEncode'の結果は何ですか?なぜ、Uri.EscapeUriStringではなくHttpUtility.UrlEncodeですか?問題ではないが、結果は同じでなければならない。 –

答えて

1

今SQL構文で意味を持つ特定のキーワードが適切に処理されていないグレムリンパーサでいくつかの既知のバグがあります。値がallの場合、異常な動作が発生することもあります。これについてコスモスのチームに直接話しましたが、パーサーへの修正は間もなく予定されています。

+0

時には、あなたが蹄の声を聞くと、馬の代わりに*シマウマです –

1

この問題はバグであり、Microsoft.Azure.Graphsパッケージバージョン> = で解決されました。

まだお持ちでない場合は、ナゲットパッケージリファレンスをアップグレードしてください。

関連する問題