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"))));
+ }
}