Merge branch 'feat_hiveSql' into 'dev'

Feat hive sql

See merge request dt-insight-front/infrastructure/dt-sql-parser!1
This commit is contained in:
zhifei 2020-11-26 14:28:31 +08:00
commit bf9e2a2c4d
16 changed files with 19779 additions and 15053 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,8 @@
lexer grammar HiveSqlLexer; lexer grammar HiveSqlLexer;
// Lexer rules // Lexer rules
T_ACTION : A C T I O N ; T_ACTION : A C T I O N ;
T_ADD2 : A D D ; T_ADD2 : A D D ;
T_ALL : A L L ; T_ALL : A L L ;
T_ALLOCATE : A L L O C A T E ; T_ALLOCATE : A L L O C A T E ;
@ -11,27 +12,27 @@ T_ANSI_NULLS : A N S I '_' N U L L S ;
T_ANSI_PADDING : A N S I '_' P A D D I N G ; T_ANSI_PADDING : A N S I '_' P A D D I N G ;
T_AS : A S ; T_AS : A S ;
T_ASC : A S C ; T_ASC : A S C ;
T_ASSOCIATE : A S S O C I A T E ; T_ASSOCIATE : A S S O C I A T E ;
T_AT : A T ; T_AT : A T ;
T_AUTO_INCREMENT : A U T O '_' I N C R E M E N T ; T_AUTO_INCREMENT : A U T O '_' I N C R E M E N T ;
T_AVG : A V G ; T_AVG : A V G ;
T_BATCHSIZE : B A T C H S I Z E ; T_BATCHSIZE : B A T C H S I Z E ;
T_BEGIN : B E G I N ; T_BEGIN : B E G I N ;
T_BETWEEN : B E T W E E N ; T_BETWEEN : B E T W E E N ;
T_BIGINT : B I G I N T ; T_BIGINT : B I G I N T ;
T_BINARY_DOUBLE : B I N A R Y '_' D O U B L E ; T_BINARY_DOUBLE : B I N A R Y '_' D O U B L E ;
T_BINARY_FLOAT : B I N A R Y '_' F L O A T ; T_BINARY_FLOAT : B I N A R Y '_' F L O A T ;
T_BINARY_INTEGER : B I N A R Y '_' I N T E G E R ; T_BINARY_INTEGER : B I N A R Y '_' I N T E G E R ;
T_BIT : B I T ; T_BIT : B I T ;
T_BODY : B O D Y ; T_BODY : B O D Y ;
T_BREAK : B R E A K ; T_BREAK : B R E A K ;
T_BY : B Y ; T_BY : B Y ;
T_BYTE : B Y T E ; T_BYTE : B Y T E ;
T_CALL : C A L L ; T_CALL : C A L L ;
T_CALLER : C A L L E R ; T_CALLER : C A L L E R ;
T_CASCADE : C A S C A D E ; T_CASCADE : C A S C A D E ;
T_CASE : C A S E ; T_CASE : C A S E ;
T_CASESPECIFIC : C A S E S P E C I F I C ; T_CASESPECIFIC : C A S E S P E C I F I C ;
T_CAST : C A S T ; T_CAST : C A S T ;
T_CHAR : C H A R ; T_CHAR : C H A R ;
T_CHARACTER : C H A R A C T E R ; T_CHARACTER : C H A R A C T E R ;
@ -39,23 +40,23 @@ T_CHARSET : C H A R S E T ;
T_CLIENT : C L I E N T ; T_CLIENT : C L I E N T ;
T_CLOSE : C L O S E ; T_CLOSE : C L O S E ;
T_CLUSTERED : C L U S T E R E D; T_CLUSTERED : C L U S T E R E D;
T_CMP : C M P ; T_CMP : C M P ;
T_COLLECT : C O L L E C T ; T_COLLECT : C O L L E C T ;
T_COLLECTION : C O L L E C T I O N ; T_COLLECTION : C O L L E C T I O N ;
T_COLUMN : C O L U M N ; T_COLUMN : C O L U M N ;
T_COMMENT : C O M M E N T; T_COMMENT : C O M M E N T;
T_CONSTANT : C O N S T A N T ; T_CONSTANT : C O N S T A N T ;
T_COMMIT : C O M M I T ; T_COMMIT : C O M M I T ;
T_COMPRESS : C O M P R E S S ; T_COMPRESS : C O M P R E S S ;
T_CONCAT : C O N C A T; T_CONCAT : C O N C A T;
T_CONDITION : C O N D I T I O N ; T_CONDITION : C O N D I T I O N ;
T_CONSTRAINT : C O N S T R A I N T ; T_CONSTRAINT : C O N S T R A I N T ;
T_CONTINUE : C O N T I N U E ; T_CONTINUE : C O N T I N U E ;
T_COPY : C O P Y ; T_COPY : C O P Y ;
T_COUNT : C O U N T ; T_COUNT : C O U N T ;
T_COUNT_BIG : C O U N T '_' B I G; T_COUNT_BIG : C O U N T '_' B I G;
T_CREATE : C R E A T E ; T_CREATE : C R E A T E ;
T_CREATION : C R E A T I O N ; T_CREATION : C R E A T I O N ;
T_CREATOR : C R E A T O R ; T_CREATOR : C R E A T O R ;
T_CS : C S; T_CS : C S;
T_CURRENT : C U R R E N T ; T_CURRENT : C U R R E N T ;
@ -64,79 +65,79 @@ T_CURSOR : C U R S O R ;
T_DATABASE : D A T A B A S E ; T_DATABASE : D A T A B A S E ;
T_DATA : D A T A ; T_DATA : D A T A ;
T_DATE : D A T E ; T_DATE : D A T E ;
T_DATETIME : D A T E T I M E ; T_DATETIME : D A T E T I M E ;
T_DAY : D A Y ; T_DAY : D A Y ;
T_DAYS : D A Y S ; T_DAYS : D A Y S ;
T_DEC : D E C ; T_DEC : D E C ;
T_DECIMAL : D E C I M A L ; T_DECIMAL : D E C I M A L ;
T_DECLARE : D E C L A R E ; T_DECLARE : D E C L A R E ;
T_DEFAULT : D E F A U L T ; T_DEFAULT : D E F A U L T ;
T_DEFERRED : D E F E R R E D ; T_DEFERRED : D E F E R R E D ;
T_DEFINED : D E F I N E D ; T_DEFINED : D E F I N E D ;
T_DEFINER : D E F I N E R ; T_DEFINER : D E F I N E R ;
T_DEFINITION : D E F I N I T I O N ; T_DEFINITION : D E F I N I T I O N ;
T_DELETE : D E L E T E ; T_DELETE : D E L E T E ;
T_DELIMITED : D E L I M I T E D ; T_DELIMITED : D E L I M I T E D ;
T_DELIMITER : D E L I M I T E R ; T_DELIMITER : D E L I M I T E R ;
T_DESC : D E S C ; T_DESC : D E S C ;
T_DESCRIBE : D E S C R I B E ; T_DESCRIBE : D E S C R I B E ;
T_DIAGNOSTICS : D I A G N O S T I C S ; T_DIAGNOSTICS : D I A G N O S T I C S ;
T_DIR : D I R ; T_DIR : D I R ;
T_DIRECTORY : D I R E C T O R Y ; T_DIRECTORY : D I R E C T O R Y ;
T_DISTINCT : D I S T I N C T ; T_DISTINCT : D I S T I N C T ;
T_DISTRIBUTE : D I S T R I B U T E ; T_DISTRIBUTE : D I S T R I B U T E ;
T_DO : D O ; T_DO : D O ;
T_DOUBLE : D O U B L E ; T_DOUBLE : D O U B L E ;
T_DROP : D R O P ; T_DROP : D R O P ;
T_DYNAMIC : D Y N A M I C ; T_DYNAMIC : D Y N A M I C ;
T_ELSE : E L S E ; T_ELSE : E L S E ;
T_ELSEIF : E L S E I F ; T_ELSEIF : E L S E I F ;
T_ELSIF : E L S I F ; T_ELSIF : E L S I F ;
T_ENABLE : E N A B L E ; T_ENABLE : E N A B L E ;
T_END : E N D ; T_END : E N D ;
T_ENGINE : E N G I N E ; T_ENGINE : E N G I N E ;
T_ESCAPED : E S C A P E D ; T_ESCAPED : E S C A P E D ;
T_EXCEPT : E X C E P T ; T_EXCEPT : E X C E P T ;
T_EXEC : E X E C ; T_EXEC : E X E C ;
T_EXECUTE : E X E C U T E ; T_EXECUTE : E X E C U T E ;
T_EXCEPTION : E X C E P T I O N ; T_EXCEPTION : E X C E P T I O N ;
T_EXCLUSIVE : E X C L U S I V E ; T_EXCLUSIVE : E X C L U S I V E ;
T_EXISTS : E X I S T S ; T_EXISTS : E X I S T S ;
T_EXIT : E X I T ; T_EXIT : E X I T ;
T_FALLBACK : F A L L B A C K ; T_FALLBACK : F A L L B A C K ;
T_FALSE : F A L S E ; T_FALSE : F A L S E ;
T_FETCH : F E T C H ; T_FETCH : F E T C H ;
T_FIELDS : F I E L D S ; T_FIELDS : F I E L D S ;
T_FILE : F I L E ; T_FILE : F I L E ;
T_FILES : F I L E S ; T_FILES : F I L E S ;
T_FLOAT : F L O A T ; T_FLOAT : F L O A T ;
T_FOR : F O R ; T_FOR : F O R ;
T_FOREIGN : F O R E I G N ; T_FOREIGN : F O R E I G N ;
T_FORMAT : F O R M A T ; T_FORMAT : F O R M A T ;
T_FOUND : F O U N D ; T_FOUND : F O U N D ;
T_FROM : F R O M ; T_FROM : F R O M ;
T_FULL : F U L L ; T_FULL : F U L L ;
T_FUNCTION : F U N C T I O N ; T_FUNCTION : F U N C T I O N ;
T_GET : G E T ; T_GET : G E T ;
T_GLOBAL : G L O B A L ; T_GLOBAL : G L O B A L ;
T_GO : G O ; T_GO : G O ;
T_GRANT : G R A N T ; T_GRANT : G R A N T ;
T_GROUP : G R O U P ; T_GROUP : G R O U P ;
T_HANDLER : H A N D L E R ; T_HANDLER : H A N D L E R ;
T_HASH : H A S H ; T_HASH : H A S H ;
T_HAVING : H A V I N G ; T_HAVING : H A V I N G ;
T_HDFS : H D F S ; T_HDFS : H D F S ;
T_HIVE : H I V E ; T_HIVE : H I V E ;
T_HOST : H O S T ; T_HOST : H O S T ;
T_IDENTITY : I D E N T I T Y ; T_IDENTITY : I D E N T I T Y ;
T_IF : I F ; T_IF : I F ;
T_IGNORE : I G N O R E ; T_IGNORE : I G N O R E ;
T_IMMEDIATE : I M M E D I A T E ; T_IMMEDIATE : I M M E D I A T E ;
T_IN : I N ; T_IN : I N ;
T_INCLUDE : I N C L U D E ; T_INCLUDE : I N C L U D E ;
T_INDEX : I N D E X ; T_INDEX : I N D E X ;
T_INITRANS : I N I T R A N S ; T_INITRANS : I N I T R A N S ;
T_INNER : I N N E R ; T_INNER : I N N E R ;
T_INOUT : I N O U T; T_INOUT : I N O U T;
T_INSERT : I N S E R T ; T_INSERT : I N S E R T ;
T_INT : I N T ; T_INT : I N T ;
@ -145,55 +146,55 @@ T_INT4 : I N T '4';
T_INT8 : I N T '8'; T_INT8 : I N T '8';
T_INTEGER : I N T E G E R ; T_INTEGER : I N T E G E R ;
T_INTERSECT : I N T E R S E C T ; T_INTERSECT : I N T E R S E C T ;
T_INTERVAL : I N T E R V A L ; T_INTERVAL : I N T E R V A L ;
T_INTO : I N T O ; T_INTO : I N T O ;
T_INVOKER : I N V O K E R ; T_INVOKER : I N V O K E R ;
T_IS : I S ; T_IS : I S ;
T_ISOPEN : I S O P E N ; T_ISOPEN : I S O P E N ;
T_ITEMS : I T E M S ; T_ITEMS : I T E M S ;
T_JOIN : J O I N ; T_JOIN : J O I N ;
T_KEEP : K E E P; T_KEEP : K E E P;
T_KEY : K E Y ; T_KEY : K E Y ;
T_KEYS : K E Y S ; T_KEYS : K E Y S ;
T_LANGUAGE : L A N G U A G E ; T_LANGUAGE : L A N G U A G E ;
T_LEAVE : L E A V E ; T_LEAVE : L E A V E ;
T_LEFT : L E F T ; T_LEFT : L E F T ;
T_LIKE : L I K E ; T_LIKE : L I K E ;
T_LIMIT : L I M I T ; T_LIMIT : L I M I T ;
T_LINES : L I N E S ; T_LINES : L I N E S ;
T_LOCAL : L O C A L ; T_LOCAL : L O C A L ;
T_LOCATION : L O C A T I O N ; T_LOCATION : L O C A T I O N ;
T_LOCATOR : L O C A T O R ; T_LOCATOR : L O C A T O R ;
T_LOCATORS : L O C A T O R S ; T_LOCATORS : L O C A T O R S ;
T_LOCKS : L O C K S ; T_LOCKS : L O C K S ;
T_LOG : L O G ; T_LOG : L O G ;
T_LOGGED : L O G G E D ; T_LOGGED : L O G G E D ;
T_LOGGING : L O G G I N G ; T_LOGGING : L O G G I N G ;
T_LOOP : L O O P ; T_LOOP : L O O P ;
T_MAP : M A P ; T_MAP : M A P ;
T_MATCHED : M A T C H E D ; T_MATCHED : M A T C H E D ;
T_MAX : M A X ; T_MAX : M A X ;
T_MAXTRANS : M A X T R A N S ; T_MAXTRANS : M A X T R A N S ;
T_MERGE : M E R G E ; T_MERGE : M E R G E ;
T_MESSAGE_TEXT : M E S S A G E '_' T E X T ; T_MESSAGE_TEXT : M E S S A G E '_' T E X T ;
T_MICROSECOND : M I C R O S E C O N D ; T_MICROSECOND : M I C R O S E C O N D ;
T_MICROSECONDS : M I C R O S E C O N D S; T_MICROSECONDS : M I C R O S E C O N D S;
T_MIN : M I N ; T_MIN : M I N ;
T_MULTISET : M U L T I S E T ; T_MULTISET : M U L T I S E T ;
T_NCHAR : N C H A R ; T_NCHAR : N C H A R ;
T_NEW : N E W ; T_NEW : N E W ;
T_NVARCHAR : N V A R C H A R ; T_NVARCHAR : N V A R C H A R ;
T_NO : N O ; T_NO : N O ;
T_NOCOUNT : N O C O U N T ; T_NOCOUNT : N O C O U N T ;
T_NOCOMPRESS : N O C O M P R E S S ; T_NOCOMPRESS : N O C O M P R E S S ;
T_NOLOGGING : N O L O G G I N G ; T_NOLOGGING : N O L O G G I N G ;
T_NONE : N O N E ; T_NONE : N O N E ;
T_NOT : N O T ; T_NOT : N O T ;
T_NOTFOUND : N O T F O U N D ; T_NOTFOUND : N O T F O U N D ;
T_NULL : N U L L ; T_NULL : N U L L ;
T_NUMERIC : N U M E R I C ; T_NUMERIC : N U M E R I C ;
T_NUMBER : N U M B E R ; T_NUMBER : N U M B E R ;
T_OBJECT : O B J E C T ; T_OBJECT : O B J E C T ;
T_OFF : O F F ; T_OFF : O F F ;
T_ON : O N ; T_ON : O N ;
T_ONLY : O N L Y ; T_ONLY : O N L Y ;
@ -203,31 +204,31 @@ T_ORDER : O R D E R;
T_OUT : O U T ; T_OUT : O U T ;
T_OUTER : O U T E R ; T_OUTER : O U T E R ;
T_OVER : O V E R ; T_OVER : O V E R ;
T_OVERWRITE : O V E R W R I T E ; T_OVERWRITE : O V E R W R I T E ;
T_OWNER : O W N E R ; T_OWNER : O W N E R ;
T_PACKAGE : P A C K A G E ; T_PACKAGE : P A C K A G E ;
T_PARTITION : P A R T I T I O N ; T_PARTITION : P A R T I T I O N ;
T_PCTFREE : P C T F R E E ; T_PCTFREE : P C T F R E E ;
T_PCTUSED : P C T U S E D ; T_PCTUSED : P C T U S E D ;
T_PLS_INTEGER : P L S '_' I N T E G E R ; T_PLS_INTEGER : P L S '_' I N T E G E R ;
T_PRECISION : P R E C I S I O N ; T_PRECISION : P R E C I S I O N ;
T_PRESERVE : P R E S E R V E ; T_PRESERVE : P R E S E R V E ;
T_PRIMARY : P R I M A R Y ; T_PRIMARY : P R I M A R Y ;
T_PRINT : P R I N T ; T_PRINT : P R I N T ;
T_PROC : P R O C ; T_PROC : P R O C ;
T_PROCEDURE : P R O C E D U R E ; T_PROCEDURE : P R O C E D U R E ;
T_QUALIFY : Q U A L I F Y ; T_QUALIFY : Q U A L I F Y ;
T_QUERY_BAND : Q U E R Y '_' B A N D ; T_QUERY_BAND : Q U E R Y '_' B A N D ;
T_QUIT : Q U I T ; T_QUIT : Q U I T ;
T_QUOTED_IDENTIFIER : Q U O T E D '_' I D E N T I F I E R ; T_QUOTED_IDENTIFIER : Q U O T E D '_' I D E N T I F I E R ;
T_RAISE : R A I S E ; T_RAISE : R A I S E ;
T_REAL : R E A L ; T_REAL : R E A L ;
T_REFERENCES : R E F E R E N C E S ; T_REFERENCES : R E F E R E N C E S ;
T_REGEXP : R E G E X P ; T_REGEXP : R E G E X P ;
T_REPLACE : R E P L A C E ; T_REPLACE : R E P L A C E ;
T_RESIGNAL : R E S I G N A L ; T_RESIGNAL : R E S I G N A L ;
T_RESTRICT : R E S T R I C T ; T_RESTRICT : R E S T R I C T ;
T_RESULT : R E S U L T ; T_RESULT : R E S U L T ;
T_RESULT_SET_LOCATOR : R E S U L T '_' S E T '_' L O C A T O R ; T_RESULT_SET_LOCATOR : R E S U L T '_' S E T '_' L O C A T O R ;
T_RETURN : R E T U R N ; T_RETURN : R E T U R N ;
T_RETURNS : R E T U R N S ; T_RETURNS : R E T U R N S ;
@ -236,66 +237,66 @@ T_RIGHT : R I G H T ;
T_RLIKE : R L I K E ; T_RLIKE : R L I K E ;
T_ROLE : R O L E ; T_ROLE : R O L E ;
T_ROLLBACK : R O L L B A C K ; T_ROLLBACK : R O L L B A C K ;
T_ROW : R O W ; T_ROW : R O W ;
T_ROWS : R O W S ; T_ROWS : R O W S ;
T_ROWTYPE : R O W T Y P E ; T_ROWTYPE : R O W T Y P E ;
T_ROW_COUNT : R O W '_' C O U N T ; T_ROW_COUNT : R O W '_' C O U N T ;
T_RR : R R; T_RR : R R;
T_RS : R S ; T_RS : R S ;
T_PWD : P W D ; T_PWD : P W D ;
T_TRIM : T R I M ; T_TRIM : T R I M ;
T_SCHEMA : S C H E M A ; T_SCHEMA : S C H E M A ;
T_SECOND : S E C O N D ; T_SECOND : S E C O N D ;
T_SECONDS : S E C O N D S; T_SECONDS : S E C O N D S;
T_SECURITY : S E C U R I T Y ; T_SECURITY : S E C U R I T Y ;
T_SEGMENT : S E G M E N T ; T_SEGMENT : S E G M E N T ;
T_SEL : S E L ; T_SEL : S E L ;
T_SELECT : S E L E C T ; T_SELECT : S E L E C T ;
T_SET : S E T ; T_SET : S E T ;
T_SESSION : S E S S I O N ; T_SESSION : S E S S I O N ;
T_SESSIONS : S E S S I O N S ; T_SESSIONS : S E S S I O N S ;
T_SETS : S E T S; T_SETS : S E T S;
T_SHARE : S H A R E ; T_SHARE : S H A R E ;
T_SIGNAL : S I G N A L ; T_SIGNAL : S I G N A L ;
T_SIMPLE_DOUBLE : S I M P L E '_' D O U B L E ; T_SIMPLE_DOUBLE : S I M P L E '_' D O U B L E ;
T_SIMPLE_FLOAT : S I M P L E '_' F L O A T ; T_SIMPLE_FLOAT : S I M P L E '_' F L O A T ;
T_SIMPLE_INTEGER : S I M P L E '_' I N T E G E R ; T_SIMPLE_INTEGER : S I M P L E '_' I N T E G E R ;
T_SMALLDATETIME : S M A L L D A T E T I M E ; T_SMALLDATETIME : S M A L L D A T E T I M E ;
T_SMALLINT : S M A L L I N T ; T_SMALLINT : S M A L L I N T ;
T_SQL : S Q L ; T_SQL : S Q L ;
T_SQLEXCEPTION : S Q L E X C E P T I O N ; T_SQLEXCEPTION : S Q L E X C E P T I O N ;
T_SQLINSERT : S Q L I N S E R T ; T_SQLINSERT : S Q L I N S E R T ;
T_SQLSTATE : S Q L S T A T E ; T_SQLSTATE : S Q L S T A T E ;
T_SQLWARNING : S Q L W A R N I N G ; T_SQLWARNING : S Q L W A R N I N G ;
T_STATS : S T A T S ; T_STATS : S T A T S ;
T_STATISTICS : S T A T I S T I C S ; T_STATISTICS : S T A T I S T I C S ;
T_STEP : S T E P ; T_STEP : S T E P ;
T_STORAGE : S T O R A G E ; T_STORAGE : S T O R A G E ;
T_STORED : S T O R E D ; T_STORED : S T O R E D ;
T_STRING : S T R I N G ; T_STRING : S T R I N G ;
T_SUBDIR : S U B D I R ; T_SUBDIR : S U B D I R ;
T_SUBSTRING : S U B S T R I N G ; T_SUBSTRING : S U B S T R I N G ;
T_SUM : S U M ; T_SUM : S U M ;
T_SUMMARY : S U M M A R Y ; T_SUMMARY : S U M M A R Y ;
T_SYS_REFCURSOR : S Y S '_' R E F C U R S O R ; T_SYS_REFCURSOR : S Y S '_' R E F C U R S O R ;
T_TABLE : T A B L E ; T_TABLE : T A B L E ;
T_TABLESPACE : T A B L E S P A C E ; T_TABLESPACE : T A B L E S P A C E ;
T_TEMPORARY : T E M P O R A R Y ; T_TEMPORARY : T E M P O R A R Y ;
T_TERMINATED : T E R M I N A T E D ; T_TERMINATED : T E R M I N A T E D ;
T_TEXTIMAGE_ON : T E X T I M A G E '_' O N ; T_TEXTIMAGE_ON : T E X T I M A G E '_' O N ;
T_THEN : T H E N ; T_THEN : T H E N ;
T_TIMESTAMP : T I M E S T A M P ; T_TIMESTAMP : T I M E S T A M P ;
T_TINYINT : T I N Y I N T ; T_TINYINT : T I N Y I N T ;
T_TITLE : T I T L E ; T_TITLE : T I T L E ;
T_TO : T O ; T_TO : T O ;
T_TOP : T O P ; T_TOP : T O P ;
T_TRANSACTION : T R A N S A C T I O N ; T_TRANSACTION : T R A N S A C T I O N ;
T_TRUE : T R U E ; T_TRUE : T R U E ;
T_TRUNCATE : T R U N C A T E; T_TRUNCATE : T R U N C A T E;
T_TYPE : T Y P E ; T_TYPE : T Y P E ;
T_UNION : U N I O N ; T_UNION : U N I O N ;
T_UNIQUE : U N I Q U E ; T_UNIQUE : U N I Q U E ;
T_UPDATE : U P D A T E ; T_UPDATE : U P D A T E ;
T_UR : U R ; T_UR : U R ;
T_USE : U S E ; T_USE : U S E ;
T_USING : U S I N G ; T_USING : U S I N G ;
@ -309,47 +310,50 @@ T_VOLATILE : V O L A T I L E ;
T_WHEN : W H E N ; T_WHEN : W H E N ;
T_WHERE : W H E R E ; T_WHERE : W H E R E ;
T_WHILE : W H I L E ; T_WHILE : W H I L E ;
T_WITH : W I T H ; T_WITH : W I T H ;
T_WITHOUT : W I T H O U T ; T_WITHOUT : W I T H O U T ;
T_WORK : W O R K ; T_WORK : W O R K ;
T_XACT_ABORT : X A C T '_' A B O R T ; T_XACT_ABORT : X A C T '_' A B O R T ;
T_XML : X M L ; T_XML : X M L ;
T_YES : Y E S ; T_YES : Y E S ;
// Functions with specific syntax // Functions with specific syntax
T_ACTIVITY_COUNT : A C T I V I T Y '_' C O U N T ; T_ACTIVITY_COUNT : A C T I V I T Y '_' C O U N T ;
T_CUME_DIST : C U M E '_' D I S T ; T_CUME_DIST : C U M E '_' D I S T ;
T_CURRENT_DATE : C U R R E N T '_' D A T E ; T_CURRENT_DATE : C U R R E N T '_' D A T E ;
T_CURRENT_TIMESTAMP : C U R R E N T '_' T I M E S T A M P ; T_CURRENT_TIMESTAMP : C U R R E N T '_' T I M E S T A M P ;
T_CURRENT_USER : C U R R E N T '_' U S E R ; T_CURRENT_USER : C U R R E N T '_' U S E R ;
T_DENSE_RANK : D E N S E '_' R A N K ; T_DENSE_RANK : D E N S E '_' R A N K ;
T_FIRST_VALUE : F I R S T '_' V A L U E; T_FIRST_VALUE : F I R S T '_' V A L U E;
T_LAG : L A G ; T_LAG : L A G ;
T_LAST_VALUE : L A S T '_' V A L U E; T_LAST_VALUE : L A S T '_' V A L U E;
T_LEAD : L E A D ; T_LEAD : L E A D ;
T_MAX_PART_STRING : M A X '_' P A R T '_' S T R I N G ; T_MAX_PART_STRING : M A X '_' P A R T '_' S T R I N G ;
T_MIN_PART_STRING : M I N '_' P A R T '_' S T R I N G ; T_MIN_PART_STRING : M I N '_' P A R T '_' S T R I N G ;
T_MAX_PART_INT : M A X '_' P A R T '_' I N T ; T_MAX_PART_INT : M A X '_' P A R T '_' I N T ;
T_MIN_PART_INT : M I N '_' P A R T '_' I N T ; T_MIN_PART_INT : M I N '_' P A R T '_' I N T ;
T_MAX_PART_DATE : M A X '_' P A R T '_' D A T E ; T_MAX_PART_DATE : M A X '_' P A R T '_' D A T E ;
T_MIN_PART_DATE : M I N '_' P A R T '_' D A T E ; T_MIN_PART_DATE : M I N '_' P A R T '_' D A T E ;
T_PART_COUNT : P A R T '_' C O U N T ; T_PART_COUNT : P A R T '_' C O U N T ;
T_PART_LOC : P A R T '_' L O C ; T_PART_LOC : P A R T '_' L O C ;
T_RANK : R A N K ; T_RANK : R A N K ;
T_ROW_NUMBER : R O W '_' N U M B E R; T_ROW_NUMBER : R O W '_' N U M B E R;
T_STDEV : S T D E V ; T_STDEV : S T D E V ;
T_SYSDATE : S Y S D A T E ; T_SYSDATE : S Y S D A T E ;
T_VARIANCE : V A R I A N C E ; T_VARIANCE : V A R I A N C E ;
T_USER : U S E R; T_USER : U S E R;
T_ADD : '+' ; T_ADD : '+' ;
T_COLON : ':' ; T_COLON : ':' ;
T_COMMA : ',' ; T_COMMA : ',' ;
T_PIPE : '||' ; T_PIPE : '||' ;
T_DIV : '/' ; T_DIV : '/' ;
T_DOT : '.' ;
T_DOT2 : '..' ; T_DOT2 : '..' ;
T_EQUAL : '=' ; T_EQUAL : '=' ;
T_EQUAL2 : '==' ; T_EQUAL2 : '==' ;
T_SHARP : '#' ;
T_NOTE : '!' ;
T_NOTEQUAL : '<>' ; T_NOTEQUAL : '<>' ;
T_NOTEQUAL2 : '!=' ; T_NOTEQUAL2 : '!=' ;
T_GREATER : '>' ; T_GREATER : '>' ;
@ -357,10 +361,12 @@ T_GREATEREQUAL : '>=' ;
T_LESS : '<' ; T_LESS : '<' ;
T_LESSEQUAL : '<=' ; T_LESSEQUAL : '<=' ;
T_MUL : '*' ; T_MUL : '*' ;
T_PRECENT : '%' ;
T_CALLS : '@' ;
T_OPEN_B : '{' ; T_OPEN_B : '{' ;
T_OPEN_P : '(' ; T_OPEN_P : '(' ;
T_OPEN_SB : '[' ; T_OPEN_SB : '[' ;
T_CLOSE_B : '}' ; T_CLOSE_B : '}' ;
T_CLOSE_P : ')' ; T_CLOSE_P : ')' ;
T_CLOSE_SB : ']' ; T_CLOSE_SB : ']' ;
T_SEMICOLON : ';' ; T_SEMICOLON : ';' ;
@ -381,11 +387,11 @@ L_M_COMMENT : '/*' .*? '*/' -> channel(HIDDEN) ; // Multil
L_S_COMMENT : ('--' | '//') .*? '\r'? '\n' -> channel(HIDDEN) ; // Single line comment L_S_COMMENT : ('--' | '//') .*? '\r'? '\n' -> channel(HIDDEN) ; // Single line comment
L_FILE : ([a-zA-Z] ':' '\\'?)? L_ID ('\\' L_ID)* // File path (a/b/c Linux path causes conflicts with division operator and handled at parser level) L_FILE : ([a-zA-Z] ':' '\\'?)? L_ID ('\\' L_ID)* // File path (a/b/c Linux path causes conflicts with division operator and handled at parser level)
;
L_LABEL : ([a-zA-Z] | L_DIGIT | '_')* ':'
; ;
L_LABEL : ([a-zA-Z] | L_DIGIT | '_')* ':'
;
fragment fragment
L_ID_PART : L_ID_PART :
[a-zA-Z] ([a-zA-Z] | L_DIGIT | '_')* // Identifier part [a-zA-Z] ([a-zA-Z] | L_DIGIT | '_')* // Identifier part
@ -397,8 +403,8 @@ L_ID_PART :
; ;
fragment fragment
L_STR_ESC_D : // Double quoted string escape sequence L_STR_ESC_D : // Double quoted string escape sequence
'""' | '\\"' '""' | '\\"'
; ;
fragment fragment
L_DIGIT : [0-9] // Digit L_DIGIT : [0-9] // Digit
; ;

View File

@ -1,3 +0,0 @@
# Hive SQL Grammar
Source file from [Hive Github](https://github.com/apache/hive/tree/master/hplsql/src/main/antlr4/org/apache/hive/hplsql)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,384 +1,404 @@
T__0=1 T_ACTION=1
T__1=2 T_ADD2=2
T__2=3 T_ALL=3
T__3=4 T_ALLOCATE=4
T__4=5 T_ALTER=5
T__5=6 T_AND=6
T__6=7 T_ANSI_NULLS=7
T__7=8 T_ANSI_PADDING=8
T__8=9 T_AS=9
T__9=10 T_ASC=10
T_GO=11 T_ASSOCIATE=11
T_BEGIN=12 T_AT=12
T_SEMICOLON=13 T_AUTO_INCREMENT=13
T_END=14 T_AVG=14
T_EXCEPTION=15 T_BATCHSIZE=15
T_WHEN=16 T_BEGIN=16
L_ID=17 T_BETWEEN=17
T_THEN=18 T_BIGINT=18
T_NULL=19 T_BINARY_DOUBLE=19
T_SET=20 T_BINARY_FLOAT=20
T_COMMA=21 T_BINARY_INTEGER=21
T_COLON=22 T_BIT=22
T_EQUAL=23 T_BODY=23
T_OPEN_P=24 T_BREAK=24
T_CLOSE_P=25 T_BY=25
T_ALLOCATE=26 T_BYTE=26
T_CURSOR=27 T_CALL=27
T_FOR=28 T_CALLER=28
T_RESULT=29 T_CASCADE=29
T_PROCEDURE=30 T_CASE=30
T_ASSOCIATE=31 T_CASESPECIFIC=31
T_LOCATOR=32 T_CAST=32
T_LOCATORS=33 T_CHAR=33
T_WITH=34 T_CHARACTER=34
T_TRANSACTION=35 T_CHARSET=35
T_BREAK=36 T_CLIENT=36
T_CALL=37 T_CLOSE=37
T_DECLARE=38 T_CLUSTERED=38
T_AS=39 T_CMP=39
T_CONSTANT=40 T_COLLECT=40
T_CONDITION=41 T_COLLECTION=41
T_IS=42 T_COLUMN=42
T_RETURN=43 T_COMMENT=43
T_ONLY=44 T_CONSTANT=44
T_TO=45 T_COMMIT=45
T_CALLER=46 T_COMPRESS=46
T_CLIENT=47 T_CONCAT=47
T_WITHOUT=48 T_CONDITION=48
T_CONTINUE=49 T_CONSTRAINT=49
T_EXIT=50 T_CONTINUE=50
T_HANDLER=51 T_COPY=51
T_SQLEXCEPTION=52 T_COUNT=52
T_SQLWARNING=53 T_COUNT_BIG=53
T_NOT=54 T_CREATE=54
T_FOUND=55 T_CREATION=55
T_GLOBAL=56 T_CREATOR=56
T_TEMPORARY=57 T_CS=57
T_TABLE=58 T_CURRENT=58
T_CREATE=59 T_CURRENT_SCHEMA=59
T_IF=60 T_CURSOR=60
T_EXISTS=61 T_DATABASE=61
T_LOCAL=62 T_DATA=62
T_MULTISET=63 T_DATE=63
T_VOLATILE=64 T_DATETIME=64
T_LIKE=65 T_DAY=65
T_CONSTRAINT=66 T_DAYS=66
T_PRIMARY=67 T_DEC=67
T_KEY=68 T_DECIMAL=68
T_UNIQUE=69 T_DECLARE=69
T_REFERENCES=70 T_DEFAULT=70
T_IDENTITY=71 T_DEFERRED=71
L_INT=72 T_DEFINED=72
T_AUTO_INCREMENT=73 T_DEFINER=73
T_ENABLE=74 T_DEFINITION=74
T_CLUSTERED=75 T_DELETE=75
T_ASC=76 T_DELIMITED=76
T_DESC=77 T_DELIMITER=77
T_FOREIGN=78 T_DESC=78
T_ON=79 T_DESCRIBE=79
T_UPDATE=80 T_DIAGNOSTICS=80
T_DELETE=81 T_DIR=81
T_NO=82 T_DIRECTORY=82
T_ACTION=83 T_DISTINCT=83
T_RESTRICT=84 T_DISTRIBUTE=84
T_DEFAULT=85 T_DO=85
T_CASCADE=86 T_DOUBLE=86
T_LOG=87 T_DROP=87
T_FALLBACK=88 T_DYNAMIC=88
T_COMMIT=89 T_ELSE=89
T_PRESERVE=90 T_ELSEIF=90
T_ROWS=91 T_ELSIF=91
T_SEGMENT=92 T_ENABLE=92
T_CREATION=93 T_END=93
T_IMMEDIATE=94 T_ENGINE=94
T_DEFERRED=95 T_ESCAPED=95
T_PCTFREE=96 T_EXCEPT=96
T_PCTUSED=97 T_EXEC=97
T_INITRANS=98 T_EXECUTE=98
T_MAXTRANS=99 T_EXCEPTION=99
T_NOCOMPRESS=100 T_EXCLUSIVE=100
T_LOGGING=101 T_EXISTS=101
T_NOLOGGING=102 T_EXIT=102
T_STORAGE=103 T_FALLBACK=103
T_TABLESPACE=104 T_FALSE=104
T_INDEX=105 T_FETCH=105
T_IN=106 T_FIELDS=106
T_REPLACE=107 T_FILE=107
T_DISTRIBUTE=108 T_FILES=108
T_BY=109 T_FLOAT=109
T_HASH=110 T_FOR=110
T_LOGGED=111 T_FOREIGN=111
T_COMPRESS=112 T_FORMAT=112
T_YES=113 T_FOUND=113
T_DEFINITION=114 T_FROM=114
T_DROP=115 T_FULL=115
T_DATA=116 T_FUNCTION=116
T_STORED=117 T_GET=117
T_ROW=118 T_GLOBAL=118
T_FORMAT=119 T_GO=119
T_DELIMITED=120 T_GRANT=120
T_FIELDS=121 T_GROUP=121
T_TERMINATED=122 T_HANDLER=122
T_ESCAPED=123 T_HASH=123
T_COLLECTION=124 T_HAVING=124
T_ITEMS=125 T_HDFS=125
T_MAP=126 T_HIVE=126
T_KEYS=127 T_HOST=127
T_LINES=128 T_IDENTITY=128
T_DEFINED=129 T_IF=129
T_TEXTIMAGE_ON=130 T_IGNORE=130
T_COMMENT=131 T_IMMEDIATE=131
T_CHARACTER=132 T_IN=132
T_CHARSET=133 T_INCLUDE=133
T_ENGINE=134 T_INDEX=134
T_ALTER=135 T_INITRANS=135
T_ADD2=136 T_INNER=136
T_CHAR=137 T_INOUT=137
T_BIGINT=138 T_INSERT=138
T_BINARY_DOUBLE=139 T_INT=139
T_BINARY_FLOAT=140 T_INT2=140
T_BINARY_INTEGER=141 T_INT4=141
T_BIT=142 T_INT8=142
T_DATE=143 T_INTEGER=143
T_DATETIME=144 T_INTERSECT=144
T_DEC=145 T_INTERVAL=145
T_DECIMAL=146 T_INTO=146
T_DOUBLE=147 T_INVOKER=147
T_PRECISION=148 T_IS=148
T_FLOAT=149 T_ISOPEN=149
T_INT=150 T_ITEMS=150
T_INT2=151 T_JOIN=151
T_INT4=152 T_KEEP=152
T_INT8=153 T_KEY=153
T_INTEGER=154 T_KEYS=154
T_NCHAR=155 T_LANGUAGE=155
T_NVARCHAR=156 T_LEAVE=156
T_NUMBER=157 T_LEFT=157
T_NUMERIC=158 T_LIKE=158
T_PLS_INTEGER=159 T_LIMIT=159
T_REAL=160 T_LINES=160
T_RESULT_SET_LOCATOR=161 T_LOCAL=161
T_VARYING=162 T_LOCATION=162
T_SIMPLE_FLOAT=163 T_LOCATOR=163
T_SIMPLE_DOUBLE=164 T_LOCATORS=164
T_SIMPLE_INTEGER=165 T_LOCKS=165
T_SMALLINT=166 T_LOG=166
T_SMALLDATETIME=167 T_LOGGED=167
T_STRING=168 T_LOGGING=168
T_SYS_REFCURSOR=169 T_LOOP=169
T_TIMESTAMP=170 T_MAP=170
T_TINYINT=171 T_MATCHED=171
T_VARCHAR=172 T_MAX=172
T_VARCHAR2=173 T_MAXTRANS=173
T_XML=174 T_MERGE=174
T_TYPE=175 T_MESSAGE_TEXT=175
T_ROWTYPE=176 T_MICROSECOND=176
T_MAX=177 T_MICROSECONDS=177
T_BYTE=178 T_MIN=178
T_CASESPECIFIC=179 T_MULTISET=179
T_CS=180 T_NCHAR=180
T_DATABASE=181 T_NEW=181
T_SCHEMA=182 T_NVARCHAR=182
T_LOCATION=183 T_NO=183
T_OR=184 T_NOCOUNT=184
T_FUNCTION=185 T_NOCOMPRESS=185
T_RETURNS=186 T_NOLOGGING=186
T_PACKAGE=187 T_NONE=187
T_PROC=188 T_NOT=188
T_BODY=189 T_NOTFOUND=189
T_OUT=190 T_NULL=190
T_INOUT=191 T_NUMERIC=191
T_LANGUAGE=192 T_NUMBER=192
T_SQL=193 T_OBJECT=193
T_SECURITY=194 T_OFF=194
T_CREATOR=195 T_ON=195
T_DEFINER=196 T_ONLY=196
T_INVOKER=197 T_OPEN=197
T_OWNER=198 T_OR=198
T_DYNAMIC=199 T_ORDER=199
T_SETS=200 T_OUT=200
T_EXEC=201 T_OUTER=201
T_EXECUTE=202 T_OVER=202
T_INTO=203 T_OVERWRITE=203
T_ELSE=204 T_OWNER=204
T_ELSIF=205 T_PACKAGE=205
T_ELSEIF=206 T_PARTITION=206
T_INCLUDE=207 T_PCTFREE=207
T_INSERT=208 T_PCTUSED=208
T_OVERWRITE=209 T_PLS_INTEGER=209
T_VALUES=210 T_PRECISION=210
T_DIRECTORY=211 T_PRESERVE=211
T_GET=212 T_PRIMARY=212
T_DIAGNOSTICS=213 T_PRINT=213
T_MESSAGE_TEXT=214 T_PROC=214
T_ROW_COUNT=215 T_PROCEDURE=215
T_GRANT=216 T_QUALIFY=216
T_ROLE=217 T_QUERY_BAND=217
T_LEAVE=218 T_QUIT=218
T_OBJECT=219 T_QUOTED_IDENTIFIER=219
T_AT=220 T_RAISE=220
T_OPEN=221 T_REAL=221
T_FETCH=222 T_REFERENCES=222
T_FROM=223 T_REGEXP=223
T_COLLECT=224 T_REPLACE=224
T_STATISTICS=225 T_RESIGNAL=225
T_STATS=226 T_RESTRICT=226
T_COLUMN=227 T_RESULT=227
T_CLOSE=228 T_RESULT_SET_LOCATOR=228
T_CMP=229 T_RETURN=229
T_SUM=230 T_RETURNS=230
T_COPY=231 T_REVERSE=231
T_HDFS=232 T_RIGHT=232
T_BATCHSIZE=233 T_RLIKE=233
T_DELIMITER=234 T_ROLE=234
T_SQLINSERT=235 T_ROLLBACK=235
T_IGNORE=236 T_ROW=236
T_WORK=237 T_ROWS=237
T_PRINT=238 T_ROWTYPE=238
T_QUIT=239 T_ROW_COUNT=239
T_RAISE=240 T_RR=240
T_RESIGNAL=241 T_RS=241
T_SQLSTATE=242 T_PWD=242
T_VALUE=243 T_TRIM=243
T_ROLLBACK=244 T_SCHEMA=244
T_CURRENT=245 T_SECOND=245
T_CURRENT_SCHEMA=246 T_SECONDS=246
T_ANSI_NULLS=247 T_SECURITY=247
T_ANSI_PADDING=248 T_SEGMENT=248
T_NOCOUNT=249 T_SEL=249
T_QUOTED_IDENTIFIER=250 T_SELECT=250
T_XACT_ABORT=251 T_SET=251
T_OFF=252 T_SESSION=252
T_QUERY_BAND=253 T_SESSIONS=253
T_NONE=254 T_SETS=254
T_SESSION=255 T_SHARE=255
T_SIGNAL=256 T_SIGNAL=256
T_SUMMARY=257 T_SIMPLE_DOUBLE=257
T_TOP=258 T_SIMPLE_FLOAT=258
T_LIMIT=259 T_SIMPLE_INTEGER=259
T_TRUNCATE=260 T_SMALLDATETIME=260
T_USE=261 T_SMALLINT=261
T_WHILE=262 T_SQL=262
T_DO=263 T_SQLEXCEPTION=263
T_LOOP=264 T_SQLINSERT=264
T_REVERSE=265 T_SQLSTATE=265
T_DOT2=266 T_SQLWARNING=266
T_STEP=267 T_STATS=267
L_LABEL=268 T_STATISTICS=268
T_LESS=269 T_STEP=269
T_GREATER=270 T_STORAGE=270
T_USING=271 T_STORED=271
T_UNION=272 T_STRING=272
T_ALL=273 T_SUBDIR=273
T_EXCEPT=274 T_SUBSTRING=274
T_INTERSECT=275 T_SUM=275
T_SELECT=276 T_SUMMARY=276
T_SEL=277 T_SYS_REFCURSOR=277
T_DISTINCT=278 T_TABLE=278
T_TITLE=279 T_TABLESPACE=279
L_S_STRING=280 T_TEMPORARY=280
T_INNER=281 T_TERMINATED=281
T_JOIN=282 T_TEXTIMAGE_ON=282
T_LEFT=283 T_THEN=283
T_RIGHT=284 T_TIMESTAMP=284
T_FULL=285 T_TINYINT=285
T_OUTER=286 T_TITLE=286
T_WHERE=287 T_TO=287
T_GROUP=288 T_TOP=288
T_HAVING=289 T_TRANSACTION=289
T_QUALIFY=290 T_TRUE=290
T_ORDER=291 T_TRUNCATE=291
T_RR=292 T_TYPE=292
T_RS=293 T_UNION=293
T_UR=294 T_UNIQUE=294
T_AND=295 T_UPDATE=295
T_KEEP=296 T_UR=296
T_EXCLUSIVE=297 T_USE=297
T_SHARE=298 T_USING=298
T_LOCKS=299 T_VALUE=299
T_MERGE=300 T_VALUES=300
T_MATCHED=301 T_VAR=301
T_DESCRIBE=302 T_VARCHAR=302
T_BETWEEN=303 T_VARCHAR2=303
T_EQUAL2=304 T_VARYING=304
T_NOTEQUAL=305 T_VOLATILE=305
T_NOTEQUAL2=306 T_WHEN=306
T_LESSEQUAL=307 T_WHERE=307
T_GREATEREQUAL=308 T_WHILE=308
T_RLIKE=309 T_WITH=309
T_REGEXP=310 T_WITHOUT=310
T_MUL=311 T_WORK=311
T_DIV=312 T_XACT_ABORT=312
T_ADD=313 T_XML=313
T_SUB=314 T_YES=314
T_INTERVAL=315 T_ACTIVITY_COUNT=315
T_DAY=316 T_CUME_DIST=316
T_DAYS=317 T_CURRENT_DATE=317
T_MICROSECOND=318 T_CURRENT_TIMESTAMP=318
T_MICROSECONDS=319 T_CURRENT_USER=319
T_SECOND=320 T_DENSE_RANK=320
T_SECONDS=321 T_FIRST_VALUE=321
T_PIPE=322 T_LAG=322
T_CONCAT=323 T_LAST_VALUE=323
T_CASE=324 T_LEAD=324
T_ISOPEN=325 T_MAX_PART_STRING=325
T_NOTFOUND=326 T_MIN_PART_STRING=326
T_AVG=327 T_MAX_PART_INT=327
T_COUNT=328 T_MIN_PART_INT=328
T_COUNT_BIG=329 T_MAX_PART_DATE=329
T_CUME_DIST=330 T_MIN_PART_DATE=330
T_DENSE_RANK=331 T_PART_COUNT=331
T_FIRST_VALUE=332 T_PART_LOC=332
T_LAG=333 T_RANK=333
T_LAST_VALUE=334 T_ROW_NUMBER=334
T_LEAD=335 T_STDEV=335
T_MIN=336 T_SYSDATE=336
T_RANK=337 T_VARIANCE=337
T_ROW_NUMBER=338 T_USER=338
T_STDEV=339 T_ADD=339
T_VAR=340 T_COLON=340
T_VARIANCE=341 T_COMMA=341
T_OVER=342 T_PIPE=342
T_PARTITION=343 T_DIV=343
T_ACTIVITY_COUNT=344 T_DOT=344
T_CAST=345 T_DOT2=345
T_CURRENT_DATE=346 T_EQUAL=346
T_CURRENT_TIMESTAMP=347 T_EQUAL2=347
T_CURRENT_USER=348 T_SHARP=348
T_USER=349 T_NOTE=349
T_MAX_PART_STRING=350 T_NOTEQUAL=350
T_MIN_PART_STRING=351 T_NOTEQUAL2=351
T_MAX_PART_INT=352 T_GREATER=352
T_MIN_PART_INT=353 T_GREATEREQUAL=353
T_MAX_PART_DATE=354 T_LESS=354
T_MIN_PART_DATE=355 T_LESSEQUAL=355
T_PART_COUNT=356 T_MUL=356
T_PART_LOC=357 T_PRECENT=357
T_TRIM=358 T_CALLS=358
T_SUBSTRING=359 T_OPEN_B=359
T_SYSDATE=360 T_OPEN_P=360
T_HIVE=361 T_OPEN_SB=361
T_HOST=362 T_CLOSE_B=362
L_FILE=363 T_CLOSE_P=363
L_D_STRING=364 T_CLOSE_SB=364
L_DEC=365 T_SEMICOLON=365
T_TRUE=366 T_SUB=366
T_FALSE=367 L_ID=367
T_DIR=368 L_S_STRING=368
T_FILE=369 L_D_STRING=369
T_FILES=370 L_INT=370
T_NEW=371 L_DEC=371
T_PWD=372 L_WS=372
T_SESSIONS=373 L_M_COMMENT=373
T_SUBDIR=374 L_S_COMMENT=374
'@'=1 L_FILE=375
'#'=2 L_LABEL=376
'/'=3 '+'=339
'%'=4 ':'=340
'.'=5 ','=341
'*'=6 '||'=342
'!'=7 '/'=343
';'=8 '.'=344
'-'=9 '..'=345
'+'=10 '='=346
'=='=347
'#'=348
'!'=349
'<>'=350
'!='=351
'>'=352
'>='=353
'<'=354
'<='=355
'*'=356
'%'=357
'@'=358
'{'=359
'('=360
'['=361
'}'=362
')'=363
']'=364
';'=365
'-'=366

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +1,404 @@
T__0=1 T_ACTION=1
T__1=2 T_ADD2=2
T__2=3 T_ALL=3
T__3=4 T_ALLOCATE=4
T__4=5 T_ALTER=5
T__5=6 T_AND=6
T__6=7 T_ANSI_NULLS=7
T__7=8 T_ANSI_PADDING=8
T__8=9 T_AS=9
T__9=10 T_ASC=10
'@'=1 T_ASSOCIATE=11
'#'=2 T_AT=12
'/'=3 T_AUTO_INCREMENT=13
'%'=4 T_AVG=14
'.'=5 T_BATCHSIZE=15
'*'=6 T_BEGIN=16
'!'=7 T_BETWEEN=17
';'=8 T_BIGINT=18
'-'=9 T_BINARY_DOUBLE=19
'+'=10 T_BINARY_FLOAT=20
T_BINARY_INTEGER=21
T_BIT=22
T_BODY=23
T_BREAK=24
T_BY=25
T_BYTE=26
T_CALL=27
T_CALLER=28
T_CASCADE=29
T_CASE=30
T_CASESPECIFIC=31
T_CAST=32
T_CHAR=33
T_CHARACTER=34
T_CHARSET=35
T_CLIENT=36
T_CLOSE=37
T_CLUSTERED=38
T_CMP=39
T_COLLECT=40
T_COLLECTION=41
T_COLUMN=42
T_COMMENT=43
T_CONSTANT=44
T_COMMIT=45
T_COMPRESS=46
T_CONCAT=47
T_CONDITION=48
T_CONSTRAINT=49
T_CONTINUE=50
T_COPY=51
T_COUNT=52
T_COUNT_BIG=53
T_CREATE=54
T_CREATION=55
T_CREATOR=56
T_CS=57
T_CURRENT=58
T_CURRENT_SCHEMA=59
T_CURSOR=60
T_DATABASE=61
T_DATA=62
T_DATE=63
T_DATETIME=64
T_DAY=65
T_DAYS=66
T_DEC=67
T_DECIMAL=68
T_DECLARE=69
T_DEFAULT=70
T_DEFERRED=71
T_DEFINED=72
T_DEFINER=73
T_DEFINITION=74
T_DELETE=75
T_DELIMITED=76
T_DELIMITER=77
T_DESC=78
T_DESCRIBE=79
T_DIAGNOSTICS=80
T_DIR=81
T_DIRECTORY=82
T_DISTINCT=83
T_DISTRIBUTE=84
T_DO=85
T_DOUBLE=86
T_DROP=87
T_DYNAMIC=88
T_ELSE=89
T_ELSEIF=90
T_ELSIF=91
T_ENABLE=92
T_END=93
T_ENGINE=94
T_ESCAPED=95
T_EXCEPT=96
T_EXEC=97
T_EXECUTE=98
T_EXCEPTION=99
T_EXCLUSIVE=100
T_EXISTS=101
T_EXIT=102
T_FALLBACK=103
T_FALSE=104
T_FETCH=105
T_FIELDS=106
T_FILE=107
T_FILES=108
T_FLOAT=109
T_FOR=110
T_FOREIGN=111
T_FORMAT=112
T_FOUND=113
T_FROM=114
T_FULL=115
T_FUNCTION=116
T_GET=117
T_GLOBAL=118
T_GO=119
T_GRANT=120
T_GROUP=121
T_HANDLER=122
T_HASH=123
T_HAVING=124
T_HDFS=125
T_HIVE=126
T_HOST=127
T_IDENTITY=128
T_IF=129
T_IGNORE=130
T_IMMEDIATE=131
T_IN=132
T_INCLUDE=133
T_INDEX=134
T_INITRANS=135
T_INNER=136
T_INOUT=137
T_INSERT=138
T_INT=139
T_INT2=140
T_INT4=141
T_INT8=142
T_INTEGER=143
T_INTERSECT=144
T_INTERVAL=145
T_INTO=146
T_INVOKER=147
T_IS=148
T_ISOPEN=149
T_ITEMS=150
T_JOIN=151
T_KEEP=152
T_KEY=153
T_KEYS=154
T_LANGUAGE=155
T_LEAVE=156
T_LEFT=157
T_LIKE=158
T_LIMIT=159
T_LINES=160
T_LOCAL=161
T_LOCATION=162
T_LOCATOR=163
T_LOCATORS=164
T_LOCKS=165
T_LOG=166
T_LOGGED=167
T_LOGGING=168
T_LOOP=169
T_MAP=170
T_MATCHED=171
T_MAX=172
T_MAXTRANS=173
T_MERGE=174
T_MESSAGE_TEXT=175
T_MICROSECOND=176
T_MICROSECONDS=177
T_MIN=178
T_MULTISET=179
T_NCHAR=180
T_NEW=181
T_NVARCHAR=182
T_NO=183
T_NOCOUNT=184
T_NOCOMPRESS=185
T_NOLOGGING=186
T_NONE=187
T_NOT=188
T_NOTFOUND=189
T_NULL=190
T_NUMERIC=191
T_NUMBER=192
T_OBJECT=193
T_OFF=194
T_ON=195
T_ONLY=196
T_OPEN=197
T_OR=198
T_ORDER=199
T_OUT=200
T_OUTER=201
T_OVER=202
T_OVERWRITE=203
T_OWNER=204
T_PACKAGE=205
T_PARTITION=206
T_PCTFREE=207
T_PCTUSED=208
T_PLS_INTEGER=209
T_PRECISION=210
T_PRESERVE=211
T_PRIMARY=212
T_PRINT=213
T_PROC=214
T_PROCEDURE=215
T_QUALIFY=216
T_QUERY_BAND=217
T_QUIT=218
T_QUOTED_IDENTIFIER=219
T_RAISE=220
T_REAL=221
T_REFERENCES=222
T_REGEXP=223
T_REPLACE=224
T_RESIGNAL=225
T_RESTRICT=226
T_RESULT=227
T_RESULT_SET_LOCATOR=228
T_RETURN=229
T_RETURNS=230
T_REVERSE=231
T_RIGHT=232
T_RLIKE=233
T_ROLE=234
T_ROLLBACK=235
T_ROW=236
T_ROWS=237
T_ROWTYPE=238
T_ROW_COUNT=239
T_RR=240
T_RS=241
T_PWD=242
T_TRIM=243
T_SCHEMA=244
T_SECOND=245
T_SECONDS=246
T_SECURITY=247
T_SEGMENT=248
T_SEL=249
T_SELECT=250
T_SET=251
T_SESSION=252
T_SESSIONS=253
T_SETS=254
T_SHARE=255
T_SIGNAL=256
T_SIMPLE_DOUBLE=257
T_SIMPLE_FLOAT=258
T_SIMPLE_INTEGER=259
T_SMALLDATETIME=260
T_SMALLINT=261
T_SQL=262
T_SQLEXCEPTION=263
T_SQLINSERT=264
T_SQLSTATE=265
T_SQLWARNING=266
T_STATS=267
T_STATISTICS=268
T_STEP=269
T_STORAGE=270
T_STORED=271
T_STRING=272
T_SUBDIR=273
T_SUBSTRING=274
T_SUM=275
T_SUMMARY=276
T_SYS_REFCURSOR=277
T_TABLE=278
T_TABLESPACE=279
T_TEMPORARY=280
T_TERMINATED=281
T_TEXTIMAGE_ON=282
T_THEN=283
T_TIMESTAMP=284
T_TINYINT=285
T_TITLE=286
T_TO=287
T_TOP=288
T_TRANSACTION=289
T_TRUE=290
T_TRUNCATE=291
T_TYPE=292
T_UNION=293
T_UNIQUE=294
T_UPDATE=295
T_UR=296
T_USE=297
T_USING=298
T_VALUE=299
T_VALUES=300
T_VAR=301
T_VARCHAR=302
T_VARCHAR2=303
T_VARYING=304
T_VOLATILE=305
T_WHEN=306
T_WHERE=307
T_WHILE=308
T_WITH=309
T_WITHOUT=310
T_WORK=311
T_XACT_ABORT=312
T_XML=313
T_YES=314
T_ACTIVITY_COUNT=315
T_CUME_DIST=316
T_CURRENT_DATE=317
T_CURRENT_TIMESTAMP=318
T_CURRENT_USER=319
T_DENSE_RANK=320
T_FIRST_VALUE=321
T_LAG=322
T_LAST_VALUE=323
T_LEAD=324
T_MAX_PART_STRING=325
T_MIN_PART_STRING=326
T_MAX_PART_INT=327
T_MIN_PART_INT=328
T_MAX_PART_DATE=329
T_MIN_PART_DATE=330
T_PART_COUNT=331
T_PART_LOC=332
T_RANK=333
T_ROW_NUMBER=334
T_STDEV=335
T_SYSDATE=336
T_VARIANCE=337
T_USER=338
T_ADD=339
T_COLON=340
T_COMMA=341
T_PIPE=342
T_DIV=343
T_DOT=344
T_DOT2=345
T_EQUAL=346
T_EQUAL2=347
T_SHARP=348
T_NOTE=349
T_NOTEQUAL=350
T_NOTEQUAL2=351
T_GREATER=352
T_GREATEREQUAL=353
T_LESS=354
T_LESSEQUAL=355
T_MUL=356
T_PRECENT=357
T_CALLS=358
T_OPEN_B=359
T_OPEN_P=360
T_OPEN_SB=361
T_CLOSE_B=362
T_CLOSE_P=363
T_CLOSE_SB=364
T_SEMICOLON=365
T_SUB=366
L_ID=367
L_S_STRING=368
L_D_STRING=369
L_INT=370
L_DEC=371
L_WS=372
L_M_COMMENT=373
L_S_COMMENT=374
L_FILE=375
L_LABEL=376
'+'=339
':'=340
','=341
'||'=342
'/'=343
'.'=344
'..'=345
'='=346
'=='=347
'#'=348
'!'=349
'<>'=350
'!='=351
'>'=352
'>='=353
'<'=354
'<='=355
'*'=356
'%'=357
'@'=358
'{'=359
'('=360
'['=361
'}'=362
')'=363
']'=364
';'=365
'-'=366

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
import { InputStream, CommonTokenStream, Lexer } from 'antlr4'; import { InputStream, CommonTokenStream, Lexer } from 'antlr4';
import { HiveSqlLexer } from '../lib/hive/HiveSqlLexer'; import { HiveSqlLexer } from '../lib/hive/HiveSqlLexer';
import { HiveSqlParser } from '../lib/hive/HiveSqlParser'; import { HiveSql } from '../lib/hive/HiveSql';
export * from '../lib/hive/HiveSqlListener'; export * from '../lib/hive/HiveSqlListener';
export * from '../lib/hive/HiveSqlVisitor'; export * from '../lib/hive/HiveSqlVisitor';
@ -14,7 +14,7 @@ export default class HiveSQL extends BasicParser {
} }
public createParserFromLexer(lexer: Lexer) { public createParserFromLexer(lexer: Lexer) {
const tokenStream = new CommonTokenStream(lexer); const tokenStream = new CommonTokenStream(lexer);
return new HiveSqlParser(tokenStream); return new HiveSql(tokenStream);
} }
} }

View File

@ -2,11 +2,15 @@ import SQLParser from '../../../src/parser/hive';
describe('HiveSQL Lexer tests', () => { describe('HiveSQL Lexer tests', () => {
const parser = new SQLParser(); const parser = new SQLParser();
// select id,name,sex from user1; test('select token counts', () => {
const sql = 'SELECT * FROM t1'; const sql = 'SELECT * FROM t1';
const tokens = parser.getAllTokens(sql); const tokens = parser.getAllTokens(sql);
expect(tokens.length).toBe(4);
});
test('token counts', () => { test('select token counts', () => {
expect(tokens.length).toBe(12); const sql = 'show create table_name;';
const tokens = parser.getAllTokens(sql);
expect(tokens.length).toBe(4);
}); });
}); });

View File

@ -1,17 +1,16 @@
import SQLParser, { HiveSqlListener } from '../../../src/parser/hive'; import SQLParser, { HiveSqlListener } from '../../../src/parser/hive';
describe('Hive SQL Listener Tests', () => { describe('Hive SQL Listener Tests', () => {
const expectTableName = 'user1';
const sql = `select id,name,sex from ${expectTableName};`;
const parser = new SQLParser(); const parser = new SQLParser();
test('Listener enterSelectList', async () => {
const expectTableName = 'userName';
const sql = `select ${expectTableName} from user1 where inc_day='20190601' limit 1000;`;
const parserTree = parser.parse(sql);
const parserTree = parser.parse(sql);
test('Listener enterTableName', async () => {
let result = ''; let result = '';
class MyListener extends HiveSqlListener { class MyListener extends HiveSqlListener {
enterTableName(ctx): void { enterSelect_list(ctx): void {
result = ctx.getText().toLowerCase(); result = ctx.getText();
} }
} }
const listenTableName: any = new MyListener(); const listenTableName: any = new MyListener();
@ -19,4 +18,18 @@ describe('Hive SQL Listener Tests', () => {
await parser.listen(listenTableName, parserTree); await parser.listen(listenTableName, parserTree);
expect(result).toBe(expectTableName); expect(result).toBe(expectTableName);
}); });
test('Listener enterCreateTable', async () => {
const sql = `drop table table_name;`;
const parserTree = parser.parse(sql);
let result = '';
class MyListener extends HiveSqlListener {
enterDrop_stmt(ctx): void {
result = ctx.getText();
}
}
const listenTableName: any = new MyListener();
await parser.listen(listenTableName, parserTree);
expect(result).toBe('droptabletable_name');
});
}); });

View File

@ -2,17 +2,21 @@ import SQLParser from '../../../src/parser/hive';
describe('Hive SQL Syntax Tests', () => { describe('Hive SQL Syntax Tests', () => {
const parser = new SQLParser(); const parser = new SQLParser();
test('Create Table Statement', () => {
test('Select Statement', () => { const sql = 'CREATE TABLE person(name STRING,age INT);';
const sql = 'SELECT * FROM employee WHERE salary>30000;';
const result = parser.validate(sql);
expect(result.length).toBe(0);
});
test('Select 1+1', () => {
const sql = 'SELECT 1+1;';
const result = parser.validate(sql); const result = parser.validate(sql);
expect(result.length).toBe(0); expect(result.length).toBe(0);
}); });
}); test('Create Table Statement', () => {
const sql = `alter table dm_gis.table_name add if not exists partition (inc_day = '20190601');`;
const result = parser.validate(sql);
expect(result.length).toBe(0);
});
test('Wrong Select Statement', () => {
const sql = 'SELECT add ABC from Where ;'
const result = parser.validate(sql);
expect(result.length).toBe(2);
expect(result[0].message).toBe(`no viable alternative at input 'SELECTaddABCfromWhere'`)
expect(result[1].message).toBe(`mismatched input 'Where' expecting <EOF>`)
});
});

View File

@ -1,15 +1,15 @@
import SQLParser, { HiveSqlVisitor } from '../../../src/parser/hive'; import SQLParser, { HiveSqlVisitor } from '../../../src/parser/hive';
describe('Generic SQL Visitor Tests', () => { describe('Generic SQL Visitor Tests', () => {
const expectTableName = 'user1'; const expectTableName = 'dm_gis.dlv_addr_tc_count';
const sql = `select id,name,sex from ${expectTableName};`; const sql = `select citycode,tc,inc_day from ${expectTableName} where inc_day='20190501' limit 100;`;
const parser = new SQLParser(); const parser = new SQLParser();
const parserTree = parser.parse(sql, (error) => { const parserTree = parser.parse(sql, (error) => {
console.log('Parse error:', error); console.log('Parse error:', error);
}); });
console.log('Parser tree string:', parser.toString(parserTree)); // console.log('Parser tree string:', parser.toString(parserTree));
test('Visitor visitTableName', () => { test('Visitor visitTableName', () => {
let result = ''; let result = '';
@ -19,6 +19,7 @@ describe('Generic SQL Visitor Tests', () => {
super.visitTable_name(ctx); super.visitTable_name(ctx);
} }
} }
const visitor: any = new MyVisitor(); const visitor: any = new MyVisitor();
visitor.visit(parserTree); visitor.visit(parserTree);