靳峥 created HIVE-16074:
-------------------------
Summary: Parser can not deal with complex sql
Key: HIVE-16074
URL: https://issues.apache.org/jira/browse/HIVE-16074
Project: Hive
Issue Type: Bug
Components: Parser
Affects Versions: 2.1.1
Reporter: 靳峥
Fix For: 2.2.0
Parser will stuck when parsing the sql into ast, eg:
select
intType,floatType,stringType,varchar32Type,byteType,shortType,dateType,timestampType,longType
, max(intType | 0) from orctest where
((((((((((((((((((((((((((((((((((((((1=2)) and ((1=1))) or (((2=2)) and
((1=2)))) and (((1=1)) or ((0=0)))) or (((1=0)) or ((1=2)))) or (((1=1)) or
((0=0)))) or (((1=1)) and ((0=0)))) or (((2=2)) or ((2=2)))) and (((2=2)) or
((2=2)))) and (((2=2)) or ((1=2)))) or (((0=0)) and ((1=0)))) or (((1=1)) and
((1=2)))) or (((1=1)) and ((2=2)))) or (((1=2)) and ((1=1)))) or (((1=1)) and
((2=2)))) or (((1=1)) or ((1=1)))) and (((0=0)) and ((0=0)))) or (((0=0)) or
((1=2)))) and (((1=2)) and ((1=1)))) and (((0=0)) or ((2=2)))) or (((1=2)) or
((2=2)))) and (((0=0)) and ((1=2)))) or (((1=2)) or ((1=0)))) or (((2=2)) or
((1=0)))) or (((2=2)) or ((1=2)))) or (((1=2)) or ((1=1)))) and (((1=2)) or
((1=2)))) and (((1=0)) or ((2=2)))) and (((2=2)) or ((1=0)))) and (((1=2)) or
((1=1)))) and (((1=2)) or ((1=2)))) and (((2=2)) and ((1=0)))) and (((2=2)) or
((1=1)))) or (((0=0)) and ((1=1)))) and (((2=2)) or ((1=2)))) and (((1=2)) or
((0=0)))) or (((1=0)) and ((1=1)))) or (((1=1)) and ((1=2))) group by
intType,floatType,stringType,varchar32Type,byteType,shortType,dateType,timestampType,longType;
The jvm of Server was working fine, with continues minor gc.
The cpu kept 100%.
It means the java logic generated by antlr is too complex.
The way to solve the problem may be optimize the syntax file or update the
version of antlr.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)