[
https://issues.apache.org/jira/browse/KYLIN-3119?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
peng.jianhua updated KYLIN-3119:
--------------------------------
Description:
in the function 'massageSql' of 'QueryUtil.java',there are a few bugs:
01:
{code:java}
while (sql.endsWith(";"))
sql = sql.substring(0, sql.length() - 1);
{code}
if the sql end with ';' and after the ';' still has comments,will be
error.Because the sql will add ("\nLIMIT " + limit) at the end.
02:
{code:java}
if (limit > 0 && !sql.toLowerCase().contains("limit")) {
sql += ("\nLIMIT " + limit);
}
if (offset > 0 && !sql.toLowerCase().contains("offset")) {
sql += ("\nOFFSET " + offset);
}
{code}
if the sql already has word 'limit' in it,such as Alias,Subquery,Comments,the
‘limit’ in the Input box will be invalid.
for example,the sql has subquery,and there is 'limit' in subquery.
{code:java}
select KYLIN_SALES.PART_DT, count(KYLIN_SALES.PRICE)
from KYLIN_SALES
inner join (select ACCOUNT_ID, ACCOUNT_BUYER_LEVEL from KYLIN_ACCOUNT where
ACCOUNT_COUNTRY = 'US' limit 10000) as TT
on KYLIN_SALES.BUYER_ID = TT.ACCOUNT_ID
group by KYLIN_SALES.PART_DT
{code}
the ‘limit’ in the Input box will be invalid.please refer to 01.png and 02.png.
03:
{code:java}
// https://issues.apache.org/jira/browse/KYLIN-2649
if (kylinConfig.getForceLimit() > 0 &&
!sql.toLowerCase().contains("limit")
&& sql.toLowerCase().contains("*")) {
sql += ("\nLIMIT " + kylinConfig.getForceLimit());
}
{code}
Because KYLIN-2649 is still unresolved,so I didn't change the code,but it has
same 'limit' word bugs like above.
And there are some situations that the sql contains \*,such as
{code:java}count(*),kylin_sales.*{code}
it seems improperly to deal with the sql just use {code:java}
sql.toLowerCase().contains("*")
{code}
was:
in the function 'massageSql' of 'QueryUtil.java',there are a few bugs:
01:
{code:java}
while (sql.endsWith(";"))
sql = sql.substring(0, sql.length() - 1);
{code}
if the sql end with ';' and after the ';' still has comments,will be
error.Because the sql will add ("\nLIMIT " + limit) at the end.
02:
{code:java}
if (limit > 0 && !sql.toLowerCase().contains("limit")) {
sql += ("\nLIMIT " + limit);
}
if (offset > 0 && !sql.toLowerCase().contains("offset")) {
sql += ("\nOFFSET " + offset);
}
{code}
if the sql already has word 'limit' in it,such as Alias,Subquery,Comments,the
‘limit’ in the Input box will be invalid.
for example,the sql has subquery,and there is 'limit' in subquery.
{code:java}
select KYLIN_SALES.PART_DT, count(KYLIN_SALES.PRICE)
from KYLIN_SALES
inner join (select ACCOUNT_ID, ACCOUNT_BUYER_LEVEL from KYLIN_ACCOUNT where
ACCOUNT_COUNTRY = 'US' limit 10000) as TT
on KYLIN_SALES.BUYER_ID = TT.ACCOUNT_ID
group by KYLIN_SALES.PART_DT
{code}
the ‘limit’ in the Input box will be invalid.please refer to 01.png and 02.png.
03:
{code:java}
// https://issues.apache.org/jira/browse/KYLIN-2649
if (kylinConfig.getForceLimit() > 0 &&
!sql.toLowerCase().contains("limit")
&& sql.toLowerCase().contains("*")) {
sql += ("\nLIMIT " + kylinConfig.getForceLimit());
}
{code}
Because KYLIN-2649 is still unresolved,so I didn't change the code,but it has
same 'limit' word bugs like above.
And there are some situations that the sql contains \*,such as
{code:java}count(*),kylin_sales.*{code}
> A few bugs in the function 'massageSql' of 'QueryUtil.java'
> -----------------------------------------------------------
>
> Key: KYLIN-3119
> URL: https://issues.apache.org/jira/browse/KYLIN-3119
> Project: Kylin
> Issue Type: Bug
> Reporter: peng.jianhua
> Assignee: peng.jianhua
>
> in the function 'massageSql' of 'QueryUtil.java',there are a few bugs:
> 01:
> {code:java}
> while (sql.endsWith(";"))
> sql = sql.substring(0, sql.length() - 1);
> {code}
> if the sql end with ';' and after the ';' still has comments,will be
> error.Because the sql will add ("\nLIMIT " + limit) at the end.
> 02:
> {code:java}
> if (limit > 0 && !sql.toLowerCase().contains("limit")) {
> sql += ("\nLIMIT " + limit);
> }
> if (offset > 0 && !sql.toLowerCase().contains("offset")) {
> sql += ("\nOFFSET " + offset);
> }
> {code}
> if the sql already has word 'limit' in it,such as Alias,Subquery,Comments,the
> ‘limit’ in the Input box will be invalid.
> for example,the sql has subquery,and there is 'limit' in subquery.
> {code:java}
> select KYLIN_SALES.PART_DT, count(KYLIN_SALES.PRICE)
> from KYLIN_SALES
> inner join (select ACCOUNT_ID, ACCOUNT_BUYER_LEVEL from KYLIN_ACCOUNT where
> ACCOUNT_COUNTRY = 'US' limit 10000) as TT
> on KYLIN_SALES.BUYER_ID = TT.ACCOUNT_ID
> group by KYLIN_SALES.PART_DT
> {code}
> the ‘limit’ in the Input box will be invalid.please refer to 01.png and
> 02.png.
> 03:
> {code:java}
> // https://issues.apache.org/jira/browse/KYLIN-2649
> if (kylinConfig.getForceLimit() > 0 &&
> !sql.toLowerCase().contains("limit")
> && sql.toLowerCase().contains("*")) {
> sql += ("\nLIMIT " + kylinConfig.getForceLimit());
> }
> {code}
> Because KYLIN-2649 is still unresolved,so I didn't change the code,but it
> has same 'limit' word bugs like above.
> And there are some situations that the sql contains \*,such as
> {code:java}count(*),kylin_sales.*{code}
> it seems improperly to deal with the sql just use {code:java}
> sql.toLowerCase().contains("*")
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)