You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by GitBox <gi...@apache.org> on 2020/05/21 04:31:39 UTC

[GitHub] [druid] vogievetsky opened a new issue #9906: Stack overflow with SELECT ARRAY ['Hello', NULL]

vogievetsky opened a new issue #9906:
URL: https://github.com/apache/druid/issues/9906


   ### Affected Version
   
   Druid 0.18.0
   
   ### Description
   
   The query `SELECT ARRAY ['Hello', NULL]` returns a (HTML formatted) stack overflow
   
   ![image](https://user-images.githubusercontent.com/177816/82523420-0aef5e80-9ae1-11ea-9eff-7295a4825fb9.png)
   
   Note that `SELECT ARRAY [NULL]` works fine
   
   The error (truncated)
   
   ```
   <html>
   <head>
   <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
   <title>Error 500 Server Error</title>
   </head>
   <body><h2>HTTP ERROR 500</h2>
   <p>Problem accessing /druid/v2/sql. Reason:
   <pre>    Server Error</pre></p><h3>Caused by:</h3><pre>javax.servlet.ServletException: java.lang.StackOverflowError
   	at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:420)
   	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
   	at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
   	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
   	at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:286)
   	at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:276)
   	at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:181)
   	at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
   	at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:120)
   	at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:135)
   	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
   	at org.apache.druid.server.security.PreResponseAuthorizationCheckFilter.doFilter(PreResponseAuthorizationCheckFilter.java:82)
   	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
   	at org.apache.druid.server.security.AllowOptionsResourceFilter.doFilter(AllowOptionsResourceFilter.java:75)
   	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
   	at org.apache.druid.server.security.AllowAllAuthenticator$1.doFilter(AllowAllAuthenticator.java:84)
   	at org.apache.druid.server.security.AuthenticationWrappingFilter.doFilter(AuthenticationWrappingFilter.java:59)
   	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
   	at org.apache.druid.server.security.SecuritySanityCheckFilter.doFilter(SecuritySanityCheckFilter.java:86)
   	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
   	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
   	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
   	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
   	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
   	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340)
   	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
   	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
   	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
   	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
   	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242)
   	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
   	at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:740)
   	at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:61)
   	at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:174)
   	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
   	at org.eclipse.jetty.server.Server.handle(Server.java:503)
   	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)
   	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
   	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
   	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
   	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
   	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
   	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
   	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
   	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
   	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
   	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
   	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
   	at java.lang.Thread.run(Thread.java:748)
   Caused by: java.lang.StackOverflowError
   	at java.util.regex.Pattern.error(Pattern.java:1969)
   	at java.util.regex.Pattern.&lt;init&gt;(Pattern.java:1354)
   	at java.util.regex.Pattern.compile(Pattern.java:1054)
   	at java.lang.String.replace(String.java:2239)
   	at org.apache.calcite.sql.SqlDialect.quoteStringLiteral(SqlDialect.java:430)
   	at org.apache.calcite.util.NlsString.asSql(NlsString.java:231)
   	at org.apache.calcite.util.NlsString.asSql(NlsString.java:214)
   	at org.apache.calcite.rex.RexLiteral.appendAsJava(RexLiteral.java:597)
   	at org.apache.calcite.rex.RexLiteral.toJavaString(RexLiteral.java:385)
   	at org.apache.calcite.rex.RexLiteral.computeDigest(RexLiteral.java:272)
   	at org.apache.calcite.rex.RexLiteral.&lt;init&gt;(RexLiteral.java:219)
   	at org.apache.calcite.rex.RexBuilder.makeLiteral(RexBuilder.java:954)
   	at org.apache.calcite.rex.RexBuilder.makeCharLiteral(RexBuilder.java:1137)
   	at org.apache.calcite.rex.RexBuilder.makeLiteral(RexBuilder.java:1367)
   	at org.apache.calcite.rex.RexBuilder.makeLiteral(RexBuilder.java:1359)
   	at org.apache.calcite.rex.RexBuilder.makeLiteral(RexBuilder.java:1443)
   	at org.apache.druid.sql.calcite.planner.DruidRexExecutor.reduce(DruidRexExecutor.java:132)
   	at org.apache.calcite.rel.rules.ReduceExpressionsRule.reduceExpressionsInternal(ReduceExpressionsRule.java:695)
   	at org.apache.calcite.rel.rules.ReduceExpressionsRule.reduceExpressions(ReduceExpressionsRule.java:616)
   	at org.apache.calcite.rel.rules.ReduceExpressionsRule$ProjectReduceExpressionsRule.onMatch(ReduceExpressionsRule.java:301)
   	at org.apache.calcite.plan.AbstractRelOptPlanner.fireRule(AbstractRelOptPlanner.java:319)
   	at org.apache.calcite.plan.hep.HepPlanner.applyRule(HepPlanner.java:560)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:374)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
   	at org.apache.calcite.plan.hep.HepPlanner.depthFirstApply(HepPlanner.java:386)
           ...
   ```


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org


[GitHub] [druid] maytasm commented on issue #9906: Stack overflow with SELECT ARRAY ['Hello', NULL]

Posted by GitBox <gi...@apache.org>.
maytasm commented on issue #9906:
URL: https://github.com/apache/druid/issues/9906#issuecomment-651639084


   I took a look at this issue. I believe this is a Calcite bug. This bug on Calcite was fixed in Calcite 1.23.0
   The bug is https://issues.apache.org/jira/browse/CALCITE-3845
   
   I tried to upgrade Calcite version in Druid but seems like there are breaking change from Calcite 1.21.0 (current version) to 1.23.0. We can fix the breaking change and upgrade Calcite version and that should fix this issue. Other than that maybe we can also improve the error message display in the UI. 
   
   Also, another workaround that can work without upgrading Calcite is to set `currentProgram.matchLimit`. I was also able to reproduce this issue with a test in CalciteQueryTest and confirm that the workarond setting a limit on matchLimit fix this issue without needing to upgrade. 


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org


[GitHub] [druid] jon-wei closed issue #9906: Stack overflow with SELECT ARRAY ['Hello', NULL]

Posted by GitBox <gi...@apache.org>.
jon-wei closed issue #9906:
URL: https://github.com/apache/druid/issues/9906


   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org