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(&quot;[1,3,5,7]&quot;, &quot;[2,5,7]&quot;)" 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" />

Reply via email to