@@ -140,7 +140,7 @@ func (mc *mysqlConn) splitPacket(data []byte) error {
140
140
******************************************************************************/
141
141
142
142
// Handshake Initialization Packet
143
- // http://dev.mysql.com/doc/internals/en/connection-phase.html#packet-Protocol::Handshake
143
+ // http://dev.mysql.com/doc/internals/en/connection-phase-packets .html#packet-Protocol::Handshake
144
144
func (mc * mysqlConn ) readInitPacket () ([]byte , error ) {
145
145
data , err := mc .readPacket ()
146
146
if err != nil {
@@ -197,7 +197,6 @@ func (mc *mysqlConn) readInitPacket() ([]byte, error) {
197
197
// TODO: Verify string termination
198
198
// EOF if version (>= 5.5.7 and < 5.5.10) or (>= 5.6.0 and < 5.6.2)
199
199
// \NUL otherwise
200
- // http://dev.mysql.com/doc/internals/en/connection-phase.html#packet-Protocol::Handshake
201
200
//
202
201
//if data[len(data)-1] == 0 {
203
202
// return
@@ -209,7 +208,7 @@ func (mc *mysqlConn) readInitPacket() ([]byte, error) {
209
208
}
210
209
211
210
// Client Authentication Packet
212
- // http://dev.mysql.com/doc/internals/en/connection-phase.html#packet-Protocol::HandshakeResponse
211
+ // http://dev.mysql.com/doc/internals/en/connection-phase-packets .html#packet-Protocol::HandshakeResponse
213
212
func (mc * mysqlConn ) writeAuthPacket (cipher []byte ) error {
214
213
// Adjust client flags based on server support
215
214
clientFlags := clientProtocol41 |
@@ -263,7 +262,7 @@ func (mc *mysqlConn) writeAuthPacket(cipher []byte) error {
263
262
data [12 ] = collation_utf8_general_ci
264
263
265
264
// SSL Connection Request Packet
266
- // http://dev.mysql.com/doc/internals/en/connection-phase.html#packet-Protocol::SSLRequest
265
+ // http://dev.mysql.com/doc/internals/en/connection-phase-packets .html#packet-Protocol::SSLRequest
267
266
if mc .cfg .tls != nil {
268
267
// Packet header [24bit length + 1 byte sequence]
269
268
data [0 ] = byte ((4 + 4 + 1 + 23 ))
@@ -316,7 +315,7 @@ func (mc *mysqlConn) writeAuthPacket(cipher []byte) error {
316
315
}
317
316
318
317
// Client old authentication packet
319
- // http://dev.mysql.com/doc/internals/en/connection-phase.html#packet-Protocol::AuthSwitchResponse
318
+ // http://dev.mysql.com/doc/internals/en/connection-phase-packets .html#packet-Protocol::AuthSwitchResponse
320
319
func (mc * mysqlConn ) writeOldAuthPacket (cipher []byte ) error {
321
320
// User password
322
321
scrambleBuff := scrambleOldPassword (cipher , []byte (mc .cfg .passwd ))
@@ -454,7 +453,7 @@ func (mc *mysqlConn) readResultOK() error {
454
453
}
455
454
456
455
// Result Set Header Packet
457
- // http://dev.mysql.com/doc/internals/en/text-protocol .html#packet-ProtocolText::Resultset
456
+ // http://dev.mysql.com/doc/internals/en/com-query-response .html#packet-ProtocolText::Resultset
458
457
func (mc * mysqlConn ) readResultSetHeaderPacket () (int , error ) {
459
458
data , err := mc .readPacket ()
460
459
if err == nil {
@@ -482,7 +481,7 @@ func (mc *mysqlConn) readResultSetHeaderPacket() (int, error) {
482
481
}
483
482
484
483
// Error Packet
485
- // http://dev.mysql.com/doc/internals/en/overview .html#packet-ERR_Packet
484
+ // http://dev.mysql.com/doc/internals/en/generic-response-packets .html#packet-ERR_Packet
486
485
func (mc * mysqlConn ) handleErrorPacket (data []byte ) error {
487
486
if data [0 ] != iERR {
488
487
return errMalformPkt
@@ -509,7 +508,7 @@ func (mc *mysqlConn) handleErrorPacket(data []byte) error {
509
508
}
510
509
511
510
// Ok Packet
512
- // http://dev.mysql.com/doc/internals/en/overview .html#packet-OK_Packet
511
+ // http://dev.mysql.com/doc/internals/en/generic-response-packets .html#packet-OK_Packet
513
512
func (mc * mysqlConn ) handleOkPacket (data []byte ) error {
514
513
var n , m int
515
514
@@ -536,7 +535,7 @@ func (mc *mysqlConn) handleOkPacket(data []byte) error {
536
535
}
537
536
538
537
// Read Packets as Field Packets until EOF-Packet or an Error appears
539
- // http://dev.mysql.com/doc/internals/en/text-protocol .html#packet-Protocol::ColumnDefinition41
538
+ // http://dev.mysql.com/doc/internals/en/com-query-response .html#packet-Protocol::ColumnDefinition41
540
539
func (mc * mysqlConn ) readColumns (count int ) ([]mysqlField , error ) {
541
540
columns := make ([]mysqlField , count )
542
541
@@ -619,9 +618,11 @@ func (mc *mysqlConn) readColumns(count int) ([]mysqlField, error) {
619
618
}
620
619
621
620
// Read Packets as Field Packets until EOF-Packet or an Error appears
622
- // http://dev.mysql.com/doc/internals/en/text-protocol .html#packet-ProtocolText::ResultsetRow
621
+ // http://dev.mysql.com/doc/internals/en/com-query-response .html#packet-ProtocolText::ResultsetRow
623
622
func (rows * mysqlRows ) readRow (dest []driver.Value ) error {
624
- data , err := rows .mc .readPacket ()
623
+ mc := rows .mc
624
+
625
+ data , err := mc .readPacket ()
625
626
if err != nil {
626
627
return err
627
628
}
@@ -642,15 +643,15 @@ func (rows *mysqlRows) readRow(dest []driver.Value) error {
642
643
pos += n
643
644
if err == nil {
644
645
if ! isNull {
645
- if ! rows . mc .parseTime {
646
+ if ! mc .parseTime {
646
647
continue
647
648
} else {
648
649
switch rows .columns [i ].fieldType {
649
650
case fieldTypeTimestamp , fieldTypeDateTime ,
650
651
fieldTypeDate , fieldTypeNewDate :
651
652
dest [i ], err = parseDateTime (
652
653
string (dest [i ].([]byte )),
653
- rows . mc .cfg .loc ,
654
+ mc .cfg .loc ,
654
655
)
655
656
if err == nil {
656
657
continue
@@ -689,7 +690,7 @@ func (mc *mysqlConn) readUntilEOF() error {
689
690
******************************************************************************/
690
691
691
692
// Prepare Result Packets
692
- // http://dev.mysql.com/doc/internals/en/prepared-statements.html# com-stmt-prepare-response
693
+ // http://dev.mysql.com/doc/internals/en/com-stmt-prepare-response.html
693
694
func (stmt * mysqlStmt ) readPrepareResultPacket () (uint16 , error ) {
694
695
data , err := stmt .mc .readPacket ()
695
696
if err == nil {
@@ -723,7 +724,7 @@ func (stmt *mysqlStmt) readPrepareResultPacket() (uint16, error) {
723
724
return 0 , err
724
725
}
725
726
726
- // http://dev.mysql.com/doc/internals/en/prepared-statements.html# com-stmt-send-long-data
727
+ // http://dev.mysql.com/doc/internals/en/com-stmt-send-long-data.html
727
728
func (stmt * mysqlStmt ) writeCommandLongData (paramID int , arg []byte ) error {
728
729
maxLen := stmt .mc .maxPacketAllowed - 1
729
730
pktLen := maxLen
@@ -785,14 +786,16 @@ func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {
785
786
)
786
787
}
787
788
789
+ mc := stmt .mc
790
+
788
791
// Reset packet-sequence
789
- stmt . mc .sequence = 0
792
+ mc .sequence = 0
790
793
791
794
var data []byte
792
795
793
796
if len (args ) == 0 {
794
797
const pktLen = 1 + 4 + 1 + 4
795
- data = stmt . mc .buf .writeBuffer (4 + pktLen )
798
+ data = mc .buf .writeBuffer (4 + pktLen )
796
799
if data == nil {
797
800
// can not take the buffer. Something must be wrong with the connection
798
801
errLog .Print ("Busy buffer" )
@@ -805,7 +808,7 @@ func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {
805
808
data [2 ] = byte (pktLen >> 16 )
806
809
data [3 ] = 0x00 // sequence is always 0
807
810
} else {
808
- data = stmt . mc .buf .takeCompleteBuffer ()
811
+ data = mc .buf .takeCompleteBuffer ()
809
812
if data == nil {
810
813
// can not take the buffer. Something must be wrong with the connection
811
814
errLog .Print ("Busy buffer" )
@@ -902,7 +905,7 @@ func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {
902
905
paramTypes [i + i ] = fieldTypeString
903
906
paramTypes [i + i + 1 ] = 0x00
904
907
905
- if len (v ) < stmt . mc .maxPacketAllowed - pos - len (paramValues )- (len (args )- (i + 1 ))* 64 {
908
+ if len (v ) < mc .maxPacketAllowed - pos - len (paramValues )- (len (args )- (i + 1 ))* 64 {
906
909
paramValues = append (paramValues ,
907
910
lengthEncodedIntegerToBytes (uint64 (len (v )))... ,
908
911
)
@@ -917,7 +920,7 @@ func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {
917
920
paramTypes [i + i ] = fieldTypeString
918
921
paramTypes [i + i + 1 ] = 0x00
919
922
920
- if len (v ) < stmt . mc .maxPacketAllowed - pos - len (paramValues )- (len (args )- (i + 1 ))* 64 {
923
+ if len (v ) < mc .maxPacketAllowed - pos - len (paramValues )- (len (args )- (i + 1 ))* 64 {
921
924
paramValues = append (paramValues ,
922
925
lengthEncodedIntegerToBytes (uint64 (len (v )))... ,
923
926
)
@@ -936,7 +939,7 @@ func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {
936
939
if v .IsZero () {
937
940
val = []byte ("0000-00-00" )
938
941
} else {
939
- val = []byte (v .In (stmt . mc .cfg .loc ).Format (timeFormat ))
942
+ val = []byte (v .In (mc .cfg .loc ).Format (timeFormat ))
940
943
}
941
944
942
945
paramValues = append (paramValues ,
@@ -953,7 +956,7 @@ func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {
953
956
// In that case we must build the data packet with the new values buffer
954
957
if valuesCap != cap (paramValues ) {
955
958
data = append (data [:pos ], paramValues ... )
956
- stmt . mc .buf .buf = data
959
+ mc .buf .buf = data
957
960
}
958
961
959
962
pos += len (paramValues )
@@ -965,18 +968,18 @@ func (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {
965
968
data [0 ] = byte (pktLen )
966
969
data [1 ] = byte (pktLen >> 8 )
967
970
data [2 ] = byte (pktLen >> 16 )
968
- data [3 ] = stmt . mc .sequence
971
+ data [3 ] = mc .sequence
969
972
970
973
// Convert nullMask to bytes
971
- for i , max := 14 , 14 + (( stmt .paramCount + 7 )>> 3 ) ; i < max ; i ++ {
972
- data [i ] = byte (nullMask >> uint (( i - 14 ) << 3 ))
974
+ for i , max := 0 , ( stmt .paramCount + 7 )>> 3 ; i < max ; i ++ {
975
+ data [i + 14 ] = byte (nullMask >> uint (i << 3 ))
973
976
}
974
977
}
975
978
976
- return stmt . mc .writePacket (data )
979
+ return mc .writePacket (data )
977
980
}
978
981
979
- // http://dev.mysql.com/doc/internals/en/prepared-statements .html#packet-ProtocolBinary::ResultsetRow
982
+ // http://dev.mysql.com/doc/internals/en/binary-protocol-resultset-row .html
980
983
func (rows * mysqlRows ) readBinaryRow (dest []driver.Value ) error {
981
984
data , err := rows .mc .readPacket ()
982
985
if err != nil {
0 commit comments