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>