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