br1ghtyang / asterixdb

Automatically exported from code.google.com/p/asterixdb
0 stars 0 forks source link

Range search query with LIMIT (and ORDER BY) returns NPE #493

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
Start asterix using managix, one CC and two NC's, run AQL statements from Web 
UI.

drop dataverse test if exists;
create dataverse test;
use dataverse test;

create type Emp as open {
id : int32,
name: string,
salary: int32
}

create dataset Employee(Emp) primary key id;

create index idx-02 on Employee(name);

insert into dataset Employee ({ "id":123,"name":"Kevin","salary":10000});
insert into dataset Employee ({ "id":13,"name":"John","salary":5000});
insert into dataset Employee ({ "id":23,"name":"Susan","salary":7500});
insert into dataset Employee ({ "id":12,"name":"Smith","salary":4000});
insert into dataset Employee ({ "id":113,"name":"Roger","salary":8000});
insert into dataset Employee ({ "id":143,"name":"Raj","salary":6000});
insert into dataset Employee ({ "id":149,"name":"Ramesh","salary":5000});
insert into dataset Employee ({ "id":240,"name":"Ravi","salary":6500});

for $l in dataset Employee 
where $l.name >= "A" and $l.name <= "Z"
limit 5
order by $l.name desc
return $l.name

edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException: 
java.lang.NullPointerException

Note that if I use the limit clause after the order by clause in the failing 
query, correct results are returned.

Here is the stack trace from CC.log

SEVERE: edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException: 
java.lang.NullPointerException
edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException: 
edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException: 
java.lang.NullPointerException
        at edu.uci.ics.asterix.aql.translator.AqlTranslator.compileAndExecute(AqlTranslator.java:294)
        at edu.uci.ics.asterix.api.http.servlet.APIServlet.doPost(APIServlet.java:78)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:546)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:483)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:970)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:411)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:904)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
        at org.eclipse.jetty.server.Server.handle(Server.java:347)
        at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:439)
        at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:924)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:781)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:214)
        at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:43)
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:545)
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:43)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:529)
        at java.lang.Thread.run(Thread.java:722)
Caused by: 
edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException: 
java.lang.NullPointerException
        at edu.uci.ics.asterix.aql.translator.AqlTranslator.handleQuery(AqlTranslator.java:1435)
        at edu.uci.ics.asterix.aql.translator.AqlTranslator.compileAndExecute(AqlTranslator.java:279)
        ... 22 more
Caused by: java.lang.NullPointerException
        at edu.uci.ics.hyracks.algebricks.core.algebra.operators.physical.OneToOneExchangePOperator.computeDeliveredProperties(OneToOneExchangePOperator.java:45)
        at edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.AbstractLogicalOperator.computeDeliveredPhysicalProperties(AbstractLogicalOperator.java:117)
        at edu.uci.ics.hyracks.algebricks.core.algebra.util.OperatorPropertiesUtil.computeSchemaAndPropertiesRecIfNull(OperatorPropertiesUtil.java:138)
        at edu.uci.ics.hyracks.algebricks.rewriter.rules.IsolateHyracksOperatorsRule.insertOneToOneExchange(IsolateHyracksOperatorsRule.java:133)
        at edu.uci.ics.hyracks.algebricks.rewriter.rules.IsolateHyracksOperatorsRule.testIfExchangeBelow(IsolateHyracksOperatorsRule.java:73)
        at edu.uci.ics.hyracks.algebricks.rewriter.rules.IsolateHyracksOperatorsRule.rewritePost(IsolateHyracksOperatorsRule.java:51)
        at edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:122)
        at edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:96)
        at edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:96)
        at edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:96)
        at edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:96)
        at edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:96)
        at edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:96)
        at edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:96)
        at edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:96)
        at edu.uci.ics.hyracks.algebricks.core.rewriter.base.AbstractRuleController.rewriteOperatorRef(AbstractRuleController.java:96)
        at edu.uci.ics.hyracks.algebricks.compiler.rewriter.rulecontrollers.SequentialOnceRuleController.rewriteWithRuleCollection(SequentialOnceRuleController.java:40)
        at edu.uci.ics.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.runOptimizationSets(HeuristicOptimizer.java:79)
        at edu.uci.ics.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.runPhysicalOptimizations(HeuristicOptimizer.java:110)
        at edu.uci.ics.hyracks.algebricks.core.rewriter.base.HeuristicOptimizer.optimize(HeuristicOptimizer.java:68)
        at edu.uci.ics.hyracks.algebricks.compiler.api.HeuristicCompilerFactoryBuilder$1$1.optimize(HeuristicCompilerFactoryBuilder.java:81)
        at edu.uci.ics.asterix.api.common.APIFramework.compileQuery(APIFramework.java:282)
        at edu.uci.ics.asterix.aql.translator.AqlTranslator.rewriteCompileQuery(AqlTranslator.java:1294)
        at edu.uci.ics.asterix.aql.translator.AqlTranslator.handleQuery(AqlTranslator.java:1388)
        ... 23 more

Asterix version:0.0.6-SNAPSHOT

Original issue reported on code.google.com by khfaraaz82 on 2 Jun 2013 at 4:09

GoogleCodeExporter commented 8 years ago
Reverse "limit" and "order-by" works.
So downgrade the issue to be a "non-betablocker" as the conclusion of today's 
bug meeting.

Original comment by buyingyi@gmail.com on 5 Jun 2013 at 6:22

GoogleCodeExporter commented 8 years ago

Original comment by khfaraaz82 on 11 Jun 2013 at 5:14

GoogleCodeExporter commented 8 years ago
What is the timeframe to fix issues that were marked as PostBeta ? Thanks.

Original comment by khfaraaz82 on 1 Jul 2013 at 4:48

GoogleCodeExporter commented 8 years ago
The ORDER BY is optional to cause problems - this query also breaks, which to 
me makes the problem more serious. (So it seems that there is some issue with 
limit when not preceded by order by in this case, though I can also write other 
queries where limit w/o order by works, so...)

for $l in dataset Employee 
where $l.name >= "A" and $l.name <= "Z"
limit 5
return $l.name

Original comment by dtab...@gmail.com on 1 Jul 2013 at 9:22

GoogleCodeExporter commented 8 years ago
Hi Yingyi, was this fixed ?

Original comment by khfaraaz82 on 6 Feb 2014 at 10:00