0

OrientDB Studio で SQL クエリの奇妙な動作を見つけました (REST プロトコルでも繰り返されます)。

サーバーのバージョンは 2.2.5 です

私のクラスのデータ:

select * from name

結果:

{
    "result": [
        {
            "@type": "d",
            "@rid": "#25:0",
            "@version": 1,
            "@class": "name",
            "surname": "foo surname",
            "name": "foo name"
        },
        {
            "@type": "d",
            "@rid": "#26:0",
            "@version": 1,
            "@class": "name",
            "surname": "bar surname",
            "name": "bar name"
        },
        {
            "@type": "d",
            "@rid": "#27:0",
            "@version": 1,
            "@class": "name",
            "surname": "O'brien",
            "name": "baz"
        }
    ],
    "notification": "Query executed in 0.069 sec. Returned 3 record(s)"
 }

プロパティの姓と名前はテキスト フィールドです。

Studio でいくつかの SQL クエリを作成します。

select * from name WHERE surname='O\'brien'

結果:

{
"result": [
    {
        "@type": "d",
        "@rid": "#27:0",
        "@version": 1,
        "@class": "name",
        "surname": "O'brien",
        "name": "baz"
       }
   ],
"notification": "Query executed in 0.016 sec. Returned 1 record(s)"

}

うまくいきます。

次:

select * from name WHERE NOT (surname='O\'brien')

結果:

{
"result": [
    {
        "@type": "d",
        "@rid": "#25:0",
        "@version": 1,
        "@class": "name",
        "surname": "foo surname",
        "name": "foo name"
    },
    {
        "@type": "d",
        "@rid": "#26:0",
        "@version": 1,
        "@class": "name",
        "surname": "bar surname",
        "name": "bar name"
    },
    {
        "@type": "d",
        "@rid": "#27:0",
        "@version": 1,
        "@class": "name",
        "surname": "O'brien",
        "name": "baz"
    }
],
"notification": "Query executed in 0.015 sec. Returned 3 record(s)"

}

この場合、予期しない 3 番目の結果が得られました。

次:

select * from name WHERE (NOT (surname='bar surname'))

結果:

{
   "result": [
       {
           "@type": "d",
           "@rid": "#25:0",
           "@version": 1,
           "@class": "name",
           "surname": "foo surname",
           "name": "foo name"
        },
        {
           "@type": "d",
           "@rid": "#27:0",
           "@version": 1,
           "@class": "name",
           "surname": "O'brien",
           "name": "baz"
        }
    ],
    "notification": "Query executed in 0.017 sec. Returned 2 record(s)"
}

良さそう。

次:

select * from name WHERE (NOT (surname='O\'brien'))

結果:

java.lang.NullPointerException

次:

select * from name WHERE (surname='O\'brien')

結果:

Empty result

私の質問 - それはバグですか、それとも何か間違っていますか?

これらのクエリはクエリ ビルダーの一部であるため、OrientDB の括弧内でどのように機能するかを理解する必要があります。

ありがとう。

4

1 に答える 1