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)