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.
