You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@kylin.apache.org by "Marc Wu (Jira)" <ji...@apache.org> on 2019/09/10 14:17:00 UTC

[jira] [Resolved] (KYLIN-4157) When using PrepareStatement query, functions within WHERE will cause InternalErrorException

     [ 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)