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 078863c2825 MySQL parsing defect #31710 (#31744)
078863c2825 is described below

commit 078863c282545602bb2144d13c1abc15db37dbd2
Author: yydeng626 <[email protected]>
AuthorDate: Tue Jun 18 17:49:43 2024 +0800

    MySQL parsing defect #31710 (#31744)
    
    * fix mysql json table get text miss spaces
    
    * fix mysql json table get text miss spaces
    
    * fix select_from_join_with_json_table test case text
---
 .../sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java  | 7 ++++---
 test/it/parser/src/main/resources/case/dml/select-join.xml         | 4 ++--
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git 
a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java
 
b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java
index 87037742473..b8ee8529561 100644
--- 
a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java
+++ 
b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java
@@ -949,10 +949,11 @@ public abstract class MySQLStatementVisitor extends 
MySQLStatementBaseVisitor<AS
     
     @Override
     public final ASTNode visitJsonTableFunction(final JsonTableFunctionContext 
ctx) {
-        FunctionSegment result = new 
FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), 
ctx.JSON_TABLE().getText(), ctx.getText());
+        FunctionSegment result = new 
FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), 
ctx.JSON_TABLE().getText(), getOriginalText(ctx));
         result.getParameters().add((ExpressionSegment) visit(ctx.expr()));
-        result.getParameters().add(new 
LiteralExpressionSegment(ctx.path().getStart().getStartIndex(), 
ctx.path().getStop().getStopIndex(), ctx.path().getText()));
-        result.getParameters().add(new 
LiteralExpressionSegment(ctx.jsonTableColumns().getStart().getStartIndex(), 
ctx.jsonTableColumns().getStop().getStopIndex(), 
ctx.jsonTableColumns().getText()));
+        result.getParameters().add(new 
LiteralExpressionSegment(ctx.path().getStart().getStartIndex(), 
ctx.path().getStop().getStopIndex(), getOriginalText(ctx.path())));
+        result.getParameters().add(new 
LiteralExpressionSegment(ctx.jsonTableColumns().getStart().getStartIndex(), 
ctx.jsonTableColumns().getStop().getStopIndex(),
+                getOriginalText(ctx.jsonTableColumns())));
         return result;
     }
     
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 2d32fb4713d..8454db442c9 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
@@ -3316,7 +3316,7 @@
                 </left>
                 <right>
                     <function-table start-index="57" stop-index="230" 
table-alias="tt">
-                        <table-function 
text="JSON_TABLE(m.c3,'$.*'COLUMNS(atVARCHAR(10)PATH'$.a'DEFAULT'1'ONEMPTY,btVARCHAR(10)PATH'$.b'DEFAULT'2'ONEMPTY,ctVARCHAR(10)PATH'$.c'DEFAULT'3'ONEMPTY))"
 function-name="JSON_TABLE">
+                        <table-function text="JSON_TABLE(m.c3, '$.*' 
COLUMNS(at VARCHAR(10) PATH '$.a' DEFAULT '1' ON EMPTY, bt VARCHAR(10) PATH 
'$.b'DEFAULT '2' ON EMPTY, ct VARCHAR(10) PATH '$.c' DEFAULT '3' ON EMPTY))" 
function-name="JSON_TABLE">
                             <parameter>
                                 <column name="c3" start-index="68" 
stop-index="71">
                                     <owner name="m" start-index="68" 
stop-index="68"/>
@@ -3326,7 +3326,7 @@
                                 <literal-expression value="'$.*'" 
start-index="74" stop-index="78"/>
                             </parameter>
                             <parameter>
-                                <literal-expression 
value="COLUMNS(atVARCHAR(10)PATH'$.a'DEFAULT'1'ONEMPTY,btVARCHAR(10)PATH'$.b'DEFAULT'2'ONEMPTY,ctVARCHAR(10)PATH'$.c'DEFAULT'3'ONEMPTY)"
 start-index="80" stop-index="229"/>
+                                <literal-expression value="COLUMNS(at 
VARCHAR(10) PATH '$.a' DEFAULT '1' ON EMPTY, bt VARCHAR(10) PATH '$.b'DEFAULT 
'2' ON EMPTY, ct VARCHAR(10) PATH '$.c' DEFAULT '3' ON EMPTY)" start-index="80" 
stop-index="229"/>
                             </parameter>
                         </table-function>
                     </function-table>

Reply via email to