[ 
https://issues.apache.org/jira/browse/DRILL-5047?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15676324#comment-15676324
 ] 

ASF GitHub Bot commented on DRILL-5047:
---------------------------------------

Github user arina-ielchiieva commented on the issue:

    https://github.com/apache/drill/pull/655
  
    Answering to all comments in one:
    1. `${option.getValue()}` is not sufficient since method returns Object and 
freemarker does not know how to cast it.
    2. `?c` only works with boolean and numbers, since options can be string, 
it not sufficient
    3. `?string` works with most of the types but it's true for boolean seems 
to be deprecated
    4. to set null value to option is not possible (handled in 
SetOptionHandler.class) but option.getValue() may return null according to the 
code.
    
    Paul's idea to prepare options to display on Java side seems to be the most 
reasonable.
    So I have updated the pull request, added new method in 
ProfileWrapper.class with transforms `OptionValueList` into `Map<String, 
String>`. If option value is null, it will be displayed as word 'null'.



> When session option is string, query profile is displayed incorrectly on Web 
> UI
> -------------------------------------------------------------------------------
>
>                 Key: DRILL-5047
>                 URL: https://issues.apache.org/jira/browse/DRILL-5047
>             Project: Apache Drill
>          Issue Type: Bug
>    Affects Versions: 1.9.0
>            Reporter: Arina Ielchiieva
>            Assignee: Gautam Kumar Parai
>         Attachments: session_options_all_types.JPG
>
>
> When session option is string, query profile is displayed incorrectly on Web 
> UI:
> {noformat}
> Name  Value
> store.format  FreeMarker template error: For "?c" left-hand operand: Expected 
> a number or boolean, but this evaluated to a string (wrapper: 
> f.t.SimpleScalar): ==> option.getValue() [in template 
> "rest/profile/profile.ftl" at line 135, column 27] ---- FTL stack trace ("~" 
> means nesting-related): - Failed at: ${option.getValue()?c} [in template 
> "rest/profile/profile.ftl" in macro "page_body" at line 135, column 25] - 
> Reached through: @page_body [in template "rest/profile/*/generic.ftl" in 
> macro "page_html" at line 89, column 9] - Reached through: @page_html [in 
> template "rest/profile/profile.ftl" at line 247, column 1] ---- Java stack 
> trace (for programmers): ---- freemarker.core.UnexpectedTypeException: [... 
> Exception message was already printed; see it above ...] at 
> freemarker.core.BuiltInsForMultipleTypes$AbstractCBI._eval(BuiltInsForMultipleTypes.java:598)
>  at freemarker.core.Expression.eval(Expression.java:76) at 
> freemarker.core.Expression.evalAndCoerceToString(Expression.java:80) at 
> freemarker.core.DollarVariable.accept(DollarVariable.java:40) at 
> freemarker.core.Environment.visit(Environment.java:257) at 
> freemarker.core.MixedContent.accept(MixedContent.java:57) at 
> freemarker.core.Environment.visitByHiddingParent(Environment.java:278) at 
> freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:157) at 
> freemarker.core.Environment.visitIteratorBlock(Environment.java:501) at 
> freemarker.core.IteratorBlock.accept(IteratorBlock.java:67) at 
> freemarker.core.Environment.visit(Environment.java:257) at 
> freemarker.core.MixedContent.accept(MixedContent.java:57) at 
> freemarker.core.Environment.visitByHiddingParent(Environment.java:278) at 
> freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:48) at 
> freemarker.core.Environment.visit(Environment.java:257) at 
> freemarker.core.MixedContent.accept(MixedContent.java:57) at 
> freemarker.core.Environment.visit(Environment.java:257) at 
> freemarker.core.Macro$Context.runMacro(Macro.java:173) at 
> freemarker.core.Environment.visit(Environment.java:686) at 
> freemarker.core.UnifiedCall.accept(UnifiedCall.java:80) at 
> freemarker.core.Environment.visit(Environment.java:257) at 
> freemarker.core.MixedContent.accept(MixedContent.java:57) at 
> freemarker.core.Environment.visit(Environment.java:257) at 
> freemarker.core.Macro$Context.runMacro(Macro.java:173) at 
> freemarker.core.Environment.visit(Environment.java:686) at 
> freemarker.core.UnifiedCall.accept(UnifiedCall.java:80) at 
> freemarker.core.Environment.visit(Environment.java:257) at 
> freemarker.core.MixedContent.accept(MixedContent.java:57) at 
> freemarker.core.Environment.visit(Environment.java:257) at 
> freemarker.core.Environment.process(Environment.java:235) at 
> freemarker.template.Template.process(Template.java:262) at 
> org.glassfish.jersey.server.mvc.freemarker.FreemarkerViewProcessor.writeTo(FreemarkerViewProcessor.java:143)
>  at 
> org.glassfish.jersey.server.mvc.freemarker.FreemarkerViewProcessor.writeTo(FreemarkerViewProcessor.java:85)
>  at 
> org.glassfish.jersey.server.mvc.spi.ResolvedViewable.writeTo(ResolvedViewable.java:116)
>  at 
> org.glassfish.jersey.server.mvc.internal.ViewableMessageBodyWriter.writeTo(ViewableMessageBodyWriter.java:134)
>  at 
> org.glassfish.jersey.server.mvc.internal.ViewableMessageBodyWriter.writeTo(ViewableMessageBodyWriter.java:88)
>  at 
> org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:263)
>  at 
> org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:250)
>  at 
> org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
>  at 
> org.glassfish.jersey.server.mvc.internal.TemplateMethodInterceptor.aroundWriteTo(TemplateMethodInterceptor.java:77)
>  at 
> org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
>  at 
> org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:103)
>  at 
> org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
>  at 
> org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:88)
>  at 
> org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162)
>  at 
> org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1154)
>  at 
> org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:613)
>  at 
> org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:375)
>  at 
> org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:365)
>  at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:272) 
> at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) at 
> org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) at 
> org.glassfish.jersey.internal.Errors.process(Errors.java:315) at 
> org.glassfish.jersey.internal.Errors.process(Errors.java:297) at 
> org.glassfish.jersey.internal.Errors.process(Errors.java:267) at 
> org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297)
>  at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:252) 
> at 
> org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1023)
>  at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:372) 
> at 
> org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:382)
>  at 
> org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:345)
>  at 
> org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:220)
>  at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:738) at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:551) at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:219)
>  at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1111)
>  at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:478) 
> at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
>  at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1045)
>  at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
> at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
>  at org.eclipse.jetty.server.Server.handle(Server.java:462) at 
> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:279) at 
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:232) 
> at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:534) 
> at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607)
>  at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536)
>  at java.lang.Thread.run(Thread.java:745) 
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to