Quellcode durchsuchen

Avoid buffer copying for non-splitting packets

Xiuming Chen vor 12 Jahren
Ursprung
Commit
7847296546
1 geänderte Dateien mit 8 neuen und 1 gelöschten Zeilen
  1. 8 1
      packets.go

+ 8 - 1
packets.go

@@ -61,9 +61,16 @@ func (mc *mysqlConn) readPacket() ([]byte, error) {
 			return nil, driver.ErrBadConn
 		}
 
+		isLastPacket := (pktLen < maxPacketSize)
+
+		// Zero allocations for non-splitting packets
+		if isLastPacket && payload == nil {
+			return data, nil
+		}
+
 		payload = append(payload, data...)
 
-		if pktLen < maxPacketSize {
+		if isLastPacket {
 			return payload, nil
 		}
 	}