This is an automated email from the ASF dual-hosted git repository.

zhangliang 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 477c8b4  Fixed execute select now() command result mistakes at proxy 
(#11924)
477c8b4 is described below

commit 477c8b40711578c563724f8136b05ee01ecf83ba
Author: zhaojinchao <[email protected]>
AuthorDate: Thu Aug 26 20:50:41 2021 +0800

    Fixed execute select now() command result mistakes at proxy (#11924)
    
    * fixed select now();
    
    * update
    
    * update
---
 .../command/query/text/MySQLTextResultSetRowPacket.java      |  5 +++++
 .../command/query/text/MySQLTextResultSetRowPacketTest.java  | 12 ++++++++++++
 2 files changed, 17 insertions(+)

diff --git 
a/shardingsphere-db-protocol/shardingsphere-db-protocol-mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/MySQLTextResultSetRowPacket.java
 
b/shardingsphere-db-protocol/shardingsphere-db-protocol-mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/MySQLTextResultSetRowPacket.java
index 3967d7e..366f3e9 100644
--- 
a/shardingsphere-db-protocol/shardingsphere-db-protocol-mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/MySQLTextResultSetRowPacket.java
+++ 
b/shardingsphere-db-protocol/shardingsphere-db-protocol-mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/MySQLTextResultSetRowPacket.java
@@ -24,6 +24,8 @@ import 
org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
 
 import java.math.BigDecimal;
 import java.sql.Timestamp;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Collection;
 
@@ -64,6 +66,9 @@ public final class MySQLTextResultSetRowPacket implements 
MySQLPacket {
                     payload.writeStringLenenc(((BigDecimal) 
each).toPlainString());
                 } else if (each instanceof Boolean) {
                     payload.writeBytesLenenc((Boolean) each ? new byte[]{1} : 
new byte[]{0});
+                } else if (each instanceof LocalDateTime) {
+                    
payload.writeStringLenenc(DateTimeFormatter.ofPattern("yyyy-MM-dd 
HH:mm:ss").format(LocalDateTime.parse(each.toString(),
+                            
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"))));
                 } else {
                     payload.writeStringLenenc(each.toString());
                 }
diff --git 
a/shardingsphere-db-protocol/shardingsphere-db-protocol-mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/MySQLTextResultSetRowPacketTest.java
 
b/shardingsphere-db-protocol/shardingsphere-db-protocol-mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/MySQLTextResultSetRowPacketTest.java
index 496bc6c..baa2ee7 100644
--- 
a/shardingsphere-db-protocol/shardingsphere-db-protocol-mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/MySQLTextResultSetRowPacketTest.java
+++ 
b/shardingsphere-db-protocol/shardingsphere-db-protocol-mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/MySQLTextResultSetRowPacketTest.java
@@ -25,6 +25,8 @@ import org.mockito.junit.MockitoJUnitRunner;
 
 import java.math.BigDecimal;
 import java.sql.Timestamp;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Arrays;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -75,4 +77,14 @@ public final class MySQLTextResultSetRowPacketTest {
         verify(payload).writeStringLenenc("1");
         
verify(payload).writeStringLenenc(timestamp.toString().split("\\.")[0]);
     }
+    
+    @Test
+    public void assertLocalDateTime() {
+        String localDateTimeStr = "2021-08-23T17:30:30";
+        LocalDateTime time = LocalDateTime.parse(localDateTimeStr,
+                DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"));
+        MySQLTextResultSetRowPacket actual = new 
MySQLTextResultSetRowPacket(1, Arrays.asList(time));
+        actual.write(payload);
+        
verify(payload).writeStringLenenc(DateTimeFormatter.ofPattern("yyyy-MM-dd 
HH:mm:ss").format(LocalDateTime.parse(localDateTimeStr, 
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"))));
+    }
 }

Reply via email to