From 833f991f6b06516fb2791a99fc84e1ca4348d7bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E6=9E=B8?= Date: Wed, 23 Oct 2024 19:03:23 +0800 Subject: [PATCH] Fix teradata parse qualify issue. --- .../sql/dialect/teradata/parser/TDLexer.java | 1 + .../src/test/resources/bvt/parser/teradata/0.txt | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/core/src/main/java/com/alibaba/druid/sql/dialect/teradata/parser/TDLexer.java b/core/src/main/java/com/alibaba/druid/sql/dialect/teradata/parser/TDLexer.java index 5d547aa33d..8f276d514e 100644 --- a/core/src/main/java/com/alibaba/druid/sql/dialect/teradata/parser/TDLexer.java +++ b/core/src/main/java/com/alibaba/druid/sql/dialect/teradata/parser/TDLexer.java @@ -18,6 +18,7 @@ protected Keywords loadKeywords() { map.put("SEL", Token.SELECT); map.put("TOP", Token.TOP); + map.put("QUALIFY", Token.QUALIFY); return new Keywords(map); } diff --git a/core/src/test/resources/bvt/parser/teradata/0.txt b/core/src/test/resources/bvt/parser/teradata/0.txt index 9d5c35ce21..5fc768bea8 100644 --- a/core/src/test/resources/bvt/parser/teradata/0.txt +++ b/core/src/test/resources/bvt/parser/teradata/0.txt @@ -158,3 +158,19 @@ CREATE TABLE TMP_MEMBER_INFO2 ( ) PRIMARY INDEX (MBR_CARD_NBR, MBR_CARD_NBR_OLD, BIZ_SPACE_CODE, CUST_NBR, BIZ_SPACE_ID) ON COMMIT PRESERVE ROWS +------------------------------------------------------------------------------------------------------------------------ +SELECT + MBR_CARD_NBR , '' AS CUST_NBR , NM , ID_CARD , ID_CARD_FLAG , SEX_CD , HMTON_CD , BIRTH_DT_OLD , BIRTH_DT +, REG_TM , CONTACT_TEL , HOME_ADDR , AFFL_SITE_ID , AFFL_BUSI_DIST_CD , BUSI_DIST_DISTANCE_CD , ONLINE_REG_FLAG , ACTIVE_FLAG +, REG_CHANNEL_CODE , REG_CHANNEL_NAME +FROM D_MEMBER_INFO_TMP_NEW +WHERE LENGTH(MBR_CARD_NBR) >= 12 +QUALIFY ROW_NUMBER() OVER(PARTITION BY MBR_CARD_NBR ORDER BY BIZ_SPACE_CODE DESC)=1 +-------------------- +SELECT MBR_CARD_NBR, '' AS CUST_NBR, NM, ID_CARD, ID_CARD_FLAG + , SEX_CD, HMTON_CD, BIRTH_DT_OLD, BIRTH_DT, REG_TM + , CONTACT_TEL, HOME_ADDR, AFFL_SITE_ID, AFFL_BUSI_DIST_CD, BUSI_DIST_DISTANCE_CD + , ONLINE_REG_FLAG, ACTIVE_FLAG, REG_CHANNEL_CODE, REG_CHANNEL_NAME +FROM D_MEMBER_INFO_TMP_NEW +WHERE LENGTH(MBR_CARD_NBR) >= 12 +QUALIFY ROW_NUMBER() OVER (PARTITION BY MBR_CARD_NBR ORDER BY BIZ_SPACE_CODE DESC) = 1