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 fd1d5ba46d4 Issue 31560 Improve the parsing of methods in MySQL
(#33317)
fd1d5ba46d4 is described below
commit fd1d5ba46d4c03d167e8fb810145980ae13c0df8
Author: Yash-cor <[email protected]>
AuthorDate: Sun Oct 20 16:55:03 2024 +0530
Issue 31560 Improve the parsing of methods in MySQL (#33317)
* QUOTE QUERY
* Undo grammar changes.
* Added the test queries
* made correction in MySql test case.
---
.../resources/case/dml/select-math-function.xml | 58 ++++++++++++++++++
.../resources/case/dml/select-special-function.xml | 70 ++++++++++++++++++++++
.../parser/src/main/resources/case/dml/select.xml | 14 +++++
.../sql/supported/dml/select-math-function.xml | 4 ++
.../sql/supported/dml/select-special-function.xml | 5 ++
.../main/resources/sql/supported/dml/select.xml | 1 +
6 files changed, 152 insertions(+)
diff --git
a/test/it/parser/src/main/resources/case/dml/select-math-function.xml
b/test/it/parser/src/main/resources/case/dml/select-math-function.xml
index da243cc5b7f..38e572452f5 100644
--- a/test/it/parser/src/main/resources/case/dml/select-math-function.xml
+++ b/test/it/parser/src/main/resources/case/dml/select-math-function.xml
@@ -72,4 +72,62 @@
</expression-projection>
</projections>
</select>
+
+ <select sql-case-id="select_pow">
+ <projections start-index="7" stop-index="14">
+ <expression-projection text="POW(2,2)" start-index="7"
stop-index="14">
+ <expr>
+ <function function-name="POW" start-index="7"
stop-index="14" text="POW(2,2)" >
+ <parameter>
+ <literal-expression value="2" start-index="11"
stop-index="11" />
+ </parameter>
+ <parameter>
+ <literal-expression value="2" start-index="13"
stop-index="13" />
+ </parameter>
+ </function>
+ </expr>
+ </expression-projection>
+ </projections>
+ </select>
+
+ <select sql-case-id="select_power">
+ <projections start-index="7" stop-index="16">
+ <expression-projection text="POWER(2,2)" start-index="7"
stop-index="16">
+ <expr>
+ <function function-name="POWER" start-index="7"
stop-index="16" text="POWER(2,2)" >
+ <parameter>
+ <literal-expression value="2" start-index="13"
stop-index="13" />
+ </parameter>
+ <parameter>
+ <literal-expression value="2" start-index="15"
stop-index="15" />
+ </parameter>
+ </function>
+ </expr>
+ </expression-projection>
+ </projections>
+ </select>
+
+ <select sql-case-id="select_rand">
+ <projections start-index="7" stop-index="12">
+ <expression-projection text="RAND()" start-index="7"
stop-index="12">
+ <expr>
+ <function function-name="RAND" start-index="7"
stop-index="12" text="RAND()" />
+ </expr>
+ </expression-projection>
+ </projections>
+ </select>
+
+ <select sql-case-id="select_radians">
+ <projections start-index="7" stop-index="17">
+ <expression-projection text="RADIANS(90)" start-index="7"
stop-index="17">
+ <expr>
+ <function function-name="RADIANS" start-index="7"
stop-index="17" text="RADIANS(90)" >
+ <parameter>
+ <literal-expression value="90" start-index="15"
stop-index="16" />
+ </parameter>
+ </function>
+ </expr>
+ </expression-projection>
+ </projections>
+ </select>
</sql-parser-test-cases>
diff --git
a/test/it/parser/src/main/resources/case/dml/select-special-function.xml
b/test/it/parser/src/main/resources/case/dml/select-special-function.xml
index 0739d073c34..f04eef1ed2c 100644
--- a/test/it/parser/src/main/resources/case/dml/select-special-function.xml
+++ b/test/it/parser/src/main/resources/case/dml/select-special-function.xml
@@ -3223,6 +3223,76 @@
</projections>
</select>
+ <select sql-case-id="select_polygon">
+ <projections start-index="7" stop-index="59">
+ <expression-projection start-index="7" stop-index="59"
text="ST_GeomFromText('Polygon((0 0, 1 0, 1 1, 0 1, 0 0))')">
+ <expr>
+ <function function-name="ST_GeomFromText"
text="ST_GeomFromText('Polygon((0 0, 1 0, 1 1, 0 1, 0 0))')" start-index="7"
stop-index="59">
+ <parameter>
+ <literal-expression value="Polygon((0 0, 1 0, 1 1,
0 1, 0 0))" start-index="23" stop-index="58" />
+ </parameter>
+ </function>
+ </expr>
+ </expression-projection>
+ </projections>
+ </select>
+
+ <select sql-case-id="select_point">
+ <projections start-index="7" stop-index="16">
+ <expression-projection start-index="7" stop-index="16"
text="Point(1,1)">
+ <expr>
+ <function function-name="Point" text="Point(1,1)"
start-index="7" stop-index="16">
+ <parameter>
+ <literal-expression value="1" start-index="13"
stop-index="13" />
+ </parameter>
+ <parameter>
+ <literal-expression value="1" start-index="15"
stop-index="15" />
+ </parameter>
+ </function>
+ </expr>
+ </expression-projection>
+ </projections>
+ </select>
+
+ <select sql-case-id="select_ps_current_thread_id">
+ <projections start-index="7" stop-index="28">
+ <expression-projection start-index="7" stop-index="28"
text="PS_CURRENT_THREAD_ID()">
+ <expr>
+ <function function-name="PS_CURRENT_THREAD_ID"
text="PS_CURRENT_THREAD_ID()" start-index="7" stop-index="28"/>
+ </expr>
+ </expression-projection>
+ </projections>
+ </select>
+
+ <select sql-case-id="select_ps_thread_id">
+ <projections start-index="7" stop-index="21">
+ <expression-projection start-index="7" stop-index="21"
text="PS_THREAD_ID(5)">
+ <expr>
+ <function function-name="PS_THREAD_ID"
text="PS_THREAD_ID(5)" start-index="7" stop-index="21">
+ <parameter>
+ <literal-expression value="5" start-index="20"
stop-index="20" />
+ </parameter>
+ </function>
+ </expr>
+ </expression-projection>
+ </projections>
+ </select>
+
+ <select sql-case-id="select_quote">
+ <projections start-index="7" stop-index="22">
+ <expression-projection start-index="7" stop-index="22"
text="QUOTE('Don\'t!')">
+ <expr>
+ <function function-name="QUOTE" text="QUOTE('Don\'t!')"
start-index="7" stop-index="22">
+ <parameter>
+ <literal-expression value="Don\'t!"
start-index="13" stop-index="21" />
+ </parameter>
+ </function>
+ </expr>
+ </expression-projection>
+ </projections>
+ </select>
+
+
<select sql-case-id="select_json_objectagg">
<projections start-index="7" stop-index="38">
<expression-projection start-index="7" stop-index="38"
text="JSON_OBJECTAGG(attribute, value)">
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 31770a3e40f..09f0bce3bbd 100644
--- a/test/it/parser/src/main/resources/case/dml/select.xml
+++ b/test/it/parser/src/main/resources/case/dml/select.xml
@@ -3610,6 +3610,20 @@
</projections>
</select>
+ <select sql-case-id="select_quarter">
+ <projections start-index="7" stop-index="27">
+ <expression-projection text="QUARTER('2008-04-01')"
start-index="7" stop-index="27">
+ <expr>
+ <function function-name="QUARTER" start-index="7"
stop-index="27" text="QUARTER('2008-04-01')">
+ <parameter>
+ <literal-expression value="2008-04-01"
start-index="15" stop-index="26" />
+ </parameter>>
+ </function>
+ </expr>
+ </expression-projection>
+ </projections>
+ </select>
+
<select sql-case-id="select_with_mod_function">
<from>
<simple-table name="t_order" start-index="14" stop-index="20" />
diff --git
a/test/it/parser/src/main/resources/sql/supported/dml/select-math-function.xml
b/test/it/parser/src/main/resources/sql/supported/dml/select-math-function.xml
index 257f6e73ae9..f4d79159f32 100644
---
a/test/it/parser/src/main/resources/sql/supported/dml/select-math-function.xml
+++
b/test/it/parser/src/main/resources/sql/supported/dml/select-math-function.xml
@@ -21,4 +21,8 @@
<sql-case id="select_acos" value="SELECT ACOS(0)" db-types="MySQL" />
<sql-case id="select_asin" value="SELECT ASIN(0.2)" db-types="MySQL" />
<sql-case id="select_atan" value="SELECT ATAN(2)" db-types="MySQL" />
+ <sql-case id="select_pow" value="SELECT POW(2,2)" db-types="MySQL" />
+ <sql-case id="select_power" value="SELECT POWER(2,2)" db-types="MySQL" />
+ <sql-case id="select_rand" value="SELECT RAND()" db-types="MySQL" />
+ <sql-case id="select_radians" value="SELECT RADIANS(90)" db-types="MySQL"
/>
</sql-cases>
diff --git
a/test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml
b/test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml
index b9a0a4d7908..5bbc93a7a18 100644
---
a/test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml
+++
b/test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml
@@ -191,6 +191,11 @@
<sql-case id="select_multilinestring" value="SELECT
MultiLineString(ST_GeomFromText('LineString(1 1, 2
2)'),ST_GeomFromText('LineString(1 1, 2 2)'))" db-types="MySQL" />
<sql-case id="select_multipoint" value="SELECT
MultiPoint(point(1,1),point(1,1))" db-types="MySQL" />
<sql-case id="select_multipolygon" value="SELECT
MultiPolygon(ST_GeomFromText('Polygon((0 0, 1 0, 1 1, 0 1, 0
0))'),ST_GeomFromText('Polygon((0 0, 1 0, 1 1, 0 1, 0 0))'))" db-types="MySQL"
/>
+ <sql-case id="select_polygon" value="SELECT ST_GeomFromText('Polygon((0 0,
1 0, 1 1, 0 1, 0 0))')" db-types="MySQL" />
+ <sql-case id="select_point" value="SELECT Point(1,1)" db-types="MySQL" />
+ <sql-case id="select_ps_current_thread_id" value="SELECT
PS_CURRENT_THREAD_ID()" db-types="MySQL" />
+ <sql-case id="select_ps_thread_id" value="SELECT PS_THREAD_ID(5)"
db-types="MySQL" />
+ <sql-case id="select_quote" value="SELECT QUOTE('Don\'t!')"
db-types="MySQL" />
<sql-case id="select_from_table_function" value="SELECT * FROM
GENERATE_SERIES(1, name)" db-types="PostgreSQL,openGauss" />
<sql-case id="select_json_objectagg" value="SELECT
JSON_OBJECTAGG(attribute, value) FROM t GROUP BY id" db-types="MySQL" />
<sql-case id="select_json_overlaps" value="SELECT
JSON_OVERLAPS("[1,3,5,7]", "[2,5,7]")" db-types="MySQL" />
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 c391cd8b72a..8d7cbdd35bd 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
@@ -84,6 +84,7 @@
<sql-case id="select_with_interval_function" value="SELECT
INTERVAL(status,1,5) func_status FROM t_order WHERE user_id = ? AND order_id =
?" db-types="MySQL" />
<sql-case id="select_with_left_function" value="SELECT CONCAT(LEFT(status,
7), 'test') FROM t_order_item WHERE user_id = 10" db-types="MySQL" />
<sql-case id="select_database" value="SELECT DATABASE()" db-types="MySQL"
/>
+ <sql-case id="select_quarter" value="SELECT QUARTER('2008-04-01')"
db-types="MySQL" />
<sql-case id="select_with_mod_function" value="SELECT * FROM t_order WHERE
MOD(order_id, 1) = 1" db-types="MySQL" />
<sql-case id="select_with_date_format_function" value="SELECT * FROM
t_order WHERE DATE_FORMAT(current_date, '%Y-%m-%d') = '2019-12-18'"
db-types="MySQL" />
<sql-case id="select_with_spatial_function" value="SELECT * FROM t_order
WHERE ST_DISTANCE_SPHERE(POINT(113.358772, 23.1273723),
POINT(user_id,order_id)) != 0" db-types="MySQL" />