I found strange behaviour of SQL query in OrientDB Studio (also it repeated in REST protocol).
My server version is 2.2.5
Data in my class:
select * from name
Result:
{
"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)"
}
Where properties surname and name are text fields.
I create some SQL queries in Studio:
select * from name WHERE surname='O\'brien'
Result:
{
"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)"
}
Works good.
Next:
select * from name WHERE NOT (surname='O\'brien')
Result:
{
"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)"
}
In this case I obtained unexpected third result.
Next:
select * from name WHERE (NOT (surname='bar surname'))
Result:
{
"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)"
}
Looks fine.
Next:
select * from name WHERE (NOT (surname='O\'brien'))
Result:
java.lang.NullPointerException
Next:
select * from name WHERE (surname='O\'brien')
Result:
Empty result
My question - it is bug, or I do something wrong?
These queries are parts of query builder, so I need understand how works in OrientDB parentheses.
Thanks.
ODB ver2.2.12
Use different types of quote.
my data:
select from V
{
"result": [
{
"@type": "d",
"@rid": "#9:0",
"@version": 1,
"@class": "V",
"name": "O'Brian"
},
{
"@type": "d",
"@rid": "#10:0",
"@version": 1,
"@class": "V",
"name": "Pippo"
}
],
"notification": "Query executed in 0.013 sec. Returned 2 record(s)"
}
select from V where NOT (name = "O'Brian")
{
"result": [
{
"@type": "d",
"@rid": "#10:0",
"@version": 1,
"@class": "V",
"name": "Pippo"
}
],
"notification": "Query executed in 0.023 sec. Returned 1 record(s)"
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.