I was finally able to locally update my embedded OrientDB instance to 1.7.8 (not trivial).
As I mentioned, we are running OrientDB embedded in the Apache Karaf OSGI container (version 2.3.2), and I'm running into exceptions when Karaf is trying to find all the dependencies. I'm still getting the exact same error message that the "in" function doesn't exist. Any other ideas as to what we could be doing wrong? It doesn't seem like the orientdb version change had an effect, so I'm assuming either its something we are doing in our code, or this could be another bug? Let me know what else I can try... Regards, Andrew On Wednesday, August 20, 2014 10:36:15 PM UTC-6, Lvc@ wrote: > > Hi Andrew, > Functions are automatically loaded as Java Service from Class Loader, so > with OSGi you could have some problem. Since 1.7rc2 we fixed A LOT of > issues and I remember for sure also something with OSGi. > > WDYT to install 1.7.8, put a copy of your db under 1.7.8 and try it again? > > Lvc@ > > ᐧ > > > On 21 August 2014 01:03, amoore <[email protected] <javascript:>> wrote: > >> Hi, >> >> We are using version v1.7 rc2, and it is an embedded instance in a karaf >> osgi container. >> >> I'm struggling to figure out why the following query runs from the >> command-line console, but not programmatically from our java code: >> >> >> select from ( traverse in('EntityParent') from ( select from Entity >> where name = 'Entity-A' ) ) where $depth > 0 >> >> >> >> I have a directed hierarchy of vertices of a generic class named Entity, >> and I'm simply trying to get all the descendents. >> >> As I stated before, his query works when I run from the command-line >> console (console.sh), but when I run it within our application against our >> embedded instance of OrientDB, it fails with the following exception: >> >> Caused by: >> com.orientechnologies.orient.core.sql.OCommandSQLParsingException: Error on >> parsing command at position #0: No function with name 'in', available names >> are : >> [ifnull,count,last,set,newexcept,sum,date,distinct,distance,document,if,EXCEPT,map,avg,min,encode,coalesce,max,eval,list,format,difference,decode,unionall,sysdate,intersect,first] >> at >> com.orientechnologies.orient.core.sql.OSQLEngine.getFunction(OSQLEngine.java:354) >> at >> com.orientechnologies.orient.core.sql.functions.OSQLFunctionRuntime.setRoot(OSQLFunctionRuntime.java:163) >> at >> com.orientechnologies.orient.core.sql.filter.OSQLFilterItemAbstract.<init>(OSQLFilterItemAbstract.java:56) >> at >> com.orientechnologies.orient.core.sql.functions.OSQLFunctionRuntime.<init>(OSQLFunctionRuntime.java:51) >> at >> com.orientechnologies.orient.core.sql.OSQLHelper.getFunction(OSQLHelper.java:218) >> at >> com.orientechnologies.orient.core.sql.OSQLHelper.parseValue(OSQLHelper.java:197) >> at >> com.orientechnologies.orient.core.sql.OCommandExecutorSQLTraverse.parseFields(OCommandExecutorSQLTraverse.java:200) >> at >> com.orientechnologies.orient.core.sql.OCommandExecutorSQLTraverse.parse(OCommandExecutorSQLTraverse.java:66) >> at >> com.orientechnologies.orient.core.sql.OCommandExecutorSQLTraverse.parse(OCommandExecutorSQLTraverse.java:51) >> at >> com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.parse(OCommandExecutorSQLDelegate.java:49) >> at >> com.orientechnologies.orient.core.sql.OCommandExecutorSQLDelegate.parse(OCommandExecutorSQLDelegate.java:33) >> at >> com.orientechnologies.orient.core.sql.filter.OSQLTarget.extractTargets(OSQLTarget.java:99) >> at >> com.orientechnologies.orient.core.sql.filter.OSQLTarget.<init>(OSQLTarget.java:61) >> ... 24 more >> >> I'm pretty sure the classes in the orientdb-graphdb library are being >> included in our application... >> (as I noticed was necessary in this post: >> https://groups.google.com/forum/#!searchin/orient-database/No$20function$20with$20name$20$27in$27/orient-database/648vSSDV_NM/eB5RWaENCIUJ >> >> ) >> >> Here is a code snippet from our application to show which classes we are >> using in our client for querying the OrientDB graph database: >> >> >> ... >> import com.orientechnologies.common.io.OIOException; >> import com.orientechnologies.orient.core.Orient; >> import com.orientechnologies.orient.core.command.OCommandRequest; >> import com.orientechnologies.orient.core.db.ODatabase.STATUS; >> import com.orientechnologies.orient.core.db.ODatabaseRecordThreadLocal; >> import com.orientechnologies.orient.core.db.document. >> ODatabaseDocumentPool; >> import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx; >> import com.orientechnologies.orient.core.exception.ODatabaseException; >> import com.orientechnologies.orient.core.index.OIndexManager; >> import com.orientechnologies.orient.core.index.OIndexManagerRemote; >> import com.orientechnologies.orient.core.metadata.OMetadata; >> import com.orientechnologies.orient.core.metadata.schema.OSchema; >> import com.orientechnologies.orient.core.record.impl.ODocument; >> import com.orientechnologies.orient.core.sql.OCommandSQL; >> import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery; >> import com.tinkerpop.blueprints.impls.orient.OrientBaseGraph; >> import com.tinkerpop.blueprints.impls.orient.OrientDynaElementIterable; >> import com.tinkerpop.blueprints.impls.orient.OrientGraph; >> import com.tinkerpop.blueprints.impls.orient.OrientGraphNoTx; >> import com.tinkerpop.blueprints.impls.orient.OrientVertex; >> ... >> >> public OrientDynaElementIterable runGraphQuery(final String iText, >> final int iLimit, final String fetchPlan, >> final OrientBaseGraph graph) { >> >> long start = 0; >> if (LOG.isDebugEnabled()) { >> start = new Date().getTime(); >> LOG.debug(String.format("Executing OrientDB graph >> query:\n%s\n\nLimit: %s\nFetch Plan: %s", >> iText, iLimit, fetchPlan)); >> } >> >> OCommandRequest command = new OSQLSynchQuery< >> OrientDynaElementIterable>(iText, iLimit); >> >> if (StringUtils.isNotBlank(fetchPlan)) { >> command.setFetchPlan(fetchPlan); >> } >> >> command = graph.command(command); >> >> OrientDynaElementIterable result = null; >> try { >> result = command.execute(); >> } ... >> } >> >> >> >> >> I generally would have guessed if the query worked from the console, it >> would also work programmatically. >> >> Is the syntax of my query not correct? >> Are we doing something wrong in our code when submitting the query? >> >> Thanks in advance for your help! >> >> Regards, >> >> Andrew >> >> -- >> >> --- >> 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] <javascript:>. >> 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.
