Bladeren bron

Avoid buffer copying for non-splitting packets

Xiuming Chen 12 jaren geleden
bovenliggende
commit
7847296546
1 gewijzigde bestanden met toevoegingen van 8 en 1 verwijderingen
  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
 		}
 	}