[ 
https://issues.apache.org/jira/browse/KYLIN-4157?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Marc Wu resolved KYLIN-4157.
----------------------------
    Resolution: Resolved

What's the problem:

When using PreparedStatement query, if WHERE condition contains functions (like 
UPPER()), where always throw InternalErrorException.

What's the rootcause:

compFilter.getColumn is null in some cases.

What's the solution:

Check is null before using compFilter.getColumn.

> When using PrepareStatement query, functions within WHERE will cause 
> InternalErrorException
> -------------------------------------------------------------------------------------------
>
>                 Key: KYLIN-4157
>                 URL: https://issues.apache.org/jira/browse/KYLIN-4157
>             Project: Kylin
>          Issue Type: Bug
>          Components: Query Engine
>    Affects Versions: v2.6.3
>            Reporter: Marc Wu
>            Assignee: Marc Wu
>            Priority: Major
>             Fix For: v2.6.4
>
>         Attachments: image-2019-09-04-15-39-52-867.png, 
> image-2019-09-04-15-39-58-276.png, image-2019-09-04-20-57-46-121.png
>
>
> Hi Kylin Team:
> I found a bug when I'm using PreparedStatement query.
> Let me use table KYLIN_SALES to explain the scenario.
> There is a SQL like:
>  select LSTG_FORMAT_NAME, sum(PRICE) from KYLIN_SALES where 
> lower(LSTG_FORMAT_NAME) = 'fp-gtc' group by LSTG_FORMAT_NAME
> In some cases, user doesn't know the LSTG_FORMAT_NAME is upper case or lower 
> case, or they just want to query data ignoring cases.
>  So assume they use lower(LSTG_FORMAT_NAME) = 'fp-gtc', it's a function 
> within the filter.
> When I execute this SQL on Kylin web console, it can get the right result, 
> but when I tried to execute it by PreparedStatement query on Postman, it 
> threw InternalErrorException.  !image-2019-09-04-15-39-58-276.png!
>  
> !image-2019-09-04-15-39-52-867.png!
>  
> ----------------------------------------------------------------------------
> h2. Root Cause
> I debugged Kylin to find the root cause, it turns out when the filter 
> contains function, compFilter.getColumn is null, and the 
> compFilter.getFunction contains lower(LSTG_FORMAT_NAME), so that 
> compFilter.getColumn().getType().isDateTimeFamily() will throw 
> NullPointerException, that's the root cause for this 500 error.
>  
> h2. !image-2019-09-04-20-57-46-121.png! Solution
> I suggest to check nullable first before using compFilter.getColumn.



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to