Hi Steve,

Thank you very much, I'll check it asap.
There is a way to re-enable the old traverse, you have to disable strict
SQL parsing:

ALTER DATABASE CUSTOM strictSQL=false

Anyway, I wouldn't recommend it in the long run, as you will lose a lot of
stability in SQL parsing

I'll give you a feedback asap about the query

Thanks

Luigi

2018-03-20 16:30 GMT+01:00 Steven Tomer <[email protected]>:

> Luigi,
>
> I've zipped up the dataset I've been using and am attaching it here.
>
> We really need a way to do queries like this.  Is there any chance we can
> re-enable the old traverse() operator?
>
> Thanks,
>
> Steve
>
> On Tue, Mar 13, 2018 at 9:08 AM, Luigi Dell'Aquila <
> [email protected]> wrote:
>
>> Hi Steve,
>>
>> ah, got it, the old traverse() stopped when it found duplicates, while
>> the MATCH doesn't.
>>
>> Do you have a dataset I can check, so that I can try it and give you
>> better help?
>>
>> Thanks
>>
>> Luigi
>>
>>
>>
>> 2018-03-13 16:03 GMT+01:00 Steven Tomer <[email protected]>:
>>
>>> Luigi,
>>>
>>> That query never returns (looks like it goes into an infinite loop).
>>>
>>> I had to kill the server process to make it stop.
>>>
>>> Any other ideas?
>>>
>>> Steve
>>>
>>> On Tue, Mar 13, 2018 at 8:16 AM, Luigi Dell'Aquila <
>>> [email protected]> wrote:
>>>
>>>> Hi Steve,
>>>>
>>>> Try this
>>>>
>>>> SELECT expand(person) FROM (
>>>>   MATCH {class: Person, as: person, where: (givenname =
>>>> 'William')}.in(){while: ($depth = 0 OR givenname != 'George'), where:
>>>> (givenname = 'George')} RETURN person
>>>> )
>>>>
>>>> The $depth = 0 guarantees that you don't stop traversing immediately;
>>>> the givenname != 'George' just stops traversing as soon as you find a
>>>> "George", I guess it is what you want (you don't need duplicates)
>>>>
>>>> Thanks
>>>>
>>>> Luigi
>>>>
>>>> 2018-03-13 14:52 GMT+01:00 Steven Tomer <[email protected]>:
>>>>
>>>>> Hello Luigi,
>>>>>
>>>>> That's sad news indeed.  It will require a major task to rip out all
>>>>> of the places we're using traverse().
>>>>>
>>>>> I've been playing around with the MATCH operator, and I can't get it
>>>>> to model the former query:
>>>>>
>>>>> SELECT FROM Person WHERE givenname = 'William' and in
>>>>> traverse(0,-1,'in') ( givenname = 'George' )
>>>>>
>>>>> I've tried:
>>>>>
>>>>> MATCH {class: Person, as: person, where: (givenname =
>>>>> 'William')}.in(){while: ($depth > 0), where: (givenname = 'George')} 
>>>>> RETURN
>>>>> person
>>>>> MATCH {class: Person, as: person, where: (givenname =
>>>>> 'William')}.in('in'){while: ($depth > 0), where: (givenname = 'George')}
>>>>> RETURN person
>>>>> MATCH {class: Person, as: person, where: (givenname =
>>>>> 'William')}.in('MyEdge'){while: ($depth > 0), where: (givenname =
>>>>> 'George')} RETURN person
>>>>>
>>>>> None of your examples have an intermediary 'edge' type between them.
>>>>> We have Person -> MyEdge -> Person -> MyEdge -> Person.  The traverse
>>>>> operator lets me hop over the edges.  How do you do it with MATCH?
>>>>>
>>>>> Steve
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Mar 13, 2018 at 2:07 AM, Luigi Dell'Aquila <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Steven,
>>>>>>
>>>>>> The traverse() operator was deprecated long time ago and is not fully
>>>>>> supported anymore.
>>>>>> I strongly suggest you to use TRAVERSE queries (
>>>>>> https://orientdb.com/docs/2.2.x/SQL-Traverse.html) or even better
>>>>>> MATCH queries (https://orientdb.com/docs/2.2.x/SQL-Match.html)
>>>>>>
>>>>>> Another thing: if you are migrating now, you could probably consider
>>>>>> v 3.0 (see https://orientdb.com/orientdb-labs/), the final GA will
>>>>>> be released this week
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> Luigi
>>>>>>
>>>>>>
>>>>>> 2018-03-12 23:00 GMT+01:00 StevenTomer <[email protected]>:
>>>>>>
>>>>>>> Hello,
>>>>>>>
>>>>>>> I'm using OrientDB 2.2.32.  We're updating our software from 2.0.8.
>>>>>>>
>>>>>>> The traverse() operator in selects does not appear to be working.
>>>>>>>
>>>>>>> When I run the attached program, I get a com.orientechnologies.orient
>>>>>>> .core.sql.OCommandSQLParsingException.
>>>>>>>
>>>>>>> Exception in thread "main" com.orientechnologies.orient.c
>>>>>>> ore.sql.OCommandSQLParsingException: Error parsing query:
>>>>>>> SELECT FROM Person WHERE givenname = 'William' and in
>>>>>>> traverse(0,-1,'in') ( givenname = 'George' )
>>>>>>>                                                     ^
>>>>>>> Encountered "" at line 1, column 52.
>>>>>>> Was expecting one of:
>>>>>>>
>>>>>>> DB name="familytree"
>>>>>>>
>>>>>>> I hope it hasn't been removed.  We use both the TRAVERSE FROM and
>>>>>>> SELECT FROM WHERE traverse() extensively.
>>>>>>>
>>>>>>> TRAVERSE FROM is wonderful for gathering a group of records from a
>>>>>>> given point.
>>>>>>> The traverse() operator is wonderful for queries like the above
>>>>>>> (return all people named William
>>>>>>> descended from a person named George.
>>>>>>>
>>>>>>> We really need both.
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> Steven Tomer
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> ---
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "OrientDB" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>> send an email to [email protected].
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>>
>>>>>> --
>>>>>>
>>>>>> ---
>>>>>> You received this message because you are subscribed to a topic in
>>>>>> the Google Groups "OrientDB" group.
>>>>>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>>>>>> pic/orient-database/ic5UE-kyi-w/unsubscribe.
>>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>>> [email protected].
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> ---
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "OrientDB" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>> --
>>>>
>>>> ---
>>>> You received this message because you are subscribed to a topic in the
>>>> Google Groups "OrientDB" group.
>>>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>>>> pic/orient-database/ic5UE-kyi-w/unsubscribe.
>>>> To unsubscribe from this group and all its topics, send an email to
>>>> [email protected].
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>> --
>>>
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "OrientDB" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
>>
>> ---
>> You received this message because you are subscribed to a topic in the
>> Google Groups "OrientDB" group.
>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>> pic/orient-database/ic5UE-kyi-w/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
>
> ---
> You received this message because you are subscribed to the Google Groups
> "OrientDB" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to