[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

no support for SELECT ... WHERE EXISTS



I tried to run the JDO JRELAY query samples (simple2) with mckoi and got the 
following output:
[waldo@microstar jrelay_2_0_2]$ ant run
Buildfile: build.xml

run:
     [java] Book Storie, isbn: xyz-0
     [java] Article Piano Transport
     [java] Book Pensieros, isbn: xyz-1
     [java] Article Optik
     [java] Book Bagombo Snuff Box, isbn: xyz-2
     [java] SELECT failed: SELECT T0.CLASS_ID, T0.ID, T0.VERSION, 
T0.FIRSTNAME, T0.LASTNAME, T0.LOCALE FROM AUTHOR T0  WHERE EXISTS ( SELECT 
DOCUMENT FROM DOCUMENT_AUTHOR_REL, DOCUMENT V0 WHERE DOCUMENT = V0.ID AND 
AUTHOR = T0.ID AND V0.TITLE LIKE 'Bag%')
     [java] com.mckoi.database.jdbc.MSQLException: Encountered "EXISTS" at 
line 1, column 99.
     [java] Was expecting one of:
     [java]     <BOOLEAN_LITERAL> ...
     [java]     "null" ...
     [java]     "new" ...
     [java]     "date" ...
     [java]     "time" ...
     [java]     "timestamp" ...
     [java]     <NUMBER_LITERAL> ...
     [java]     <STRING_LITERAL> ...
     [java]     <QUOTED_VARIABLE> ...
     [java]     <IDENTIFIER> ...
     [java]     <DOT_DELIMINATED_REF> ...
     [java]     <QUOTED_DELIMINATED_REF> ...
     [java]     "?" ...
     [java]     "(" ...
     [java]     "not" ...
     [java]     "count" ...
     [java]     "trim" ...
     [java]     "if" ...
     [java]     "user" ...
     [java]
     [java]     at 
com.mckoi.database.jdbc.RemoteDatabaseInterface.execQuery(RemoteDatabaseInterface.java:247)
     [java]     at 
com.mckoi.database.jdbc.MConnection.executeQuery(MConnection.java:348)
     [java]     at 
com.mckoi.database.jdbc.MStatement.executeQuery(MStatement.java:110)
     [java]     at 
com.mckoi.database.jdbc.MStatement.executeQuery(MStatement.java:127)
     [java]     at com.jrelay.bl.g.executeQuery(Unknown Source)
     [java]     at com.jrelay.bg.b.f.a(Unknown Source)
     [java]     at com.jrelay.bg.b.f.a(Unknown Source)
     [java]     at com.jrelay.bg.b.e.a(Unknown Source)
     [java]     at com.jrelay.ba.ag.a(Unknown Source)
     [java]     at com.jrelay.ba.ag.a(Unknown Source)
     [java]     at com.jrelay.ba.w.a(Unknown Source)
     [java]     at com.jrelay.ba.w.executeWithArray(Unknown Source)
     [java]     at com.jrelay.bg.e.execute(Unknown Source)
     [java]     at jrelay.samples.simple2.Main.query(Main.java:185)
     [java]     at jrelay.samples.simple2.Main.main(Main.java:21)
     [java] CAUSE: com.mckoi.database.sql.ParseException: Encountered 
"EXISTS" at line 1, column 99.
     [java] Was expecting one of:
     [java]     <BOOLEAN_LITERAL> ...
     [java]     "null" ...
     [java]     "new" ...
     [java]     "date" ...
     [java]     "time" ...
     [java]     "timestamp" ...
     [java]     <NUMBER_LITERAL> ...
     [java]     <STRING_LITERAL> ...
     [java]     <QUOTED_VARIABLE> ...
     [java]     <IDENTIFIER> ...
     [java]     <DOT_DELIMINATED_REF> ...
     [java]     <QUOTED_DELIMINATED_REF> ...
     [java]     "?" ...
     [java]     "(" ...
     [java]     "not" ...
     [java]     "count" ...
     [java]     "trim" ...
     [java]     "if" ...
     [java]     "user" ...
     [java]
     [java]     at 
com.mckoi.database.sql.SQL.generateParseException(SQL.java:4590)
     [java]     at com.mckoi.database.sql.SQL.jj_consume_token(SQL.java:4462)
     [java]     at com.mckoi.database.sql.SQL.Operand(SQL.java:2759)
     [java]     at com.mckoi.database.sql.SQL.expression(SQL.java:2541)
     [java]     at com.mckoi.database.sql.SQL.DoExpression(SQL.java:2519)
     [java]     at 
com.mckoi.database.sql.SQL.ConditionsExpression(SQL.java:2504)
     [java]     at 
com.mckoi.database.sql.SQL.GetTableSelectExpression(SQL.java:1158)
     [java]     at com.mckoi.database.sql.SQL.Select(SQL.java:300)
     [java]     at com.mckoi.database.sql.SQL.Statement(SQL.java:161)
     [java]     at 
com.mckoi.database.interpret.SQLQueryExecutor.execute(SQLQueryExecutor.java:91)
     [java]     at 
com.mckoi.database.jdbcserver.AbstractJDBCDatabaseInterface.execQuery(AbstractJDBCDatabaseInterface.java:321)
     [java]     at 
com.mckoi.database.jdbcserver.JDBCDatabaseInterface.execQuery(JDBCDatabaseInterface.java:253)
     [java]     at 
com.mckoi.database.jdbcserver.JDBCProcessor.queryCommand(JDBCProcessor.java:339)
     [java]     at 
com.mckoi.database.jdbcserver.JDBCProcessor.processQuery(JDBCProcessor.java:289)
     [java]     at 
com.mckoi.database.jdbcserver.JDBCProcessor.processJDBCCommand(JDBCProcessor.java:195)
     [java]     at 
com.mckoi.database.jdbcserver.StreamJDBCServerConnection.processRequest(StreamJDBCServerConnection.java:133)
     [java]     at 
com.mckoi.database.jdbcserver.MultiThreadedConnectionPoolServer$1.run(MultiThreadedConnectionPoolServer.java:170)
     [java]     at com.mckoi.database.WorkerThread.run(WorkerThread.java:122)

     [java] javax.jdo.JDODataStoreException: Query failed
     [java] NestedThrowables:
     [java] com.mckoi.database.jdbc.MSQLException: Encountered "EXISTS" at 
line 1, column 99.
     [java] Was expecting one of:
     [java]     <BOOLEAN_LITERAL> ...
     [java]     "null" ...
     [java]     "new" ...
     [java]     "date" ...
     [java]     "time" ...
     [java]     "timestamp" ...
     [java]     <NUMBER_LITERAL> ...
     [java]     <STRING_LITERAL> ...
     [java]     <QUOTED_VARIABLE> ...
     [java]     <IDENTIFIER> ...
     [java]     <DOT_DELIMINATED_REF> ...
     [java]     <QUOTED_DELIMINATED_REF> ...
     [java]     "?" ...
     [java]     "(" ...
     [java]     "not" ...
     [java]     "count" ...
     [java]     "trim" ...
     [java]     "if" ...
     [java]     "user" ...
     [java]
     [java]     at com.jrelay.bg.b.f.a(Unknown Source)
     [java]     at com.jrelay.bg.b.f.a(Unknown Source)
     [java]     at com.jrelay.bg.b.e.a(Unknown Source)
     [java]     at com.jrelay.ba.ag.a(Unknown Source)
     [java]     at com.jrelay.ba.ag.a(Unknown Source)
     [java]     at com.jrelay.ba.w.a(Unknown Source)
     [java]     at com.jrelay.ba.w.executeWithArray(Unknown Source)
     [java]     at com.jrelay.bg.e.execute(Unknown Source)
     [java]     at jrelay.samples.simple2.Main.query(Main.java:185)
     [java]     at jrelay.samples.simple2.Main.main(Main.java:21)
     [java] NestedThrowablesStackTrace:
     [java] com.mckoi.database.jdbc.MSQLException: Encountered "EXISTS" at 
line 1, column 99.
     [java] Was expecting one of:
     [java]     <BOOLEAN_LITERAL> ...
     [java]     "null" ...
     [java]     "new" ...
     [java]     "date" ...
     [java]     "time" ...
     [java]     "timestamp" ...
     [java]     <NUMBER_LITERAL> ...
     [java]     <STRING_LITERAL> ...
     [java]     <QUOTED_VARIABLE> ...
     [java]     <IDENTIFIER> ...
     [java]     <DOT_DELIMINATED_REF> ...
     [java]     <QUOTED_DELIMINATED_REF> ...
     [java]     "?" ...
     [java]     "(" ...
     [java]     "not" ...
     [java]     "count" ...
     [java]     "trim" ...
     [java]     "if" ...
     [java]     "user" ...
     [java]
     [java]     at 
com.mckoi.database.jdbc.RemoteDatabaseInterface.execQuery(RemoteDatabaseInterface.java:247)
     [java]     at 
com.mckoi.database.jdbc.MConnection.executeQuery(MConnection.java:348)
     [java]     at 
com.mckoi.database.jdbc.MStatement.executeQuery(MStatement.java:110)
     [java]     at 
com.mckoi.database.jdbc.MStatement.executeQuery(MStatement.java:127)
     [java]     at com.jrelay.bl.g.executeQuery(Unknown Source)
     [java]     at com.jrelay.bg.b.f.a(Unknown Source)
     [java]     at com.jrelay.bg.b.f.a(Unknown Source)
     [java]     at com.jrelay.bg.b.e.a(Unknown Source)
     [java]     at com.jrelay.ba.ag.a(Unknown Source)
     [java]     at com.jrelay.ba.ag.a(Unknown Source)
     [java]     at com.jrelay.ba.w.a(Unknown Source)
     [java]     at com.jrelay.ba.w.executeWithArray(Unknown Source)
     [java]     at com.jrelay.bg.e.execute(Unknown Source)
     [java]     at jrelay.samples.simple2.Main.query(Main.java:185)
     [java]     at jrelay.samples.simple2.Main.main(Main.java:21)
     [java] CAUSE: com.mckoi.database.sql.ParseException: Encountered 
"EXISTS" at line 1, column 99.
     [java] Was expecting one of:
     [java]     <BOOLEAN_LITERAL> ...
     [java]     "null" ...
     [java]     "new" ...
     [java]     "date" ...
     [java]     "time" ...
     [java]     "timestamp" ...
     [java]     <NUMBER_LITERAL> ...
     [java]     <STRING_LITERAL> ...
     [java]     <QUOTED_VARIABLE> ...
     [java]     <IDENTIFIER> ...
     [java]     <DOT_DELIMINATED_REF> ...
     [java]     <QUOTED_DELIMINATED_REF> ...
     [java]     "?" ...
     [java]     "(" ...
     [java]     "not" ...
     [java]     "count" ...
     [java]     "trim" ...
     [java]     "if" ...
     [java]     "user" ...
     [java]
     [java]     at 
com.mckoi.database.sql.SQL.generateParseException(SQL.java:4590)
     [java]     at com.mckoi.database.sql.SQL.jj_consume_token(SQL.java:4462)
     [java]     at com.mckoi.database.sql.SQL.Operand(SQL.java:2759)
     [java]     at com.mckoi.database.sql.SQL.expression(SQL.java:2541)
     [java]     at com.mckoi.database.sql.SQL.DoExpression(SQL.java:2519)
     [java]     at 
com.mckoi.database.sql.SQL.ConditionsExpression(SQL.java:2504)
     [java]     at 
com.mckoi.database.sql.SQL.GetTableSelectExpression(SQL.java:1158)
     [java]     at com.mckoi.database.sql.SQL.Select(SQL.java:300)
     [java]     at com.mckoi.database.sql.SQL.Statement(SQL.java:161)
     [java]     at 
com.mckoi.database.interpret.SQLQueryExecutor.execute(SQLQueryExecutor.java:91)
     [java]     at 
com.mckoi.database.jdbcserver.AbstractJDBCDatabaseInterface.execQuery(AbstractJDBCDatabaseInterface.java:321)
     [java]     at 
com.mckoi.database.jdbcserver.JDBCDatabaseInterface.execQuery(JDBCDatabaseInterface.java:253)
     [java]     at 
com.mckoi.database.jdbcserver.JDBCProcessor.queryCommand(JDBCProcessor.java:339)
     [java]     at 
com.mckoi.database.jdbcserver.JDBCProcessor.processQuery(JDBCProcessor.java:289)
     [java]     at 
com.mckoi.database.jdbcserver.JDBCProcessor.processJDBCCommand(JDBCProcessor.java:195)
     [java]     at 
com.mckoi.database.jdbcserver.StreamJDBCServerConnection.processRequest(StreamJDBCServerConnection.java:133)
     [java]     at 
com.mckoi.database.jdbcserver.MultiThreadedConnectionPoolServer$1.run(MultiThreadedConnectionPoolServer.java:170)
     [java]     at com.mckoi.database.WorkerThread.run(WorkerThread.java:122)

<<<
as a consequence, the following JDOQL query

	Extent allAuthors = pm.getExtent(Author.class, true);
	Query query4 = pm.newQuery(allAuthors);

	query4.declareVariables("Document doc");
	query4.setFilter("documents.contains(doc) & doc.title.startsWith(\"Bag\")");

can not be done against mckoi (at least not with how JELAY translates it to 
JDBC)

Other than that mckoi works great. Impressive job, Tobias! Thanks for making 
mckoi and keep it up!