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

duanzhengqiang 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 bd8fbed8f8e Support parsing SQL Server SELECT SCHEMA_NAME(schema_id) 
sql #29180 (#29998)
bd8fbed8f8e is described below

commit bd8fbed8f8e1c579eddab2b00a7799ac6a48fa7e
Author: yydeng626 <[email protected]>
AuthorDate: Mon Feb 5 11:51:16 2024 +0800

    Support parsing SQL Server SELECT SCHEMA_NAME(schema_id) sql #29180 (#29998)
    
    * Support parsing SQL Server INSERT INTO sql #29187
    
    * Support parsing SQL Server SELECT SCHEMA_NAME(schema_id) sql #29180
---
 .../src/main/antlr4/imports/sqlserver/BaseRule.g4  |   2 +-
 .../src/main/resources/case/dml/select-join.xml    | 334 +++++++++++++++++++++
 .../parser/src/main/resources/case/dml/select.xml  |  16 +
 .../resources/sql/supported/dml/select-join.xml    |   4 +
 .../main/resources/sql/supported/dml/select.xml    |   1 +
 5 files changed, 356 insertions(+), 1 deletion(-)

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 de8a1fb31a7..df9ff559c77 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
+    | TIMESTAMP | TRIM | USER | RIGHT | JSON
     ;
 
 databaseName
diff --git a/test/it/parser/src/main/resources/case/dml/select-join.xml 
b/test/it/parser/src/main/resources/case/dml/select-join.xml
index 68909244e5a..90b9df36856 100644
--- a/test/it/parser/src/main/resources/case/dml/select-join.xml
+++ b/test/it/parser/src/main/resources/case/dml/select-join.xml
@@ -2627,4 +2627,338 @@
             </join-table>
         </from>
     </select>
+    
+    <select sql-case-id="select_objects_with_inner_join">
+        <projections start-index="7" stop-index="206">
+            <expression-projection start-index="7" stop-index="43" 
alias="schema_name" text="SCHEMA_NAME(schema_id)">
+                <expr>
+                    <function function-name="SCHEMA_NAME" 
text="SCHEMA_NAME(schema_id)" start-index="7" stop-index="28">
+                        <parameter>
+                            <column name="schema_id" start-index="19" 
stop-index="27" />
+                        </parameter>
+                    </function>
+                </expr>
+            </expression-projection>
+            <column-projection name="name" alias="object_name" 
start-index="45" stop-index="65">
+                <owner name="o" start-index="45" stop-index="45" />
+            </column-projection>
+            <column-projection name="type_desc" start-index="67" 
stop-index="77">
+                <owner name="o" start-index="67" stop-index="67" />
+            </column-projection>
+            <column-projection name="parameter_id" start-index="79" 
stop-index="92">
+                <owner name="p" start-index="79" stop-index="79" />
+            </column-projection>
+            <column-projection name="name" alias="parameter_name" 
start-index="94" stop-index="117">
+                <owner name="p" start-index="94" stop-index="94" />
+            </column-projection>
+            <expression-projection alias="parameter_type" 
text="TYPE_NAME(p.user_type_id)" start-index="119" stop-index="161">
+                <expr>
+                    <function function-name="TYPE_NAME" 
text="TYPE_NAME(p.user_type_id)" start-index="119" stop-index="143">
+                        <parameter>
+                            <column name="user_type_id" start-index="129" 
stop-index="142">
+                                <owner name="p" start-index="129" 
stop-index="129" />
+                            </column>
+                        </parameter>
+                    </function>
+                </expr>
+            </expression-projection>
+            <column-projection name="max_length" start-index="163" 
stop-index="174">
+                <owner name="p" start-index="163" stop-index="163" />
+            </column-projection>
+            <column-projection name="precision" start-index="176" 
stop-index="186">
+                <owner name="p" start-index="176" stop-index="176" />
+            </column-projection>
+            <column-projection name="scale" start-index="188" stop-index="194">
+                <owner name="p" start-index="188" stop-index="188" />
+            </column-projection>
+            <column-projection name="is_output" start-index="196" 
stop-index="206">
+                <owner name="p" start-index="196" stop-index="196" />
+            </column-projection>
+        </projections>
+        <from start-index="213" stop-index="288">
+            <join-table natural="false" join-type="INNER">
+                <left>
+                    <simple-table name="objects" alias="o" start-index="213" 
stop-index="228">
+                        <owner name="sys" start-index="213" stop-index="215" />
+                    </simple-table>
+                </left>
+                <right>
+                    <simple-table name="parameters" alias="p" 
start-index="241" stop-index="259">
+                        <owner name="sys" start-index="241" stop-index="243" />
+                    </simple-table>
+                </right>
+                <on-condition>
+                    <binary-operation-expression start-index="264" 
stop-index="288">
+                        <left>
+                            <column name="object_id" start-index="264" 
stop-index="274">
+                                <owner name="o" start-index="264" 
stop-index="264" />
+                            </column>
+                        </left>
+                        <right>
+                            <column name="object_id" start-index="278" 
stop-index="288">
+                                <owner name="p" start-index="278" 
stop-index="278" />
+                            </column>
+                        </right>
+                        <operator>=</operator>
+                    </binary-operation-expression>
+                </on-condition>
+            </join-table>
+        </from>
+        <where start-index="290" stop-index="347">
+            <expr>
+                <binary-operation-expression start-index="296" 
stop-index="347">
+                    <left>
+                        <column start-index="296" stop-index="306" 
name="object_id">
+                            <owner name="o" start-index="296" stop-index="296" 
/>
+                        </column>
+                    </left>
+                    <right>
+                        <function function-name="OBJECT_ID" 
text="OBJECT_ID('&lt;schema_name.object_name&gt;')" start-index="310" 
stop-index="347">
+                            <parameter>
+                                <literal-expression 
value="&lt;schema_name.object_name&gt;" start-index="320" stop-index="346" />
+                            </parameter>
+                        </function>
+                    </right>
+                    <operator>=</operator>
+                </binary-operation-expression>
+            </expr>
+        </where>
+        <order-by>
+            <column-item name="schema_name" start-index="358" stop-index="368" 
order-direction="ASC" />
+            <column-item name="object_name" start-index="371" stop-index="381" 
order-direction="ASC" />
+            <column-item name="parameter_id" start-index="384" 
stop-index="397" order-direction="ASC">
+                <owner name="p" start-index="384" stop-index="384" />
+            </column-item>
+        </order-by>
+    </select>
+    
+    <select sql-case-id="select_json_value_with_cross_apply">
+        <projections start-index="7" stop-index="97">
+            <column-projection name="name" start-index="7" stop-index="10" />
+            <column-projection name="reason" start-index="12" stop-index="17" 
/>
+            <column-projection name="score" start-index="19" stop-index="23" />
+            <expression-projection alias="script" text="JSON_VALUE(details, 
'$.implementationDetails.script')" start-index="25" stop-index="87">
+                <expr>
+                    <function function-name="JSON_VALUE" 
text="JSON_VALUE(details, '$.implementationDetails.script')" start-index="25" 
stop-index="77">
+                        <parameter>
+                            <column name="details" start-index="36" 
stop-index="42" />
+                        </parameter>
+                        <parameter>
+                            <literal-expression 
value="$.implementationDetails.script" start-index="45" stop-index="76" />
+                        </parameter>
+                    </function>
+                </expr>
+            </expression-projection>
+            <shorthand-projection start-index="89" stop-index="97">
+                <owner name="details" start-index="89" stop-index="95" />
+            </shorthand-projection>
+        </projections>
+        <from start-index="104" stop-index="318">
+            <join-table join-type="CROSS" natural="false">
+                <left>
+                    <simple-table name="dm_db_tuning_recommendations" 
start-index="104" stop-index="135">
+                        <owner name="sys" start-index="104" stop-index="106" />
+                    </simple-table>
+                </left>
+                <right>
+                    <function-table table-alias="details" start-index="149" 
stop-index="318">
+                        <table-function function-name="OPENJSON" 
text="OPENJSON(details, '$.planForceDetails') WITH ([query_id] INT 
'$.queryId',regressed_plan_id INT '$.regressedPlanId',last_good_plan_id INT 
'$.recommendedPlanId')">
+                            <parameter>
+                                <column name="details" start-index="158" 
stop-index="164" />
+                            </parameter>
+                            <parameter>
+                                <literal-expression value="$.planForceDetails" 
start-index="167" stop-index="186" />
+                            </parameter>
+                        </table-function>
+                    </function-table>
+                </right>
+            </join-table>
+        </from>
+        <where start-index="320" stop-index="371">
+            <expr>
+                <binary-operation-expression start-index="326" 
stop-index="371">
+                    <left>
+                       <function function-name="JSON_VALUE" 
text="JSON_VALUE(STATE, '$.currentValue')" start-index="326" stop-index="360">
+                           <parameter>
+                               <column name="STATE" start-index="337" 
stop-index="341" />
+                           </parameter>
+                           <parameter>
+                               <literal-expression value="$.currentValue" 
start-index="344" stop-index="359" />
+                           </parameter>
+                       </function>
+                    </left>
+                    <right>
+                        <literal-expression value="Active" start-index="364" 
stop-index="371" />
+                    </right>
+                    <operator>=</operator>
+                </binary-operation-expression>
+            </expr>
+        </where>
+    </select>
+    
+    <select sql-case-id="select_open_json_with_cross_apply">
+        <projections start-index="7" stop-index="337">
+            <column-projection name="reason" start-index="7" stop-index="12" />
+            <column-projection name="score" start-index="14" stop-index="18" />
+            <expression-projection text="JSON_VALUE(details, 
'$.implementationDetails.script')" alias="script" start-index="20" 
stop-index="81">
+                <expr>
+                    <function function-name="JSON_VALUE" 
text="JSON_VALUE(details, '$.implementationDetails.script')" start-index="29" 
stop-index="81">
+                        <parameter>
+                            <column name="details" start-index="40" 
stop-index="46" />
+                        </parameter>
+                        <parameter>
+                            <literal-expression 
value="$.implementationDetails.script" start-index="49" stop-index="80" />
+                        </parameter>
+                    </function>
+                </expr>
+            </expression-projection>
+            <shorthand-projection start-index="83" stop-index="100">
+                <owner name="planForceDetails" start-index="83" 
stop-index="98" />
+            </shorthand-projection>
+            <expression-projection alias="estimated_gain" 
text="regressedPlanExecutionCount + recommendedPlanExecutionCount) * 
(regressedPlanCpuTimeAverage - recommendedPlanCpuTimeAverage) / 100000" 
start-index="102" stop-index="253">
+                <expr>
+                    <binary-operation-expression start-index="119" 
stop-index="253">
+                        <left>
+                            <binary-operation-expression start-index="119" 
stop-index="243">
+                                <left>
+                                    <binary-operation-expression 
start-index="120" stop-index="178">
+                                        <left>
+                                            <column 
name="regressedPlanExecutionCount" start-index="120" stop-index="146" />
+                                        </left>
+                                        <right>
+                                            <column 
name="recommendedPlanExecutionCount" start-index="150" stop-index="178" />
+                                        </right>
+                                        <operator>+</operator>
+                                    </binary-operation-expression>
+                                </left>
+                                <right>
+                                    <binary-operation-expression 
start-index="184" stop-index="242">
+                                        <left>
+                                            <column 
name="regressedPlanCpuTimeAverage" start-index="184" stop-index="210" />
+                                        </left>
+                                        <right>
+                                            <column 
name="recommendedPlanCpuTimeAverage" start-index="214" stop-index="242" />
+                                        </right>
+                                        <operator>-</operator>
+                                    </binary-operation-expression>
+                                </right>
+                                <operator>*</operator>
+                            </binary-operation-expression>
+                        </left>
+                        <right>
+                            <literal-expression value="1000000" 
start-index="247" stop-index="253" />
+                        </right>
+                        <operator>/</operator>
+                    </binary-operation-expression>
+                </expr>
+            </expression-projection>
+            <expression-projection start-index="255" stop-index="337" 
alias="error_prone" text="IIF(regressedPlanErrorCount &gt; 
recommendedPlanErrorCount, 'YES', 'NO')">
+                <expr>
+                    <function function-name="IIF" 
text="IIF(regressedPlanErrorCount &gt; recommendedPlanErrorCount, 'YES', 'NO')" 
start-index="269" stop-index="337">
+                        <parameter>
+                            <binary-operation-expression start-index="273" 
stop-index="323">
+                                <left>
+                                    <column name="regressedPlanErrorCount" 
start-index="273" stop-index="295" />
+                                </left>
+                                <right>
+                                    <column name="recommendedPlanErrorCount" 
start-index="299" stop-index="323" />
+                                </right>
+                                <operator>&gt;</operator>
+                            </binary-operation-expression>
+                        </parameter>
+                        <parameter>
+                            <literal-expression value="YES" start-index="326" 
stop-index="330" />
+                        </parameter>
+                        <parameter>
+                            <literal-expression value="NO" start-index="333" 
stop-index="336" />
+                        </parameter>
+                    </function>
+                </expr>
+            </expression-projection>
+        </projections>
+        <from start-index="344" stop-index="759">
+            <join-table natural="false" join-type="CROSS">
+                <left>
+                    <simple-table name="dm_db_tuning_recommendations" 
start-index="344" stop-index="375">
+                        <owner name="sys" start-index="344" stop-index="346" />
+                    </simple-table>
+                </left>
+                <right>
+                    <function-table table-alias="planForceDetails" 
start-index="389" stop-index="759">
+                        <table-function function-name="OPENJSON"  
text="OPENJSON(Details, '$.planForceDetails') WITH ([query_id] INT 
'$.queryId',regressedPlanId INT '$.regressedPlanId',recommendedPlanId INT 
'$.recommendedPlanId',regressedPlanErrorCount INT,recommendedPlanErrorCount 
INT,regressedPlanExecutionCount INT,regressedPlanCpuTimeAverage 
FLOAT,recommendedPlanExecutionCount INT,recommendedPlanCpuTimeAverage FLOAT)">
+                            <parameter>
+                                <column name="Details" start-index="398" 
stop-index="404" />
+                            </parameter>
+                            <parameter>
+                                <literal-expression value="$.planForceDetails" 
start-index="407" stop-index="426" />
+                            </parameter>
+                        </table-function>
+                    </function-table>
+                </right>
+            </join-table>
+        </from>
+    </select>
+    
+    <select sql-case-id="select_sales_order_record_with_cross_apply">
+        <projections start-index="7" stop-index="64">
+            <column-projection name="Id" start-index="7" stop-index="12">
+                <owner name="Tab" start-index="7" stop-index="9" />
+            </column-projection>
+            <column-projection name="Customer" start-index="14" 
stop-index="40">
+                <owner name="SalesOrderJsonData" start-index="14" 
stop-index="31" />
+            </column-projection>
+            <column-projection name="Date" start-index="42" stop-index="64">
+                <owner name="SalesOrderJsonData" start-index="42" 
stop-index="59" />
+            </column-projection>
+        </projections>
+        <from start-index="71" stop-index="319">
+            <join-table join-type="CROSS" natural="false">
+                <left>
+                    <simple-table name="SalesOrderRecord" alias="Tab" 
start-index="71" stop-index="93" />
+                </left>
+                <right>
+                    <function-table table-alias="SalesOrderJsonData" 
start-index="107" stop-index="319">
+                        <table-function function-name="OPENJSON"  
text="OPENJSON(Tab.json, N'$.Orders.OrdersArray') WITH (Number VARCHAR(200) 
N'$.Order.Number',Date DATETIME N'$.Order.Date',Customer VARCHAR(200) 
N'$.AccountNumber',Quantity INT N'$.Item.Quantity')">
+                            <parameter>
+                                <column name="json" start-index="116" 
stop-index="123">
+                                    <owner name="Tab" start-index="116" 
stop-index="118" />
+                                </column>
+                            </parameter>
+                            <parameter>
+                                <literal-expression 
value="$.Orders.OrdersArray" start-index="126" stop-index="148" />
+                            </parameter>
+                        </table-function>
+                    </function-table>
+                </right>
+            </join-table>
+        </from>
+        <where start-index="321" stop-index="370">
+            <expr>
+                <binary-operation-expression start-index="327" 
stop-index="370">
+                    <left>
+                        <function function-name="JSON_VALUE" 
text="JSON_VALUE(Tab.json, '$.Status')" start-index="327" stop-index="358">
+                            <parameter>
+                                <column name="json" start-index="338" 
stop-index="345">
+                                    <owner name="Tab" start-index="338" 
stop-index="340" />
+                                </column>
+                            </parameter>
+                            <parameter>
+                                <literal-expression value="$.Status" 
start-index="348" stop-index="357" />
+                            </parameter>
+                        </function>
+                    </left>
+                    <right>
+                        <literal-expression value="Closed" start-index="362" 
stop-index="370" />
+                    </right>
+                    <operator>=</operator>
+                </binary-operation-expression>
+            </expr>
+        </where>
+        <order-by>
+           <expression-item expression="JSON_VALUE(Tab.json, '$.Group')" 
start-index="381" stop-index="411" order-direction="ASC" />
+            <column-item name="DateModified" order-direction="ASC" 
start-index="413" stop-index="428">
+                <owner name="Tab" start-index="413" stop-index="415" />
+            </column-item>
+        </order-by>
+    </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 bd16d4586f7..451ce16c621 100644
--- a/test/it/parser/src/main/resources/case/dml/select.xml
+++ b/test/it/parser/src/main/resources/case/dml/select.xml
@@ -8410,4 +8410,20 @@
             </simple-table>
         </from>
     </select>
+    
+    <select sql-case-id="select_from_database_files_2">
+        <projections start-index="7" stop-index="61">
+            <column-projection name="file_id" start-index="7" stop-index="13" 
/>
+            <column-projection name="name" start-index="16" stop-index="19" />
+            <column-projection name="type_desc" start-index="22" 
stop-index="30" />
+            <column-projection name="physical_name" start-index="33" 
stop-index="45" />
+            <column-projection name="size" start-index="48" stop-index="51" />
+            <column-projection name="max_size" start-index="54" 
stop-index="61" />
+        </projections>
+        <from start-index="68" stop-index="85">
+            <simple-table name="database_files" start-index="68" 
stop-index="85">
+                <owner name="sys" start-index="68" stop-index="70" />
+            </simple-table>
+        </from>
+    </select>
 </sql-parser-test-cases>
diff --git 
a/test/it/parser/src/main/resources/sql/supported/dml/select-join.xml 
b/test/it/parser/src/main/resources/sql/supported/dml/select-join.xml
index 4526ba57b08..67d61348374 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select-join.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select-join.xml
@@ -51,4 +51,8 @@
     <sql-case id="select_cross_apply_with_substring_nest_case_when" 
value="SELECT req.session_id, req.total_elapsed_time AS duration_ms, 
req.cpu_time AS cpu_time_ms, req.total_elapsed_time - req.cpu_time AS 
wait_time, req.logical_reads, SUBSTRING (REPLACE (REPLACE (SUBSTRING (ST.text, 
(req.statement_start_offset/2) + 1, ((CASE statement_end_offset WHEN -1 THEN 
DATALENGTH(ST.text)  ELSE req.statement_end_offset END - 
req.statement_start_offset)/2) + 1) , CHAR(10), ' '), CHAR(13), ' '), 1, [...]
     <sql-case id="select_cross_apply_sys_table_query_status" value="SELECT 
t.text, (qs.total_elapsed_time/1000) / qs.execution_count AS avg_elapsed_time, 
(qs.total_worker_time/1000) / qs.execution_count AS avg_cpu_time, 
((qs.total_elapsed_time/1000) / qs.execution_count ) - 
((qs.total_worker_time/1000) / qs.execution_count) AS avg_wait_time, 
qs.total_logical_reads / qs.execution_count AS avg_logical_reads, 
qs.total_logical_writes / qs.execution_count AS avg_writes, 
(qs.total_elapsed_time [...]
     <sql-case id="select_left_join_sub_query_with_escape_quotes" value="SELECT 
'DECLARE @node NVARCHAR(512) = N''' + NodeName + '.' + Cluster + '''' FROM 
(SELECT SUBSTRING(replica_address, 0, CHARINDEX('\', replica_address)) AS 
NodeName, RIGHT(service_name, CHARINDEX('/', REVERSE(service_name)) - 1) 
AppName, JoinCol = 1 FROM sys.dm_hadr_fabric_partitions fp INNER JOIN 
sys.dm_hadr_fabric_replicas fr ON fp.partition_id = fr.partition_id INNER JOIN 
sys.dm_hadr_fabric_nodes fn ON fr.node_nam [...]
+    <sql-case id="select_objects_with_inner_join" value="SELECT 
SCHEMA_NAME(schema_id) AS schema_name,o.name AS 
object_name,o.type_desc,p.parameter_id,p.name AS 
parameter_name,TYPE_NAME(p.user_type_id) AS 
parameter_type,p.max_length,p.precision,p.scale,p.is_output FROM sys.objects AS 
o INNER JOIN sys.parameters AS p ON o.object_id = p.object_id WHERE o.object_id 
= OBJECT_ID('&lt;schema_name.object_name&gt;') ORDER BY schema_name, 
object_name, p.parameter_id" db-types="SQLServer"/>
+    <sql-case id="select_json_value_with_cross_apply" value="SELECT 
name,reason,score,JSON_VALUE(details, '$.implementationDetails.script') AS 
script,details.* FROM sys.dm_db_tuning_recommendations CROSS APPLY 
OPENJSON(details, '$.planForceDetails') WITH ([query_id] INT 
'$.queryId',regressed_plan_id INT '$.regressedPlanId',last_good_plan_id INT 
'$.recommendedPlanId') AS details WHERE JSON_VALUE(STATE, '$.currentValue') = 
'Active'" db-types="SQLServer"/>
+    <sql-case id="select_open_json_with_cross_apply" value="SELECT 
reason,score,script = JSON_VALUE(details, 
'$.implementationDetails.script'),planForceDetails.*,estimated_gain = 
(regressedPlanExecutionCount + recommendedPlanExecutionCount) * 
(regressedPlanCpuTimeAverage - recommendedPlanCpuTimeAverage) / 
1000000,error_prone = IIF(regressedPlanErrorCount &gt; 
recommendedPlanErrorCount, 'YES', 'NO') FROM sys.dm_db_tuning_recommendations 
CROSS APPLY OPENJSON(Details, '$.planForceDetails')  [...]
+    <sql-case id="select_sales_order_record_with_cross_apply" value="SELECT 
Tab.Id,SalesOrderJsonData.Customer,SalesOrderJsonData.Date FROM 
SalesOrderRecord AS Tab CROSS APPLY OPENJSON(Tab.json, N'$.Orders.OrdersArray') 
WITH (Number VARCHAR(200) N'$.Order.Number',Date DATETIME 
N'$.Order.Date',Customer VARCHAR(200) N'$.AccountNumber',Quantity INT 
N'$.Item.Quantity') AS SalesOrderJsonData WHERE JSON_VALUE(Tab.json, 
'$.Status') = N'Closed' ORDER BY JSON_VALUE(Tab.json, '$.Group'),Tab.DateMo 
[...]
 </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 1dc6d181537..b44a53f9935 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
@@ -257,4 +257,5 @@
     <sql-case id="select_escape_quotes_from_sys_table" value="SELECT 'DECLARE 
@serverName NVARCHAR(512) = N''' + value + '''' FROM 
sys.dm_hadr_fabric_config_parameters WHERE parameter_name = 'DnsRecordName'" 
db-types="SQLServer"/>
     <sql-case id="select_from_physical_stats_function" value="SELECT 
page_count, compressed_page_count, forwarded_record_count, * FROM 
sys.dm_db_index_physical_stats(db_id(), object_id('t3'), NULL, NULL, 
'SAMPLED')" db-types="SQLServer"/>
     <sql-case id="select_from_msdb_default_schema" value="SELECT 
backup_size/compressed_backup_size FROM msdb..backupset" db-types="SQLServer"/>
+    <sql-case id="select_from_database_files_2" value="SELECT file_id, name, 
type_desc, physical_name, size, max_size FROM sys.database_files" 
db-types="SQLServer"/>
 </sql-cases>

Reply via email to