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 96e50a9e052 Support parsing SQL Server with object id function (#29633)
96e50a9e052 is described below

commit 96e50a9e05283ee4529d81fddac3fbca97bf0320
Author: LotusMoon <[email protected]>
AuthorDate: Wed Jan 3 14:51:05 2024 +0800

    Support parsing SQL Server with object id function (#29633)
    
    * Support parsing SQL Server with object id function
    
    * import Comparator
    
    * Adjust projections g4
    
    * Remove unnecessary import
---
 .../src/main/antlr4/imports/sqlserver/BaseRule.g4  |   2 +-
 .../main/antlr4/imports/sqlserver/DMLStatement.g4  |   8 +-
 .../statement/SQLServerStatementVisitor.java       |  10 +-
 .../parser/src/main/resources/case/dml/insert.xml  |  21 +++
 .../src/main/resources/case/dml/select-join.xml    | 197 +++++++++++++++++++++
 .../parser/src/main/resources/case/dml/select.xml  | 119 +++++++++++++
 .../main/resources/sql/supported/dml/insert.xml    |   1 +
 .../resources/sql/supported/dml/select-join.xml    |   2 +
 .../main/resources/sql/supported/dml/select.xml    |   2 +
 9 files changed, 352 insertions(+), 10 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 607a2812bc7..b9cc46d59e3 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
@@ -120,7 +120,7 @@ unreservedWord
     | DATA_RETENTION | TEMPORAL_HISTORY_RETENTION | EDITION | 
MIXED_PAGE_ALLOCATION | DISABLED | ALLOWED | HADR | MULTI_USER | 
RESTRICTED_USER | SINGLE_USER | OFFLINE | EMERGENCY | SUSPEND | 
DATE_CORRELATION_OPTIMIZATION
     | 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
+    | MEMBER | SEARCH | TEXT | SECOND | PRECISION | VIEWS
     ;
 
 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 8c56339adfa..1f9fa961ff7 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
@@ -89,12 +89,14 @@ duplicateSpecification
     ;
 
 projections
-    : (unqualifiedShorthand | projection | top (unqualifiedShorthand | 
projection)?) (COMMA_ (unqualifiedShorthand | projection))*
+    : (projection | top projection?) (COMMA_ projection)*
     ;
 
 projection
-    : (alias EQ_)? (columnName | expr) | qualifiedShorthand
-    | (columnName | expr) (AS? alias)? | qualifiedShorthand
+    : qualifiedShorthand
+    | unqualifiedShorthand
+    | (alias EQ_)? (columnName | expr)
+    | (columnName | expr) (AS? alias)?
     ;
 
 top
diff --git 
a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java
 
b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java
index 112ec390d6f..1d4579d08ef 100644
--- 
a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java
+++ 
b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java
@@ -102,7 +102,6 @@ import 
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.Tab
 import 
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.TableReferenceContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.TableReferencesContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.TopContext;
-import 
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.UnqualifiedShorthandContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.UnreservedWordContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.UpdateContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ViewNameContext;
@@ -851,13 +850,10 @@ public abstract class SQLServerStatementVisitor extends 
SQLServerStatementBaseVi
     
     @Override
     public ASTNode visitProjections(final ProjectionsContext ctx) {
-        Collection<ProjectionSegment> projections = new LinkedList<>();
+        List<ProjectionSegment> projections = new LinkedList<>();
         if (null != ctx.top()) {
             projections.add((ProjectionSegment) visit(ctx.top()));
         }
-        for (UnqualifiedShorthandContext each : ctx.unqualifiedShorthand()) {
-            projections.add(new 
ShorthandProjectionSegment(each.getStart().getStartIndex(), 
each.getStop().getStopIndex()));
-        }
         for (ProjectionContext each : ctx.projection()) {
             projections.add((ProjectionSegment) visit(each));
         }
@@ -1128,7 +1124,6 @@ public abstract class SQLServerStatementVisitor extends 
SQLServerStatementBaseVi
     
     @Override
     public ASTNode visitProjection(final ProjectionContext ctx) {
-        // FIXME :The stop index of project is the stop index of projection, 
instead of alias.
         if (null != ctx.qualifiedShorthand()) {
             QualifiedShorthandContext shorthand = ctx.qualifiedShorthand();
             ShorthandProjectionSegment result = new 
ShorthandProjectionSegment(shorthand.getStart().getStartIndex(), 
shorthand.getStop().getStopIndex());
@@ -1136,6 +1131,9 @@ public abstract class SQLServerStatementVisitor extends 
SQLServerStatementBaseVi
             result.setOwner(new 
OwnerSegment(shorthand.identifier().getStart().getStartIndex(), 
shorthand.identifier().getStop().getStopIndex(), identifier));
             return result;
         }
+        if (null != ctx.unqualifiedShorthand()) {
+            return new 
ShorthandProjectionSegment(ctx.unqualifiedShorthand().getStart().getStartIndex(),
 ctx.unqualifiedShorthand().getStop().getStopIndex());
+        }
         AliasSegment alias = null == ctx.alias() ? null : (AliasSegment) 
visit(ctx.alias());
         if (null != ctx.columnName()) {
             ColumnSegment column = (ColumnSegment) visit(ctx.columnName());
diff --git a/test/it/parser/src/main/resources/case/dml/insert.xml 
b/test/it/parser/src/main/resources/case/dml/insert.xml
index 0baf66a99b8..cf0a00f588b 100644
--- a/test/it/parser/src/main/resources/case/dml/insert.xml
+++ b/test/it/parser/src/main/resources/case/dml/insert.xml
@@ -3005,4 +3005,25 @@
             </value>
         </values>
     </insert>
+
+    <insert sql-case-id="insert_with_db_schema_name">
+        <table name="Affiliation" start-index="12" stop-index="43">
+            <owner name="dbo" start-index="29" stop-index="31">
+                <owner name="ContosoWarehouse" start-index="12" 
stop-index="27"/>
+            </owner>
+        </table>
+        <columns start-index="44" stop-index="44"/>
+        <select>
+            <projections start-index="52" stop-index="52">
+                <shorthand-projection start-index="52" stop-index="52"/>
+            </projections>
+            <from>
+                <simple-table name="Affiliation" start-index="59" 
stop-index="86">
+                    <owner name="dbo" start-index="72" stop-index="74">
+                        <owner name="My_Lakehouse" start-index="59" 
stop-index="70"/>
+                    </owner>
+                </simple-table>
+            </from>
+        </select>
+    </insert>
 </sql-parser-test-cases>
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 1947515a469..5c3bf47e084 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
@@ -705,4 +705,201 @@
             </join-table>
         </from>
     </select>
+
+    <select sql-case-id="select_natural_join_with_object_id_function">
+        <projections start-index="7" stop-index="169">
+            <column-projection name="name" start-index="7" stop-index="27" 
alias="column_name">
+                <owner name="c" start-index="7" stop-index="7"/>
+            </column-projection>
+            <column-projection name="column_id" start-index="29" 
stop-index="39">
+                <owner name="c" start-index="29" stop-index="29"/>
+            </column-projection>
+            <expression-projection text="SCHEMA_NAME(t.schema_id)" 
alias="type_schema" start-index="41" stop-index="79">
+                <expr>
+                    <function function-name="SCHEMA_NAME" start-index="41" 
stop-index="64" text="SCHEMA_NAME(t.schema_id)">
+                        <parameter>
+                            <column name="schema_id" start-index="53" 
stop-index="63">
+                                <owner name="t" start-index="53" 
stop-index="53"/>
+                            </column>
+                        </parameter>
+                    </function>
+                </expr>
+            </expression-projection>
+            <column-projection name="name" alias="type_name" start-index="81" 
stop-index="99">
+                <owner name="t" start-index="81" stop-index="81"/>
+            </column-projection>
+            <column-projection name="is_user_defined" start-index="101" 
stop-index="117">
+                <owner name="t" start-index="101" stop-index="101"/>
+            </column-projection>
+            <column-projection name="is_assembly_type" start-index="119" 
stop-index="136">
+                <owner name="t" start-index="119" stop-index="119"/>
+            </column-projection>
+            <column-projection name="max_length" start-index="138" 
stop-index="149">
+                <owner name="c" start-index="138" stop-index="138"/>
+            </column-projection>
+            <column-projection name="precision" start-index="151" 
stop-index="161">
+                <owner name="c" start-index="151" stop-index="151"/>
+            </column-projection>
+            <column-projection name="scale" start-index="163" stop-index="169">
+                <owner name="c" start-index="163" stop-index="163"/>
+            </column-projection>
+        </projections>
+        <from>
+            <join-table join-type="INNER">
+                <left>
+                    <simple-table name="columns" start-index="176" 
stop-index="191" alias="c">
+                        <owner name="sys" start-index="176" stop-index="178"/>
+                    </simple-table>
+                </left>
+                <right>
+                    <simple-table name="types" start-index="198" 
stop-index="211" alias="t">
+                        <owner name="sys" start-index="198" stop-index="200"/>
+                    </simple-table>
+                </right>
+                <on-condition>
+                    <binary-operation-expression start-index="216" 
stop-index="244">
+                        <left>
+                            <column name="user_type_id" start-index="216" 
stop-index="229">
+                                <owner name="c" start-index="216" 
stop-index="216"/>
+                            </column>
+                        </left>
+                        <right>
+                            <column name="user_type_id" start-index="231" 
stop-index="244">
+                                <owner name="t" start-index="231" 
stop-index="231"/>
+                            </column>
+                        </right>
+                        <operator>=</operator>
+                    </binary-operation-expression>
+                </on-condition>
+            </join-table>
+        </from>
+        <where start-index="246" stop-index="302">
+            <expr>
+                <binary-operation-expression start-index="252" 
stop-index="302">
+                    <left>
+                        <column name="object_id" start-index="252" 
stop-index="262">
+                            <owner name="c" start-index="252" 
stop-index="252"/>
+                        </column>
+                    </left>
+                    <right>
+                        <function function-name="OBJECT_ID" start-index="266" 
stop-index="302" text="OBJECT_ID('&lt;schema_name.table_name&gt;')">
+                            <parameter>
+                                <literal-expression 
value="&lt;schema_name.table_name&gt;" start-index="276" stop-index="301"/>
+                            </parameter>
+                        </function>
+                    </right>
+                    <operator>=</operator>
+                </binary-operation-expression>
+            </expr>
+        </where>
+        <order-by>
+            <column-item name="column_id" start-index="313" stop-index="323">
+                <owner name="c" start-index="313" stop-index="313"/>
+            </column-item>
+        </order-by>
+    </select>
+
+    <select sql-case-id="select_inner_join_with_object_id_function">
+        <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" start-index="45" stop-index="65" 
alias="object_name">
+                <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" start-index="94" stop-index="117" 
alias="parameter_name">
+                <owner name="p" start-index="94" stop-index="94"/>
+            </column-projection>
+            <expression-projection text="TYPE_NAME(p.user_type_id)" 
start-index="119" stop-index="161" alias="parameter_type">
+                <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>
+            <join-table join-type="INNER">
+                <left>
+                    <simple-table name="objects" start-index="213" 
stop-index="228" alias="o">
+                        <owner name="sys" start-index="213" stop-index="215"/>
+                    </simple-table>
+                </left>
+                <right>
+                    <simple-table name="parameters" start-index="241" 
stop-index="259" alias="p">
+                        <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 name="object_id" start-index="296" 
stop-index="306">
+                            <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"/>
+            <column-item name="object_name" start-index="371" 
stop-index="381"/>
+            <column-item name="parameter_id" start-index="384" 
stop-index="397">
+                <owner name="p" start-index="384" stop-index="384"/>
+            </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 7b7c20ee552..f133b8efec0 100644
--- a/test/it/parser/src/main/resources/case/dml/select.xml
+++ b/test/it/parser/src/main/resources/case/dml/select.xml
@@ -7858,4 +7858,123 @@
             </column-projection>
         </projections>
     </select>
+
+    <select sql-case-id="select_with_object_id_function">
+        <projections start-index="7" stop-index="134">
+            <expression-projection text="OBJECT_NAME(object_id)" 
start-index="7" stop-index="55" alias="referencing_object_name">
+                <expr>
+                    <function function-name="OBJECT_NAME" 
text="OBJECT_NAME(object_id)" start-index="7" stop-index="28">
+                        <parameter>
+                            <column name="object_id" start-index="19" 
stop-index="27"/>
+                        </parameter>
+                    </function>
+                </expr>
+            </expression-projection>
+            <expression-projection start-index="57" stop-index="132" 
text="COALESCE(COL_NAME(object_id, column_id), '(n/a)')" 
alias="referencing_column_name">
+                <expr>
+                    <function function-name="COALESCE" 
text="COALESCE(COL_NAME(object_id, column_id), '(n/a)')" start-index="57" 
stop-index="105">
+                        <parameter>
+                            <function function-name="COL_NAME" 
text="COL_NAME(object_id, column_id)" start-index="66" stop-index="95">
+                                <parameter>
+                                    <column name="object_id" start-index="75" 
stop-index="83"/>
+                                </parameter>
+                                <parameter>
+                                    <column name="column_id" start-index="86" 
stop-index="94"/>
+                                </parameter>
+                            </function>
+                        </parameter>
+                        <parameter>
+                            <literal-expression value="(n/a)" start-index="98" 
stop-index="104"/>
+                        </parameter>
+                    </function>
+                </expr>
+            </expression-projection>
+            <shorthand-projection start-index="134" stop-index="134"/>
+        </projections>
+        <from start-index="145" stop-index="160">
+            <simple-table name="sql_dependencies" start-index="141" 
stop-index="160">
+                <owner name="sys" start-index="141" stop-index="143"/>
+            </simple-table>
+        </from>
+        <where start-index="162" stop-index="226">
+            <expr>
+                <binary-operation-expression start-index="168" 
stop-index="226">
+                    <left>
+                        <column name="referenced_major_id" start-index="168" 
stop-index="186"/>
+                    </left>
+                    <right>
+                        <function function-name="OBJECT_ID" 
text="OBJECT_ID('&lt;schema_name.table_name&gt;')" start-index="190" 
stop-index="226">
+                            <parameter>
+                                <literal-expression 
value="&lt;schema_name.table_name&gt;" start-index="200" stop-index="225"/>
+                            </parameter>
+                        </function>
+                    </right>
+                    <operator>=</operator>
+                </binary-operation-expression>
+            </expr>
+        </where>
+        <order-by>
+            <expression-item expression="OBJECT_NAME(object_id)" 
start-index="237" stop-index="258">
+                <expr>
+                    <function function-name="OBJECT_NAME" 
text="OBJECT_NAME(object_id)" start-index="237" stop-index="258">
+                        <parameter>
+                            <column name="object_id" start-index="249" 
stop-index="257"/>
+                        </parameter>
+                    </function>
+                </expr>
+            </expression-item>
+            <expression-item expression="COL_NAME(object_id, column_id)" 
start-index="261" stop-index="290">
+                <expr>
+                    <function function-name="COL_NAME" 
text="COL_NAME(object_id, column_id)" start-index="261" stop-index="290">
+                        <parameter>
+                            <column name="object_id" start-index="270" 
stop-index="278"/>
+                        </parameter>
+                        <parameter>
+                            <column name="column_id" start-index="281" 
stop-index="289"/>
+                        </parameter>
+                    </function>
+                </expr>
+            </expression-item>
+        </order-by>
+    </select>
+
+    <select sql-case-id="select_from_sys_views">
+        <from start-index="201" stop-index="210">
+            <simple-table name="views" start-index="202" stop-index="210">
+                <owner name="sys" start-index="202" stop-index="204"/>
+            </simple-table>
+        </from>
+        <projections start-index="7" stop-index="195">
+            <column-projection name="name" start-index="7" stop-index="23" 
alias="view_name"/>
+            <expression-projection text="SCHEMA_NAME(schema_id)" 
start-index="25" stop-index="61" alias="schema_name">
+                <function function-name="SCHEMA_NAME" 
text="SCHEMA_NAME(schema_id)" start-index="25" stop-index="46">
+                    <parameter>
+                        <column name="schema_id" start-index="37" 
stop-index="45"/>
+                    </parameter>
+                </function>
+            </expression-projection>
+            <expression-projection 
text="OBJECTPROPERTYEX(object_id,'IsIndexed')" start-index="63" 
stop-index="114" alias="IsIndexed">
+                <function function-name="OBJECTPROPERTYEX" 
text="OBJECTPROPERTYEX(object_id,'IsIndexed')" start-index="63" 
stop-index="101">
+                    <parameter>
+                        <column name="object_id" start-index="80" 
stop-index="88"/>
+                    </parameter>
+                    <parameter>
+                        <literal-expression value="IsIndexed" start-index="90" 
stop-index="100"/>
+                    </parameter>
+                </function>
+            </expression-projection>
+            <expression-projection 
text="OBJECTPROPERTYEX(object_id,'IsIndexable')" start-index="116" 
stop-index="171" alias="IsIndexable">
+                <function function-name="OBJECTPROPERTYEX" 
text="OBJECTPROPERTYEX(object_id,'IsIndexable')" start-index="116" 
stop-index="156">
+                    <parameter>
+                        <column name="object_id" start-index="133" 
stop-index="141"/>
+                    </parameter>
+                    <parameter>
+                        <literal-expression value="IsIndexable" 
start-index="143" stop-index="155"/>
+                    </parameter>
+                </function>
+            </expression-projection>
+            <column-projection name="create_date" start-index="173" 
stop-index="183"/>
+            <column-projection name="modify_date" start-index="185" 
stop-index="195"/>
+        </projections>
+    </select>
 </sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/dml/insert.xml 
b/test/it/parser/src/main/resources/sql/supported/dml/insert.xml
index 7bca7b58766..3e01695c742 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/insert.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/insert.xml
@@ -108,4 +108,5 @@
     <sql-case id="insert_with_nchar_3" value="INSERT INTO dbo.T1 VALUES (3, 
N'Randolph')" db-types="SQLServer"/>
     <sql-case id="insert_with_batch_nchar" value="INSERT INTO 
TestSchema.Employees (Name, Location) VALUES (N'Jared',  N'Australia'), 
(N'Nikita', N'India'), (N'Tom', N'Germany')" db-types="SQLServer"/>
     <sql-case id="insert_with_data_base_name" value="INSERT INTO 
AdventureWorks2022.dbo.VariableTest(Col1) VALUES('$(tablename)')" 
db-types="SQLServer"/>
+    <sql-case id="insert_with_db_schema_name" value="INSERT INTO 
ContosoWarehouse.dbo.Affiliation SELECT * FROM My_Lakehouse.dbo.Affiliation" 
db-types="SQLServer"/>
 </sql-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 f29cb6b6cb0..a5b9ce05371 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
@@ -34,4 +34,6 @@
     <sql-case id="select_join_with_quote" value="SELECT &quot;u&quot;.*, 
&quot;o&quot;.* FROM t_user &quot;u&quot; INNER JOIN t_order &quot;o&quot; ON 
&quot;u&quot;.user_id = &quot;o&quot;.user_id WHERE &quot;u&quot;.user_id = ?" 
db-types="Oracle" />
     <sql-case id="select_outer_left_join_without_alias" value="SELECT * from 
t1 LEFT JOIN t2 ON t1.id = t2.id" db-types="Oracle"/>
     <sql-case id="select_outer_full_join_without_alias" value="SELECT * FROM 
t1 FULL JOIN t2 ON t1.id = t2.id" db-types="Oracle"/>
+    <sql-case id="select_natural_join_with_object_id_function" value="SELECT 
c.name AS column_name,c.column_id,SCHEMA_NAME(t.schema_id) AS 
type_schema,t.name AS 
type_name,t.is_user_defined,t.is_assembly_type,c.max_length,c.precision,c.scale 
FROM sys.columns AS c JOIN sys.types AS t ON c.user_type_id=t.user_type_id 
WHERE c.object_id = OBJECT_ID('&lt;schema_name.table_name&gt;') ORDER BY 
c.column_id" db-types="SQLServer"/>
+    <sql-case id="select_inner_join_with_object_id_function" 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-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 ea53597659d..50185cd9fc3 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
@@ -239,4 +239,6 @@
     <sql-case id="select_with_top_restrict2" value="SELECT TOP 10 columnName 
FROM TableName;" db-types="SQLServer"/>
     <sql-case id="select_with_top_restrict3" value="SELECT TOP 10 
alias1.columnName from TableName alias1" db-types="SQLServer"/>
     <sql-case id="select_with_top_with_ties" value="SELECT TOP 10 WITH TIES 
alias1.columnName from TableName alias1" db-types="SQLServer"/>
+    <sql-case id="select_with_object_id_function" value="SELECT 
OBJECT_NAME(object_id) AS referencing_object_name,COALESCE(COL_NAME(object_id, 
column_id), '(n/a)') AS referencing_column_name,* FROM sys.sql_dependencies 
WHERE referenced_major_id = OBJECT_ID('&lt;schema_name.table_name&gt;') ORDER 
BY OBJECT_NAME(object_id), COL_NAME(object_id, column_id)" 
db-types="SQLServer"/>
+    <sql-case id="select_from_sys_views" value="SELECT name AS 
view_name,SCHEMA_NAME(schema_id) AS 
schema_name,OBJECTPROPERTYEX(object_id,'IsIndexed') AS 
IsIndexed,OBJECTPROPERTYEX(object_id,'IsIndexable') AS 
IsIndexable,create_date,modify_date FROM sys.views" db-types="SQLServer"/>
 </sql-cases>

Reply via email to