You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2024/03/07 01:37:54 UTC
(shardingsphere) branch master updated: Fix SQLServer parser projection error (#30409)
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 c74c7ae8a91 Fix SQLServer parser projection error (#30409)
c74c7ae8a91 is described below
commit c74c7ae8a9160fabe5eddf77962a282cdbfe9038
Author: LotusMoon <ch...@aliyun.com>
AuthorDate: Thu Mar 7 09:37:48 2024 +0800
Fix SQLServer parser projection error (#30409)
* Fix oracle parser create user error
* Modify formatting issues
* Fix SQLServer parser projection error
* adjust select xml
---
.../src/main/antlr4/imports/sqlserver/BaseRule.g4 | 2 +-
test/it/parser/src/main/resources/case/dml/select.xml | 18 ++++++++++++++++++
.../src/main/resources/sql/supported/dml/select.xml | 2 ++
3 files changed, 21 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 2438350d95c..840e9fefc53 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
+ | TIMESTAMP | TRIM | USER | RIGHT | JSON | SID | OPENQUERY | ACTION | TARGET | HOUR | MINUTE | TABLE
;
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 c8e766a76cd..566cf6edffe 100644
--- a/test/it/parser/src/main/resources/case/dml/select.xml
+++ b/test/it/parser/src/main/resources/case/dml/select.xml
@@ -9359,4 +9359,22 @@
</expr>
</where>
</select>
+
+ <select sql-case-id="select_hour_from_table">
+ <projections start-index="7" stop-index="10">
+ <column-projection name="hour" start-index="7" stop-index="10"/>
+ </projections>
+ <from start-index="17" stop-index="22">
+ <simple-table name="table1" start-index="17" stop-index="22"/>
+ </from>
+ </select>
+
+ <select sql-case-id="select_minute_from_table">
+ <projections start-index="7" stop-index="12">
+ <column-projection name="minute" start-index="7" stop-index="12"/>
+ </projections>
+ <from start-index="19" stop-index="24">
+ <simple-table name="table1" start-index="19" stop-index="24"/>
+ </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 e103d9d0197..e50cc640204 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
@@ -274,4 +274,6 @@
<sql-case id="select_from_subquery_with_graph_agg_function_and_arbitrary_match" value="SELECT PersonName, Friends FROM (SELECT Person1.name AS PersonName, STRING_AGG(Person2.name, '->') WITHIN GROUP (GRAPH PATH) AS Friends, LAST_VALUE(Person2.name) WITHIN GROUP (GRAPH PATH) AS LastNode FROM Person AS Person1, friendOf FOR PATH AS fo, Person FOR PATH AS Person2 WHERE MATCH(SHORTEST_PATH(Person1(-(fo)->Person2)+)) AND Person1.name = 'Jacob') AS Q WHERE Q.LastNode = 'Alice'" db-types=" [...]
<sql-case id="select_from_arbitrary_match_al_pattern_where" value="SELECT Person1.name AS PersonName, STRING_AGG(Person2.name, '->') WITHIN GROUP (GRAPH PATH) AS Friends FROM Person AS Person1, friendOf FOR PATH AS fo, Person FOR PATH AS Person2 WHERE MATCH(SHORTEST_PATH(Person1(-(fo)->Person2){1,3})) AND Person1.name = 'Jacob'" db-types="SQLServer"/>
<sql-case id="select_with_multi_arbitrary_match" value="SELECT Person1.name AS PersonName, STRING_AGG(Person2.name, '->') WITHIN GROUP (GRAPH PATH) AS Friends, Restaurant.name FROM Person AS Person1, friendOf FOR PATH AS fo, Person FOR PATH AS Person2, likes, Restaurant WHERE MATCH(SHORTEST_PATH(Person1(-(fo)->Person2){1,3}) AND LAST_NODE(Person2)-(likes)->Restaurant ) AND Person1.name = 'Jacob' AND Restaurant.name = 'Ginger and Spice'" db-types="SQLServer"/>
+ <sql-case id="select_hour_from_table" value="select hour from table1" db-types="SQLServer"/>
+ <sql-case id="select_minute_from_table" value="select minute from table1" db-types="SQLServer"/>
</sql-cases>