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 8b9b7d451de fix:Support for the CATALOG identifier (#36137)
8b9b7d451de is described below
commit 8b9b7d451de03be890d8cacad943a766f0008d76
Author: cxy <[email protected]>
AuthorDate: Fri Aug 1 09:05:25 2025 +0800
fix:Support for the CATALOG identifier (#36137)
---
RELEASE-NOTES.md | 1 +
.../src/main/antlr4/imports/sqlserver/BaseRule.g4 | 2 +-
.../parser/src/main/resources/case/dml/select.xml | 34 ++++++++++++++++++++++
.../main/resources/sql/supported/dml/select.xml | 1 +
4 files changed, 37 insertions(+), 1 deletion(-)
diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 5beb583e5a0..53a1470f73b 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -109,6 +109,7 @@
1. SQL Parser: Support SQL Server ON clause in SELECT INTO statements parse -
[#36075](https://github.com/apache/shardingsphere/pull/36075)
1. SQL Parser: Support SQL Server the OPENDATASOURCE function in INSERT
statements parse - [#36093](https://github.com/apache/shardingsphere/pull/36093)
1. SQL Parser: Support SQL Server the LANGUAGE identifier parse -
[#36110](https://github.com/apache/shardingsphere/pull/36110)
+1. SQL Parser: Support SQL Server clustered index parse -
[#36132](https://github.com/apache/shardingsphere/pull/36132)
### Bug Fixes
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 48fda7349cf..47c5b2b631f 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
+ | 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
;
databaseName
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 c80030247f3..feef4846a39 100644
--- a/test/it/parser/src/main/resources/case/dml/select.xml
+++ b/test/it/parser/src/main/resources/case/dml/select.xml
@@ -11333,4 +11333,38 @@
</expr>
</where>
</select>
+
+ <select sql-case-id="select_catalog_identifier">
+ <projections start-index="7" stop-index="59">
+ <column-projection name="name" start-index="7" stop-index="18">
+ <owner name="catalog" start-index="7" stop-index="13"/>
+ </column-projection>
+ <column-projection name="catalog_id" start-index="21"
stop-index="38">
+ <owner name="catalog" start-index="21" stop-index="27"/>
+ </column-projection>
+ <column-projection name="database_id" start-index="41"
stop-index="59">
+ <owner name="catalog" start-index="41" stop-index="47"/>
+ </column-projection>
+ </projections>
+ <from>
+ <simple-table name="dm_fts_active_catalogs" start-index="66"
stop-index="99" alias="catalog">
+ <owner name="sys" start-index="66" stop-index="68"/>
+ </simple-table>
+ </from>
+ <where start-index="101" stop-index="135">
+ <expr>
+ <binary-operation-expression start-index="107"
stop-index="135">
+ <left>
+ <column name="database_id" start-index="107"
stop-index="125">
+ <owner name="catalog" start-index="107"
stop-index="113"/>
+ </column>
+ </left>
+ <operator>=</operator>
+ <right>
+ <function start-index="129" stop-index="135"
text="DB_ID()" function-name="DB_ID"/>
+ </right>
+ </binary-operation-expression>
+ </expr>
+ </where>
+ </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 0bf6e8554c2..e6cba8fdba1 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
@@ -355,4 +355,5 @@
<sql-case id="select_on_clause" value="SELECT * INTO
[dbo].[FactResellerSalesXL] ON FG2 FROM [dbo].[FactResellerSales];"
db-types="SQLServer"/>
<sql-case id="select_language_identifier" value="SELECT counter_name,
counter_value FROM sys.dm_external_script_execution_stats WHERE language =
'Python';" db-types="SQLServer"/>
<sql-case id="select_with_clustered_index" value="SELECT
e.BusinessEntityID FROM Employee e WITH (INDEX = 1) INNER JOIN Person pp ON
e.BusinessEntityID = pp.BusinessEntityID WHERE pp.LastName = 'Johnson';"
db-types="SQLServer"/>
+ <sql-case id="select_catalog_identifier" value="SELECT catalog.name,
catalog.catalog_id, catalog.database_id FROM sys.dm_fts_active_catalogs catalog
WHERE catalog.database_id = DB_ID();" db-types="SQLServer"/>
</sql-cases>