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 2022/07/05 05:49:17 UTC

[shardingsphere] branch master updated: fix insert values with _binary (#18754)

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 11cd90f0295 fix insert values with _binary (#18754)
11cd90f0295 is described below

commit 11cd90f0295dd950122b33b02aa4ce3dc4ab909c
Author: Chuxin Chen <ch...@qq.com>
AuthorDate: Tue Jul 5 13:49:05 2022 +0800

    fix insert values with _binary (#18754)
    
    * fix insert values with _binary
    
    * fix insert values with _binary
---
 .../src/main/antlr4/imports/mysql/DMLStatement.g4             |  2 +-
 .../asserts/segment/assignment/AssignmentValueAssert.java     |  3 +++
 .../src/main/resources/case/dml/insert.xml                    | 11 +++++------
 .../src/main/resources/case/dml/replace.xml                   |  5 ++---
 .../src/main/resources/case/dml/update.xml                    |  6 +++---
 5 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/antlr4/imports/mysql/DMLStatement.g4 b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/antlr4/imports/mysql/DMLStatement.g4
index 2230f42e23c..59353ae9998 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/antlr4/imports/mysql/DMLStatement.g4
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-mysql/src/main/antlr4/imports/mysql/DMLStatement.g4
@@ -97,7 +97,7 @@ assignmentValues
     ;
 
 assignmentValue
-    : expr | DEFAULT | blobValue
+    : blobValue | expr | DEFAULT
     ;
 
 blobValue
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/assignment/AssignmentValueAssert.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/assignment/AssignmentValueAssert.java
index c78554b3395..2c93e7fcbe4 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/assignment/AssignmentValueAssert.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/assignment/AssignmentValueAssert.java
@@ -22,6 +22,7 @@ import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.FunctionSegment;
+import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.complex.CommonExpressionSegment;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.LiteralExpressionSegment;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.ParameterMarkerExpressionSegment;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.subquery.SubqueryExpressionSegment;
@@ -58,6 +59,8 @@ public final class AssignmentValueAssert {
             ExpressionAssert.assertSubqueryExpression(assertContext, (SubqueryExpressionSegment) actual, expected.getSubquery());
         } else if (actual instanceof FunctionSegment) {
             ExpressionAssert.assertFunction(assertContext, (FunctionSegment) actual, expected.getFunction());
+        } else if (actual instanceof CommonExpressionSegment) {
+            ExpressionAssert.assertCommonExpression(assertContext, (CommonExpressionSegment) actual, expected.getCommonExpression());
         }
     }
 }
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dml/insert.xml b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dml/insert.xml
index 63546ba9bdf..3b445433c35 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dml/insert.xml
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dml/insert.xml
@@ -851,7 +851,7 @@
                 </assignment-value>
                 <assignment-value>
                     <parameter-marker-expression parameter-index="2" start-index="121" stop-index="128" />
-                    <literal-expression value="{&quot;rule&quot;:&quot;null&quot;}'::json" start-index="123" stop-index="146" />
+                    <common-expression text="'{&quot;rule&quot;:&quot;null&quot;}'::jsonb" start-index="123" stop-index="146" />
                 </assignment-value>
             </value>
         </values>
@@ -946,7 +946,7 @@
         <values>
             <value>
                 <assignment-value>
-                    <common-expression text="null" />
+                    <common-expression text="null" start-index="43" stop-index="46"/>
                 </assignment-value>
             </value>
         </values>
@@ -960,8 +960,7 @@
         <values>
             <value>
                 <assignment-value>
-    <!--            TODO StringLiteralValue should consider about _binary/_utf8mb4-->
-                    <literal-expression value="BINARY'This is a binary value." start-index="43" stop-index="74" />
+                    <common-expression text="_BINARY'This is a binary value.'" start-index="43" stop-index="74" />
                 </assignment-value>
             </value>
         </values>
@@ -1476,7 +1475,7 @@
         <values>
             <value>
                 <assignment-value>
-                    <literal-expression value="x'1234'" />
+                    <common-expression text="x'1234'" start-index="51" stop-index="57" />
                 </assignment-value>
             </value>
         </values>
@@ -1798,7 +1797,7 @@
                     <literal-expression value="1.2E+3" start-index="178" stop-index="182" />
                 </assignment-value>
                 <assignment-value>
-                    <literal-expression value="185..188" start-index="185" stop-index="188" />
+                    <common-expression text="NULL" start-index="185" stop-index="188" />
                 </assignment-value>
             </value>
         </values>
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dml/replace.xml b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dml/replace.xml
index 322bf7c6d3e..9321fe0acf6 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dml/replace.xml
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dml/replace.xml
@@ -715,7 +715,7 @@
         <values>
             <value>
                 <assignment-value>
-                    <common-expression text="null" />
+                    <common-expression text="null" start-index="44" stop-index="47" />
                 </assignment-value>
             </value>
         </values>
@@ -729,8 +729,7 @@
         <values>
             <value>
                 <assignment-value>
-    <!--            TODO StringLiteralValue should consider about _binary/_utf8mb4-->
-                    <literal-expression value="BINARY'This is a binary value." start-index="44" stop-index="75"/>
+                    <common-expression text="_BINARY'This is a binary value.'" start-index="44" stop-index="75"/>
                 </assignment-value>
             </value>
         </values>
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dml/update.xml b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dml/update.xml
index 81516c75e36..bb865bee585 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dml/update.xml
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/dml/update.xml
@@ -212,7 +212,7 @@
                 <column name="rule" start-index="119" stop-index="122" literal-start-index="134" literal-stop-index="137" />
                 <assignment-value>
                     <parameter-marker-expression parameter-index="3" start-index="126" stop-index="133" />
-                    <literal-expression value="{&quot;rule2&quot;:&quot;null2&quot;}'::json" start-index="141" stop-index="166" />
+                    <common-expression text="'{&quot;rule2&quot;:&quot;null2&quot;}'::jsonb" start-index="141" stop-index="166" />
                 </assignment-value>
             </assignment>
             <assignment start-index="136" stop-index="152" literal-start-index="169" literal-stop-index="185">
@@ -484,7 +484,7 @@
             <assignment start-index="19" stop-index="37" literal-stop-index="37">
                 <column name="status" start-index="19" stop-index="24" />
                 <assignment-value>
-                    <common-expression text="status-?" literal-text="status-1" start-index="28" stop-index="37" literal-start-index="28" literal-stop-index="37"/>
+                    <common-expression text="status - ?" literal-text="status - 1" start-index="28" stop-index="37" literal-start-index="28" literal-stop-index="37"/>
                 </assignment-value>
             </assignment>
         </set>
@@ -895,7 +895,7 @@
             <assignment start-index="21" stop-index="41">
                 <column name="commission_pct" start-index="21" stop-index="34" />
                 <assignment-value>
-                    <literal-expression value="NULL" start-index="38" stop-index="41" />
+                    <common-expression text="NULL" start-index="38" stop-index="41" />
                 </assignment-value>
             </assignment>
         </set>