oakproject / paxquery

XQuery processor on top of Apache Flink.
3 stars 2 forks source link

Mismatched Input Query Error #20

Open prestoncarman opened 8 years ago

prestoncarman commented 8 years ago

I am attempting to run a query similar to the following query, but I keep getting the following error message. I am not sure how morph the query into something that PAXQuery will understand. Can you help me?

Query: for $i in collection("file:///auctions")/site/closed_auctions/closed_auction where $i/price/text() >= 40 return $i/price

Error: line 2:9 mismatched input 'price' expecting {INTEGER_LITERAL, DECIMAL_LITERAL} line 3:9 mismatched input '/' expecting Query malformed or not supported yet. java.lang.NumberFormatException: For input string: "price/text()" at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) at java.lang.Double.parseDouble(Double.java:538) at fr.inria.oak.paxquery.xparser.XQueryVisitorImplementation.visitPred(XQueryVisitorImplementation.java:685) at fr.inria.oak.paxquery.xparser.XQueryVisitorImplementation.visitPred(XQueryVisitorImplementation.java:59) at fr.inria.oak.paxquery.xparser.XQueryParser$PredContext.accept(XQueryParser.java:1065) at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:72) at fr.inria.oak.paxquery.xparser.XQueryBaseVisitor.visitBoolExprInner_xq(XQueryBaseVisitor.java:123) at fr.inria.oak.paxquery.xparser.XQueryParser$BoolExprInner_xqContext.accept(XQueryParser.java:997) at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:72) at fr.inria.oak.paxquery.xparser.XQueryVisitorImplementation.visitBoolExpr_xq(XQueryVisitorImplementation.java:486) at fr.inria.oak.paxquery.xparser.XQueryVisitorImplementation.visitBoolExpr_xq(XQueryVisitorImplementation.java:59) at fr.inria.oak.paxquery.xparser.XQueryParser$BoolExpr_xqContext.accept(XQueryParser.java:938) at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:72) at fr.inria.oak.paxquery.xparser.XQueryVisitorImplementation.visitAndExpr_xq(XQueryVisitorImplementation.java:538) at fr.inria.oak.paxquery.xparser.XQueryVisitorImplementation.visitAndExpr_xq(XQueryVisitorImplementation.java:59) at fr.inria.oak.paxquery.xparser.XQueryParser$AndExpr_xqContext.accept(XQueryParser.java:887) at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:72) at fr.inria.oak.paxquery.xparser.XQueryVisitorImplementation.visitOrExpr_xq(XQueryVisitorImplementation.java:517) at fr.inria.oak.paxquery.xparser.XQueryVisitorImplementation.visitOrExpr_xq(XQueryVisitorImplementation.java:59) at fr.inria.oak.paxquery.xparser.XQueryParser$OrExpr_xqContext.accept(XQueryParser.java:830) at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:72) at fr.inria.oak.paxquery.xparser.XQueryVisitorImplementation.visitWhere(XQueryVisitorImplementation.java:498) at fr.inria.oak.paxquery.xparser.XQueryVisitorImplementation.visitWhere(XQueryVisitorImplementation.java:59) at fr.inria.oak.paxquery.xparser.XQueryParser$WhereContext.accept(XQueryParser.java:787) at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:72) at fr.inria.oak.paxquery.xparser.XQueryBaseVisitor.visitMiddle(XQueryBaseVisitor.java:411) at fr.inria.oak.paxquery.xparser.XQueryParser$MiddleContext.accept(XQueryParser.java:269) at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:72) at fr.inria.oak.paxquery.xparser.XQueryVisitorImplementation.visitFlwrexpr(XQueryVisitorImplementation.java:215) at fr.inria.oak.paxquery.xparser.XQueryVisitorImplementation.visitFlwrexpr(XQueryVisitorImplementation.java:59) at fr.inria.oak.paxquery.xparser.XQueryParser$FlwrexprContext.accept(XQueryParser.java:162) at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visitChildren(AbstractParseTreeVisitor.java:72) at fr.inria.oak.paxquery.xparser.XQueryVisitorImplementation.visitXquery(XQueryVisitorImplementation.java:147) at fr.inria.oak.paxquery.xparser.XQueryVisitorImplementation.visitXquery(XQueryVisitorImplementation.java:59) at fr.inria.oak.paxquery.xparser.XQueryParser$XqueryContext.accept(XQueryParser.java:117) at org.antlr.v4.runtime.tree.AbstractParseTreeVisitor.visit(AbstractParseTreeVisitor.java:44) at fr.inria.oak.paxquery.xparser.client.XClient.parseQuery(XClient.java:128) at fr.inria.oak.paxquery.xparser.client.XClient.getPlan(XClient.java:83) at org.apache.flink.client.program.PackagedProgram.createPlanFromProgram(PackagedProgram.java:503) at org.apache.flink.client.program.PackagedProgram.getPlan(PackagedProgram.java:348) at org.apache.flink.client.program.PackagedProgram.getPlanWithJars(PackagedProgram.java:197) at org.apache.flink.client.program.Client.run(Client.java:230) at org.apache.flink.client.CliFrontend.executeProgram(CliFrontend.java:332) at org.apache.flink.client.CliFrontend.run(CliFrontend.java:319) at org.apache.flink.client.CliFrontend.parseParameters(CliFrontend.java:930) at org.apache.flink.client.CliFrontend.main(CliFrontend.java:954)

jmunoznaranjo commented 8 years ago

Can you try the following queries?

for $i in collection("file:///auctions")/site/closed_auctions/closed_auction/price/text() where $i >= 40 return {$i}

for $i in collection("file:///auctions")/site/closed_auctions/closed_auction/price, $pt in $i/text() where $pt >= 40 return $i

for $i in collection("file:///auctions")/site/closed_auctions/closed_auction/price[text() >= 40] return $i

prestoncarman commented 8 years ago

Thanks, those queries are working for me. How would I count the records returned from one of these queries? I added the count function, but the query still returns the list of items.

jamnaranjo commented 8 years ago

In that case nesting may be used. Please check https://github.com/oakproject/paxquery/blob/master/paxquery-web/io/query15.txt

You can find more examples in https://github.com/oakproject/paxquery/tree/master/paxquery-web/io