This is an automated email from the ASF dual-hosted git repository.

terrymanu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new a579fccf932 Fix unsupported Doris window syntax parsing (#39622)
a579fccf932 is described below

commit a579fccf93205ee6d868bf0e269a1dac2a54e882
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Aug 28 13:46:05 2026 +0800

    Fix unsupported Doris window syntax parsing (#39622)
---
 .../src/main/antlr4/imports/doris/BaseRule.g4      | 22 +++++++++--
 .../src/main/antlr4/imports/doris/DMLStatement.g4  | 12 ++----
 .../visitor/statement/DorisStatementVisitor.java   | 14 +------
 .../statement/type/DorisDMLStatementVisitor.java   | 36 ++----------------
 .../resources/case/dml/select-special-function.xml | 44 +++++++++++++++++++---
 .../src/main/resources/case/dml/select-window.xml  | 27 -------------
 .../parser/src/main/resources/case/dml/select.xml  | 28 --------------
 .../sql/supported/dml/select-special-function.xml  |  3 +-
 .../resources/sql/supported/dml/select-window.xml  |  3 +-
 .../main/resources/sql/supported/dml/select.xml    |  1 -
 .../main/resources/sql/unsupported/unsupported.xml |  9 +++++
 11 files changed, 76 insertions(+), 123 deletions(-)

diff --git 
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/BaseRule.g4 
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/BaseRule.g4
index fbe6eb38cdf..d8b59cf049d 100644
--- a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/BaseRule.g4
+++ b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/BaseRule.g4
@@ -1103,7 +1103,9 @@ aggregationExpression
 
 aggregationFunction
     // DORIS CHANGED BEGIN
-    : aggregationFunctionName LP_ (distinct | all)? aggregationExpression? 
collateClause? separatorName? RP_ overClause?
+    : distinctWindowAggregationFunctionName LP_ distinct 
aggregationExpression? collateClause? separatorName? RP_ overClause
+    | aggregationFunctionName LP_ distinct aggregationExpression? 
collateClause? separatorName? RP_
+    | aggregationFunctionName LP_ all? aggregationExpression? collateClause? 
separatorName? RP_ overClause?
     // DORIS CHANGED END
     ;
 
@@ -1146,6 +1148,12 @@ aggregationFunctionName
     : MAX | MIN | SUM | COUNT | AVG | BIT_XOR | GROUP_CONCAT
     ;
 
+// DORIS ADDED BEGIN
+distinctWindowAggregationFunctionName
+    : COUNT | SUM | GROUP_CONCAT
+    ;
+// DORIS ADDED END
+
 // DORIS ADDED BEGIN
 bitwiseBinaryFunctionName
     : BITOR | BITXOR
@@ -1163,11 +1171,15 @@ all
 // DORIS ADDED END
 
 overClause
-    : OVER (windowSpecification | identifier)
+    // DORIS CHANGED BEGIN
+    : OVER windowSpecification
+    // DORIS CHANGED END
     ;
 
 windowSpecification
-    : LP_ identifier? (PARTITION BY expr (COMMA_ expr)*)? orderByClause? 
frameClause? RP_
+    // DORIS CHANGED BEGIN
+    : LP_ (PARTITION BY expr (COMMA_ expr)*)? orderByClause? frameClause? RP_
+    // DORIS CHANGED END
     ;
 
 frameClause
@@ -1243,7 +1255,9 @@ windowFunction
     ;
 
 windowingClause
-    : OVER (windowName=identifier | windowSpecification)
+    // DORIS CHANGED BEGIN
+    : OVER windowSpecification
+    // DORIS CHANGED END
     ;
 
 leadLagInfo
diff --git 
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DMLStatement.g4 
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DMLStatement.g4
index 896def74ebd..daadf34b192 100644
--- 
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DMLStatement.g4
+++ 
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DMLStatement.g4
@@ -154,7 +154,9 @@ queryPrimary
     ;
 
 querySpecification
-    : SELECT selectSpecification* projections selectIntoExpression? 
fromClause? whereClause? groupByClause? havingClause? windowClause?
+    // DORIS CHANGED BEGIN
+    : SELECT selectSpecification* projections selectIntoExpression? 
fromClause? whereClause? groupByClause? havingClause?
+    // DORIS CHANGED END
     ;
 
 call
@@ -534,14 +536,6 @@ limitOffset
     : numberLiterals | parameterMarker
     ;
 
-windowClause
-    : WINDOW windowItem (COMMA_ windowItem)*
-    ;
-
-windowItem
-    : identifier AS windowSpecification
-    ;
-
 subquery
     : queryExpressionParens
     ;
diff --git 
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java
 
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java
index 458318bac61..b29794d0ff6 100644
--- 
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java
@@ -232,7 +232,6 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.Owner
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.ParameterMarkerSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.ParenthesesSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.WindowItemSegment;
-import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.WindowSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.WithSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.match.MatchAgainstExpression;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.DeleteMultiTableSegment;
@@ -953,9 +952,6 @@ public abstract class DorisStatementVisitor extends 
DorisStatementBaseVisitor<AS
         if (null != ctx.havingClause()) {
             selectStatementBuilder.having((HavingSegment) 
visit(ctx.havingClause()));
         }
-        if (null != ctx.windowClause()) {
-            selectStatementBuilder.window((WindowSegment) 
visit(ctx.windowClause()));
-        }
         if (null != ctx.selectIntoExpression()) {
             ASTNode intoSegment = visit(ctx.selectIntoExpression());
             if (intoSegment instanceof OutfileSegment) {
@@ -1041,7 +1037,7 @@ public abstract class DorisStatementVisitor extends 
DorisStatementBaseVisitor<AS
     
     @Override
     public final ASTNode visitAggregationFunction(final 
AggregationFunctionContext ctx) {
-        String aggregationType = ctx.aggregationFunctionName().getText();
+        String aggregationType = null == ctx.aggregationFunctionName() ? 
ctx.distinctWindowAggregationFunctionName().getText() : 
ctx.aggregationFunctionName().getText();
         return AggregationType.isAggregationType(aggregationType)
                 ? createAggregationSegment(ctx, aggregationType)
                 : new 
ExpressionProjectionSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), getOriginalText(ctx));
@@ -1129,21 +1125,13 @@ public abstract class DorisStatementVisitor extends 
DorisStatementBaseVisitor<AS
         if (null != ctx.frameClause()) {
             result.setFrameClause(new 
CommonExpressionSegment(ctx.frameClause().start.getStartIndex(), 
ctx.frameClause().stop.getStopIndex(), getOriginalText(ctx.frameClause())));
         }
-        if (null != ctx.identifier()) {
-            result.setWindowName(new 
IdentifierValue(ctx.identifier().getText()));
-        }
         return result;
     }
     
     @Override
     public ASTNode visitOverClause(final OverClauseContext ctx) {
         WindowItemSegment result = new 
WindowItemSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
-        if (null != ctx.identifier()) {
-            result.setWindowName(new 
IdentifierValue(ctx.identifier().getText()));
-            return result;
-        }
         WindowItemSegment windowItemSegment = (WindowItemSegment) 
visit(ctx.windowSpecification());
-        result.setWindowName(windowItemSegment.getWindowName());
         
result.setPartitionListSegments(windowItemSegment.getPartitionListSegments());
         result.setOrderBySegment(windowItemSegment.getOrderBySegment());
         result.setFrameClause(windowItemSegment.getFrameClause());
diff --git 
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDMLStatementVisitor.java
 
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDMLStatementVisitor.java
index 2a633c14cf9..285387a718e 100644
--- 
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDMLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDMLStatementVisitor.java
@@ -55,9 +55,7 @@ import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.BrokerL
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ColumnNameContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.LoadStatementContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.LoadXmlStatementContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.WindowClauseContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.WindowFunctionContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.WindowItemContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.WindowingClauseContext;
 import 
org.apache.shardingsphere.sql.parser.engine.doris.visitor.statement.DorisStatementVisitor;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.load.BrokerLoadDataDescSegment;
@@ -81,7 +79,6 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.predicate
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.DatabaseSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.OwnerSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.WindowItemSegment;
-import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.WindowSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.IndexHintSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.CallStatement;
@@ -556,26 +553,6 @@ public final class DorisDMLStatementVisitor extends 
DorisStatementVisitor implem
         return result;
     }
     
-    @Override
-    public ASTNode visitWindowClause(final WindowClauseContext ctx) {
-        WindowSegment result = new 
WindowSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
-        for (WindowItemContext each : ctx.windowItem()) {
-            result.getItemSegments().add((WindowItemSegment) visit(each));
-        }
-        return result;
-    }
-    
-    @Override
-    public ASTNode visitWindowItem(final WindowItemContext ctx) {
-        WindowItemSegment result = new 
WindowItemSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
-        result.setWindowName(new IdentifierValue(ctx.identifier().getText()));
-        WindowItemSegment windowItemSegment = (WindowItemSegment) 
visit(ctx.windowSpecification());
-        
result.setPartitionListSegments(windowItemSegment.getPartitionListSegments());
-        result.setOrderBySegment(windowItemSegment.getOrderBySegment());
-        result.setFrameClause(windowItemSegment.getFrameClause());
-        return result;
-    }
-    
     @Override
     public ASTNode visitWindowFunction(final WindowFunctionContext ctx) {
         FunctionSegment result = new 
FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), 
ctx.funcName.getText(), getOriginalText(ctx));
@@ -616,15 +593,10 @@ public final class DorisDMLStatementVisitor extends 
DorisStatementVisitor implem
     @Override
     public ASTNode visitWindowingClause(final WindowingClauseContext ctx) {
         WindowItemSegment result = new 
WindowItemSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
-        if (null != ctx.windowName) {
-            result.setWindowName((IdentifierValue) visit(ctx.windowName));
-        }
-        if (null != ctx.windowSpecification()) {
-            WindowItemSegment windowItemSegment = (WindowItemSegment) 
visit(ctx.windowSpecification());
-            
result.setPartitionListSegments(windowItemSegment.getPartitionListSegments());
-            result.setOrderBySegment(windowItemSegment.getOrderBySegment());
-            result.setFrameClause(windowItemSegment.getFrameClause());
-        }
+        WindowItemSegment windowItemSegment = (WindowItemSegment) 
visit(ctx.windowSpecification());
+        
result.setPartitionListSegments(windowItemSegment.getPartitionListSegments());
+        result.setOrderBySegment(windowItemSegment.getOrderBySegment());
+        result.setFrameClause(windowItemSegment.getFrameClause());
         return result;
     }
 }
diff --git 
a/test/it/parser/src/main/resources/case/dml/select-special-function.xml 
b/test/it/parser/src/main/resources/case/dml/select-special-function.xml
index d639febfcb1..26343a94d2c 100644
--- a/test/it/parser/src/main/resources/case/dml/select-special-function.xml
+++ b/test/it/parser/src/main/resources/case/dml/select-special-function.xml
@@ -5237,21 +5237,53 @@
             </expression-projection>
         </projections>
     </select>
-    <select sql-case-id="select_window_max_distinct_doris" db-types="Doris">
-        <projections start-index="7" stop-index="72">
-            <aggregation-distinct-projection type="MAX" 
expression="MAX(DISTINCT order_id) OVER (PARTITION BY user_id)" 
distinct-inner-expression="order_id" alias="max_order_id" start-index="7" 
stop-index="56">
+    <select sql-case-id="select_max_distinct_doris" db-types="Doris">
+        <projections start-index="7" stop-index="44">
+            <aggregation-distinct-projection type="MAX" 
expression="MAX(DISTINCT order_id)" distinct-inner-expression="order_id" 
alias="max_order_id" start-index="7" stop-index="28">
                 <parameters>
                     <column name="order_id" start-index="20" stop-index="27" />
                 </parameters>
-                <window-item start-index="30" stop-index="56">
+            </aggregation-distinct-projection>
+        </projections>
+        <from>
+            <simple-table name="t_order" start-index="51" stop-index="57" />
+        </from>
+    </select>
+    <select sql-case-id="select_window_distinct_aggregation_doris" 
db-types="Doris">
+        <projections start-index="7" stop-index="171">
+            <aggregation-distinct-projection type="COUNT" 
expression="COUNT(DISTINCT order_id) OVER (PARTITION BY user_id)" 
distinct-inner-expression="order_id" start-index="7" stop-index="58">
+                <parameters>
+                    <column name="order_id" start-index="22" stop-index="29" />
+                </parameters>
+                <window-item start-index="32" stop-index="58">
+                    <partition-by>
+                        <column name="user_id" start-index="51" 
stop-index="57" />
+                    </partition-by>
+                </window-item>
+            </aggregation-distinct-projection>
+            <aggregation-distinct-projection type="SUM" 
expression="SUM(DISTINCT order_id) OVER (PARTITION BY user_id)" 
distinct-inner-expression="order_id" start-index="61" stop-index="110">
+                <parameters>
+                    <column name="order_id" start-index="74" stop-index="81" />
+                </parameters>
+                <window-item start-index="84" stop-index="110">
+                    <partition-by>
+                        <column name="user_id" start-index="103" 
stop-index="109" />
+                    </partition-by>
+                </window-item>
+            </aggregation-distinct-projection>
+            <aggregation-distinct-projection type="GROUP_CONCAT" 
expression="GROUP_CONCAT(DISTINCT order_id) OVER (PARTITION BY user_id)" 
distinct-inner-expression="order_id" start-index="113" stop-index="171">
+                <parameters>
+                    <column name="order_id" start-index="135" stop-index="142" 
/>
+                </parameters>
+                <window-item start-index="145" stop-index="171">
                     <partition-by>
-                        <column name="user_id" start-index="49" 
stop-index="55" />
+                        <column name="user_id" start-index="164" 
stop-index="170" />
                     </partition-by>
                 </window-item>
             </aggregation-distinct-projection>
         </projections>
         <from>
-            <simple-table name="t_order" start-index="79" stop-index="85" />
+            <simple-table name="t_order" start-index="178" stop-index="184" />
         </from>
     </select>
     <select sql-case-id="select_window_max_all_doris" db-types="Doris">
diff --git a/test/it/parser/src/main/resources/case/dml/select-window.xml 
b/test/it/parser/src/main/resources/case/dml/select-window.xml
index a73c68cb6b2..fa5430a927e 100644
--- a/test/it/parser/src/main/resources/case/dml/select-window.xml
+++ b/test/it/parser/src/main/resources/case/dml/select-window.xml
@@ -474,31 +474,4 @@
         </from>
     </select>
 
-    <select sql-case-id="select_window_named_base_partition_doris">
-        <projections start-index="7" stop-index="60">
-            <aggregation-projection type="SUM" expression="SUM(sales) OVER (w 
PARTITION BY region)" alias="total_sales" start-index="7" stop-index="45">
-                <window-item start-index="18" stop-index="45">
-                    <window-name>w</window-name>
-                    <partition-by>
-                        <column name="region" start-index="39" stop-index="44" 
/>
-                    </partition-by>
-                </window-item>
-                <parameter>
-                    <column name="sales" start-index="11" stop-index="15" />
-                </parameter>
-            </aggregation-projection>
-        </projections>
-        <from>
-            <simple-table name="orders" start-index="67" stop-index="72" />
-        </from>
-        <window start-index="74" stop-index="104">
-            <window-item start-index="81" stop-index="104">
-                <window-name>w</window-name>
-                <order-by start-index="87" stop-index="103">
-                    <column-item name="order_id" order-direction="ASC" 
start-index="96" stop-index="103" />
-                </order-by>
-            </window-item>
-        </window>
-    </select>
-
 </sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/case/dml/select.xml 
b/test/it/parser/src/main/resources/case/dml/select.xml
index 474af3cfad1..5b9b8b9fbb5 100644
--- a/test/it/parser/src/main/resources/case/dml/select.xml
+++ b/test/it/parser/src/main/resources/case/dml/select.xml
@@ -7307,34 +7307,6 @@
         </order-by>
     </select>
 
-    <select sql-case-id="select_window_named_partition_doris">
-        <projections start-index="7" stop-index="38" literal-start-index="7" 
literal-stop-index="38">
-            <aggregation-projection type="SUM" expression="SUM(sales) OVER w" 
alias="total_sales" start-index="7" stop-index="23" literal-start-index="7" 
literal-stop-index="23">
-                <window-item start-index="18" stop-index="23">
-                    <window-name>w</window-name>
-                </window-item>
-            </aggregation-projection>
-        </projections>
-        <from>
-            <simple-table name="orders" start-index="45" stop-index="50" 
literal-start-index="45" literal-stop-index="50" />
-        </from>
-        <window start-index="52" stop-index="102">
-            <window-item start-index="59" stop-index="102">
-                <window-name>w</window-name>
-                <partition-by>
-                    <expression-projection text="region" start-index="78" 
stop-index="83" literal-start-index="78" literal-stop-index="83">
-                        <expr>
-                            <column name="region" start-index="78" 
stop-index="83" literal-start-index="78" literal-stop-index="83" />
-                        </expr>
-                    </expression-projection>
-                </partition-by>
-                <order-by>
-                    <column-item name="order_id" order-direction="ASC" 
start-index="94" stop-index="101" literal-start-index="94" 
literal-stop-index="101" />
-                </order-by>
-            </window-item>
-        </window>
-    </select>
-
     <select sql-case-id="select_window_frame_lag_doris">
         <projections start-index="7" stop-index="124" literal-start-index="7" 
literal-stop-index="124">
             <expression-projection text="LAG(amount, 1, 0) OVER (PARTITION BY 
customer_id ORDER BY tx_time ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)" 
alias="lag_amt" start-index="7" stop-index="124" literal-start-index="7" 
literal-stop-index="124">
diff --git 
a/test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml
 
b/test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml
index 4a1aef152cb..1239c3e86a9 100644
--- 
a/test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml
+++ 
b/test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml
@@ -298,7 +298,8 @@
     <sql-case id="select_bitmap_to_string_multiple" value="SELECT 
BITMAP_TO_STRING(BITMAP_OR(TO_BITMAP(1), TO_BITMAP(2)))" db-types="Doris" />
     <sql-case id="select_array_last" value="SELECT ARRAY_LAST(x -&gt; x &gt; 
0, [1, 2, 3, -1, 2])" db-types="Doris" />
     <sql-case id="select_array_last_with_multiple_parameters" value="SELECT 
ARRAY_LAST((x, y) -&gt; x &gt; y, [1, 2, 3, 4, 5], [1.1, 2.2, 3.3, 4.4, 5.5])" 
db-types="Doris" />
-    <sql-case id="select_window_max_distinct_doris" value="SELECT MAX(DISTINCT 
order_id) OVER (PARTITION BY user_id) AS max_order_id FROM t_order" 
db-types="Doris" />
+    <sql-case id="select_max_distinct_doris" value="SELECT MAX(DISTINCT 
order_id) AS max_order_id FROM t_order" db-types="Doris" />
+    <sql-case id="select_window_distinct_aggregation_doris" value="SELECT 
COUNT(DISTINCT order_id) OVER (PARTITION BY user_id), SUM(DISTINCT order_id) 
OVER (PARTITION BY user_id), GROUP_CONCAT(DISTINCT order_id) OVER (PARTITION BY 
user_id) FROM t_order" db-types="Doris" />
     <sql-case id="select_window_max_all_doris" value="SELECT MAX(ALL order_id) 
OVER (PARTITION BY user_id) AS max_order_id FROM t_order" db-types="Doris" />
     <sql-case id="select_instr" value="SELECT INSTR('foobar','bar')" 
db-types="Doris" />
     <sql-case id="select_strright" value="SELECT STRRIGHT('foobarbar',4)" 
db-types="Doris" />
diff --git 
a/test/it/parser/src/main/resources/sql/supported/dml/select-window.xml 
b/test/it/parser/src/main/resources/sql/supported/dml/select-window.xml
index f5acbad8179..d5a4a7830f5 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select-window.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select-window.xml
@@ -18,7 +18,7 @@
 
 <sql-cases>
     <sql-case id="select_catalog_window_aggregation" value="select 
pg_catalog.max(ref_0.c36) over (partition by ref_0.c39 order by ref_0.vkey 
desc) as c_5 from t24 as ref_0" db-types="PostgreSQL,openGauss" />
-    <sql-case id="select_window" value="SELECT user_id, ROW_NUMBER() OVER w AS 
'row_number', RANK() OVER w AS 'rank', DENSE_RANK() OVER w AS 'dense_rank' FROM 
t_order WHERE order_id = ? WINDOW w AS (ORDER BY user_id)" 
db-types="MySQL,Doris,Hive" />
+    <sql-case id="select_window" value="SELECT user_id, ROW_NUMBER() OVER w AS 
'row_number', RANK() OVER w AS 'rank', DENSE_RANK() OVER w AS 'dense_rank' FROM 
t_order WHERE order_id = ? WINDOW w AS (ORDER BY user_id)" 
db-types="MySQL,Hive" />
     <sql-case id="select_window_partition_order_doris" value="SELECT 
ROW_NUMBER() OVER (PARTITION BY k ORDER BY v) FROM t_order" 
db-types="Doris,Hive" />
     <sql-case id="select_window_rank_doris" value="SELECT RANK() OVER 
(PARTITION BY k ORDER BY v) FROM t_order" db-types="Doris" />
     <sql-case id="select_window_lead_lag_doris" value="SELECT LEAD(v) OVER 
(PARTITION BY k ORDER BY v) FROM t_order" db-types="Doris" />
@@ -38,5 +38,4 @@
     <sql-case id="select_window_min_partition_mysql" value="SELECT 
MIN(order_id) OVER (PARTITION BY user_id) AS min_order_id FROM t_order" 
db-types="MySQL" />
     <sql-case id="select_window_max_partition_mysql" value="SELECT 
MAX(order_id) OVER (PARTITION BY user_id) AS max_order_id FROM t_order" 
db-types="MySQL" />
     <sql-case id="select_window_funnel_over_doris" value="SELECT 
WINDOW_FUNNEL(3600, 'default', v, k = 1) OVER (PARTITION BY k ORDER BY v) FROM 
t_order" db-types="Doris" />
-    <sql-case id="select_window_named_base_partition_doris" value="SELECT 
SUM(sales) OVER (w PARTITION BY region) AS total_sales FROM orders WINDOW w AS 
(ORDER BY order_id)" db-types="Doris" />
 </sql-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/dml/select.xml 
b/test/it/parser/src/main/resources/sql/supported/dml/select.xml
index efc5b04cb5f..b996e738a5a 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select.xml
@@ -258,7 +258,6 @@
     <sql-case id="select_with_lead_and_lag_function" value="SELECT hire_date, 
LAG(hire_date, 1) OVER (ORDER BY hire_date) AS LAG1, LEAD(hire_date, 1) OVER 
(ORDER BY hire_date) AS LEAD1 FROM employees WHERE department_id = 30 ORDER BY 
hire_date;" db-types="Oracle,MySQL" />
     <sql-case id="select_with_connect_by_root" value="SELECT CONNECT_BY_ROOT 
last_name 'Manager' FROM employees CONNECT BY PRIOR employee_id = manager_id" 
db-types="Oracle" />
     <sql-case id="select_with_ntile_function" value="SELECT NTILE(4) OVER 
(ORDER BY salary DESC) AS quartile FROM employees WHERE department_id = 100 
ORDER BY last_name" db-types="Oracle,MySQL,Doris" />
-    <sql-case id="select_window_named_partition_doris" value="SELECT 
SUM(sales) OVER w AS total_sales FROM orders WINDOW w AS (PARTITION BY region 
ORDER BY order_id)" db-types="Doris" />
     <sql-case id="select_window_frame_lag_doris" value="SELECT LAG(amount, 1, 
0) OVER (PARTITION BY customer_id ORDER BY tx_time ROWS BETWEEN 1 PRECEDING AND 
1 FOLLOWING) AS lag_amt FROM payments" db-types="Doris" />
     <sql-case id="select_first_value_doris" value="SELECT FIRST_VALUE(price) 
OVER (ORDER BY created_at) AS first_price FROM product_prices" db-types="Doris" 
/>
     <sql-case id="select_nth_value_doris" value="SELECT NTH_VALUE(score, 2) 
OVER (ORDER BY score) AS second_score FROM rankings" db-types="Doris" />
diff --git a/test/it/parser/src/main/resources/sql/unsupported/unsupported.xml 
b/test/it/parser/src/main/resources/sql/unsupported/unsupported.xml
index fc678f86de4..f704eca6ba3 100644
--- a/test/it/parser/src/main/resources/sql/unsupported/unsupported.xml
+++ b/test/it/parser/src/main/resources/sql/unsupported/unsupported.xml
@@ -31,6 +31,15 @@
     <sql-case 
id="unsupported_alter_database_set_transaction_quota_with_unit_for_doris" 
value="ALTER DATABASE example_db SET TRANSACTION QUOTA 1G" db-types="Doris" />
     <sql-case 
id="unsupported_create_table_with_char_varying_without_length_for_doris" 
value="CREATE TABLE t_varying (c CHAR VARYING)" db-types="Doris" />
     <sql-case 
id="unsupported_create_table_with_character_varying_without_length_for_doris" 
value="CREATE TABLE t_varying (c CHARACTER VARYING)" db-types="Doris" />
+    <sql-case id="unsupported_doris_aggregate_named_window" value="SELECT 
SUM(1) OVER w" db-types="Doris" />
+    <sql-case id="unsupported_doris_parenthesized_named_window" value="SELECT 
SUM(1) OVER (w)" db-types="Doris" />
+    <sql-case id="unsupported_doris_inherited_named_window" value="SELECT 
SUM(v) OVER (w PARTITION BY g ORDER BY v) FROM t" db-types="Doris" />
+    <sql-case id="unsupported_doris_analytic_named_window" value="SELECT 
ROW_NUMBER() OVER w" db-types="Doris" />
+    <sql-case id="unsupported_doris_window_clause" value="SELECT SUM(v) OVER 
(ORDER BY v) FROM t WINDOW w AS (ORDER BY v)" db-types="Doris" />
+    <sql-case id="unsupported_doris_max_distinct_window" value="SELECT 
MAX(DISTINCT v) OVER ()" db-types="Doris" />
+    <sql-case id="unsupported_doris_min_distinct_window" value="SELECT 
MIN(DISTINCT v) OVER ()" db-types="Doris" />
+    <sql-case id="unsupported_doris_avg_distinct_window" value="SELECT 
AVG(DISTINCT v) OVER ()" db-types="Doris" />
+    <sql-case id="unsupported_doris_bit_xor_distinct_window" value="SELECT 
BIT_XOR(DISTINCT v) OVER ()" db-types="Doris" />
     <sql-case id="select_like" value="select conname, obj_description(oid, 
'pg_constraint') as desc from pg_constraint where conname like 
'at_partitioned%' order by conname" db-types="PostgreSQL" />
     <sql-case id="select_keyword" value="select relname,c.oid = oldoid as 
orig_oid,case relfilenode when 0 then 'none' when c.oid then 'own' when 
oldfilenode then 'orig' else 'OTHER' end as storage, obj_description(c.oid, 
'pg_class') as desc from pg_class c left join old_oids using (relname) where 
relname like 'at_partitioned%' order by relname" db-types="PostgreSQL" />
     <sql-case id="unsupported_date_literal_for_clickhouse" value="SELECT DATE 
'2024-01-01'" db-types="ClickHouse" />

Reply via email to