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

chengzhang 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 1ebd93dd5e5 fix:Support for Table-Valued Constructors (#36203)
1ebd93dd5e5 is described below

commit 1ebd93dd5e5627509a569ba1a212add8402dbabb
Author: cxy <[email protected]>
AuthorDate: Thu Aug 7 17:28:57 2025 +0800

    fix:Support for Table-Valued Constructors (#36203)
---
 .../src/main/antlr4/imports/sqlserver/BaseRule.g4  |  2 +-
 .../main/antlr4/imports/sqlserver/DMLStatement.g4  |  2 +-
 .../parser/src/main/resources/case/dml/select.xml  | 33 ++++++++++++++++++++++
 .../main/resources/sql/supported/dml/select.xml    |  1 +
 4 files changed, 36 insertions(+), 2 deletions(-)

diff --git 
a/parser/sql/dialect/sqlserver/src/main/antlr4/imports/sqlserver/BaseRule.g4 
b/parser/sql/dialect/sqlserver/src/main/antlr4/imports/sqlserver/BaseRule.g4
index 9a1cffafe8f..8afdb57f678 100644
--- a/parser/sql/dialect/sqlserver/src/main/antlr4/imports/sqlserver/BaseRule.g4
+++ b/parser/sql/dialect/sqlserver/src/main/antlr4/imports/sqlserver/BaseRule.g4
@@ -121,7 +121,7 @@ unreservedWord
     | ELASTIC_POOL | SERVICE_OBJECTIVE | DATABASE_NAME | ALLOW_CONNECTIONS | 
GEO | NAMED | DATEFIRST | BACKUP_STORAGE_REDUNDANCY | 
FORCE_FAILOVER_ALLOW_DATA_LOSS | SECONDARY | FAILOVER | 
DEFAULT_FULLTEXT_LANGUAGE
     | DEFAULT_LANGUAGE | INLINE | NESTED_TRIGGERS | TRANSFORM_NOISE_WORDS | 
TWO_DIGIT_YEAR_CUTOFF | PERSISTENT_LOG_BUFFER | DIRECTORY_NAME | DATEFORMAT | 
DELAYED_DURABILITY | TRANSFER | SCHEMA | PASSWORD | AUTHORIZATION
     | MEMBER | SEARCH | TEXT | SECOND | PRECISION | VIEWS | PROVIDER | COLUMNS 
| SUBSTRING | RETURNS | SIZE | CONTAINS | MONTH | INPUT | YEAR
-    | TIMESTAMP | TRIM | USER | RIGHT | JSON | SID | OPENQUERY | ACTION | 
TARGET | HOUR | MINUTE | TABLE | NODES | VALUE | EXIST | CHANGETABLE | VERSION 
| CHANGES | MODEL | AI_GENERATE_EMBEDDINGS | PARAMETERS | USE | FREETEXTTABLE | 
NCHAR | LEFT | RANK | ROLLUP | PIVOT | UNPIVOT | PARSE | TRY_PARSE | 
HIERARCHYID | PATINDEX | POSITION | FORCESEEK | FORCESCAN | NOEXPAND | 
SPATIAL_WINDOW_MAX_CELLS | LANGUAGE | CATALOG | PRODUCT | SYSTEM | TABLESAMPLE 
| LABEL
+    | TIMESTAMP | TRIM | USER | RIGHT | JSON | SID | OPENQUERY | ACTION | 
TARGET | HOUR | MINUTE | TABLE | NODES | VALUE | EXIST | CHANGETABLE | VERSION 
| CHANGES | MODEL | AI_GENERATE_EMBEDDINGS | PARAMETERS | USE | FREETEXTTABLE | 
NCHAR | LEFT | RANK | ROLLUP | PIVOT | UNPIVOT | PARSE | TRY_PARSE | 
HIERARCHYID | PATINDEX | POSITION | FORCESEEK | FORCESCAN | NOEXPAND | 
SPATIAL_WINDOW_MAX_CELLS | LANGUAGE | CATALOG | PRODUCT | SYSTEM | TABLESAMPLE 
| LABEL | VALUES
     ;
 
 databaseName
diff --git 
a/parser/sql/dialect/sqlserver/src/main/antlr4/imports/sqlserver/DMLStatement.g4
 
b/parser/sql/dialect/sqlserver/src/main/antlr4/imports/sqlserver/DMLStatement.g4
index ec2b49bf08a..d43b50556c9 100644
--- 
a/parser/sql/dialect/sqlserver/src/main/antlr4/imports/sqlserver/DMLStatement.g4
+++ 
b/parser/sql/dialect/sqlserver/src/main/antlr4/imports/sqlserver/DMLStatement.g4
@@ -185,7 +185,7 @@ tableReference
     ;
 
 tableFactor
-    : tableName (FOR PATH)? forSystemTimeClause? (AS? alias)? 
tableSampleClause? withTableHint? | subquery AS? alias columnNames? | expr (AS? 
alias)? | xmlMethodCall (AS? alias)? columnNames? | LP_ tableReferences RP_ | 
pivotTable
+    : tableName (FOR PATH)? forSystemTimeClause? (AS? alias)? 
tableSampleClause? withTableHint? | subquery AS? alias columnNames? | expr (AS? 
alias)? columnNames? | xmlMethodCall (AS? alias)? columnNames? | LP_ 
tableReferences RP_ | pivotTable
     ;
 
 pivotTable
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 6d63746087b..c38e72868ff 100644
--- a/test/it/parser/src/main/resources/case/dml/select.xml
+++ b/test/it/parser/src/main/resources/case/dml/select.xml
@@ -11483,4 +11483,37 @@
         </group-by>
         <option-hint start-index="107" stop-index="132" text="OPTION (HASH 
GROUP, LABEL = N'label1')" />
     </select>
+
+    <select sql-case-id="select_from_value_function">
+        <projections start-index="7" stop-index="10">
+            <column-projection name="a" start-index="7" stop-index="7" />
+            <column-projection name="b" start-index="10" stop-index="10" />
+        </projections>
+        <from>
+            <function-table table-alias="MyTable" start-index="18" 
stop-index="89">
+                <function start-index="19" stop-index="65" text="VALUES (1, 
2), (3, 4)" function-name="VALUES">
+                    <parameter>
+                        <list-expression start-index="27" stop-index="31">
+                            <items>
+                                <literal-expression value="1" start-index="27" 
stop-index="27" />
+                            </items>
+                            <items>
+                                <literal-expression value="2" start-index="30" 
stop-index="30" />
+                            </items>
+                        </list-expression>
+                    </parameter>
+                    <parameter>
+                        <list-expression start-index="35" stop-index="39">
+                            <items>
+                                <literal-expression value="3" start-index="35" 
stop-index="35" />
+                            </items>
+                            <items>
+                                <literal-expression value="4" start-index="38" 
stop-index="38" />
+                            </items>
+                        </list-expression>
+                    </parameter>
+                </function>
+            </function-table>
+        </from>
+    </select>
 </sql-parser-test-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 dc0672f1c6b..24864bb0c0d 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
@@ -360,4 +360,5 @@
     <sql-case id="select_for_system_time" value="SELECT DepartmentNumber, 
DepartmentName FROM DEPARTMENT FOR SYSTEM_TIME AS OF '2014-01-01' WHERE 
ManagerID = 5;" db-types="SQLServer"/>
     <sql-case id="select_from_tablesample" value="SELECT * FROM Sales.Customer 
TABLESAMPLE SYSTEM(10 PERCENT);" db-types="SQLServer"/>
     <sql-case id="select_option_clause" value="SELECT ProductID, OrderQty FROM 
Sales.SalesOrderDetail WHERE UnitPrice &lt; 5.00 GROUP BY ProductID, OrderQty 
OPTION (HASH GROUP, LABEL = N'label1');" db-types="SQLServer"/>
+    <sql-case id="select_from_value_function" value="SELECT a, b FROM (VALUES 
(1, 2), (3, 4)) AS MyTable(a, b);" db-types="SQLServer"/>
 </sql-cases>

Reply via email to