[ https://issues.apache.org/jira/browse/HIVE-20871?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
flying updated HIVE-20871: -------------------------- Description: hqlsql.g4 in version 3.x: h2. 1. Any comment in the last line of sql text can not be identified. sql: {code:java} // You will get an error if try parsing it. select a from b; // I am comment {code} cause: {code:java} // line 1917 L_S_COMMENT : ('--' | '//') .*? '\r'? '\n' -> channel(HIDDEN) ; // Single line comment {code} maybe the code can fix to: {code:java} L_S_COMMENT : ('--' | '//') .*? (('\r'? '\n') | EOF) -> channel(HIDDEN) ; // Single line comment // The EOF can be recognized as the end of the single line comment {code} h2. 2. "limit" syntax definition may be mistake. two sqls: {code:java} select a from b limit 10; // just limit 10 record. this sql can be parsed normally. select a from b limit 10, 10; // pagnation, 10 record per page. you will get an error if try parsing it. {code} cause: {code:java} // line 900 select_options_item : T_LIMIT expr | T_WITH (T_RR | T_RS | T_CS | T_UR) (T_USE T_AND T_KEEP (T_EXCLUSIVE | T_UPDATE | T_SHARE) T_LOCKS)? ; {code} maybe the code can fix to: {code:java} // line 900 select_options_item : T_LIMIT expr (T_COMMA expr)? | T_WITH (T_RR | T_RS | T_CS | T_UR) (T_USE T_AND T_KEEP (T_EXCLUSIVE | T_UPDATE | T_SHARE) T_LOCKS)? ; // add optional '(T_COMMA expr)?' after 'T_LIMIT expr'.{code} h2. 3. The word 'type' can not be recognized as a column name. sql: {code:java} select type from someTable; // 'type' is a column. you will get an error if try parsing it. but you can execute the sql in hive query engine normally. {code} Cause the lexer 'T_TYPE' is not added to 'non_reserved_words'. // Sorry for not good at English. Talk is cheap, just show you code. :) was: hqlsql.g4 in version 3.x: h2. 1. Any comment in the last line of sql text can not be identified. sql: {code:java} // You will get an error if try parsing it. select a from b; // I am comment {code} cause: {code:java} // line 1917 L_S_COMMENT : ('--' | '//') .*? '\r'? '\n' -> channel(HIDDEN) ; // Single line comment {code} maybe the code can fix to: {code:java} L_S_COMMENT : ('--' | '//') .*? (('\r'? '\n') | EOF) -> channel(HIDDEN) ; // Single line comment // The EOF can be recognized as the end of the single line comment {code} h2. 2. "limit" syntax definition may be mistake. two sqls: {code:java} select a from b limit 10; // just limit 10 record. this sql can be parsed normally. select a from b limit 10, 10; // pagnation, 10 record per page. you will get an error if try parsing it. {code} cause: {code:java} // line 900 select_options_item : T_LIMIT expr | T_WITH (T_RR | T_RS | T_CS | T_UR) (T_USE T_AND T_KEEP (T_EXCLUSIVE | T_UPDATE | T_SHARE) T_LOCKS)? ; {code} maybe the code can fix to: {code:java} // line 900 select_options_item : T_LIMIT expr (T_COMMA expr)? | T_WITH (T_RR | T_RS | T_CS | T_UR) (T_USE T_AND T_KEEP (T_EXCLUSIVE | T_UPDATE | T_SHARE) T_LOCKS)? ; // add optional '(T_COMMA expr)?' after 'T_LIMIT expr'.{code} h2. 3. The word 'type' can not be recognized as a column name. sql: {code:java} select type from someTable; // 'type' is a column. you will get an error if try parsing it. but you can execute the sql in hive query engine normally. {code} Cause the lexer 'T_TYPE' is not added to 'non_reserved_words'. // Sorry for good at English. Talk is cheap, just show you code. :) > There are some syntax definition wrong in hqlsql.g4 > --------------------------------------------------- > > Key: HIVE-20871 > URL: https://issues.apache.org/jira/browse/HIVE-20871 > Project: Hive > Issue Type: Bug > Affects Versions: 2.1.0, 3.1.1 > Reporter: flying > Priority: Major > > hqlsql.g4 in version 3.x: > h2. 1. Any comment in the last line of sql text can not be identified. > sql: > {code:java} > // You will get an error if try parsing it. > select a from b; // I am comment > {code} > cause: > {code:java} > // line 1917 > L_S_COMMENT : ('--' | '//') .*? '\r'? '\n' -> channel(HIDDEN) ; // > Single line comment > {code} > maybe the code can fix to: > {code:java} > L_S_COMMENT : ('--' | '//') .*? (('\r'? '\n') | EOF) -> channel(HIDDEN) ; > // Single line comment > // The EOF can be recognized as the end of the single line comment > {code} > h2. 2. "limit" syntax definition may be mistake. > two sqls: > {code:java} > select a from b limit 10; // just limit 10 record. this sql can be parsed > normally. > select a from b limit 10, 10; // pagnation, 10 record per page. you will get > an error if try parsing it. > {code} > cause: > {code:java} > // line 900 > select_options_item : > T_LIMIT expr > | T_WITH (T_RR | T_RS | T_CS | T_UR) (T_USE T_AND T_KEEP (T_EXCLUSIVE | > T_UPDATE | T_SHARE) T_LOCKS)? > ; > {code} > maybe the code can fix to: > {code:java} > // line 900 > select_options_item : > T_LIMIT expr (T_COMMA expr)? > | T_WITH (T_RR | T_RS | T_CS | T_UR) (T_USE T_AND T_KEEP (T_EXCLUSIVE | > T_UPDATE | T_SHARE) T_LOCKS)? > ; > // add optional '(T_COMMA expr)?' after 'T_LIMIT expr'.{code} > h2. 3. The word 'type' can not be recognized as a column name. > sql: > {code:java} > select type from someTable; > // 'type' is a column. you will get an error if try parsing it. but you can > execute the sql in hive query engine normally. > {code} > Cause the lexer 'T_TYPE' is not added to 'non_reserved_words'. > // Sorry for not good at English. Talk is cheap, just show you code. :) -- This message was sent by Atlassian JIRA (v7.6.3#76005)