class Mysql::Protocol::ResultPacket
Result packet
Attributes
Public Class Methods
Source
# File lib/mysql/protocol.rb, line 727 def initialize(*args) @field_count, @affected_rows, @insert_id, @server_status, @warning_count, @message, @session_track = args @session_track ||= {} end
Source
# File lib/mysql/protocol.rb, line 679 def self.parse(pkt) field_count = pkt.lcb if field_count == 0 affected_rows = pkt.lcb insert_id = pkt.lcb server_status = pkt.ushort warning_count = pkt.ushort message = pkt.lcs session_track = parse_session_track(pkt.lcs) if server_status & SERVER_SESSION_STATE_CHANGED message = pkt.lcs unless pkt.to_s.empty? return self.new(field_count, affected_rows, insert_id, server_status, warning_count, message, session_track) elsif field_count.nil? # LOAD DATA LOCAL INFILE return self.new(nil, nil, nil, nil, nil, pkt.to_s) else return self.new(field_count) end end
Source
# File lib/mysql/protocol.rb, line 698 def self.parse_session_track(data) session_track = {} pkt = Packet.new(data.to_s) until pkt.to_s.empty? type = pkt.lcb session_track[type] ||= [] case type when SESSION_TRACK_SYSTEM_VARIABLES p = Packet.new(pkt.lcs) session_track[type].push [p.lcs, p.lcs] when SESSION_TRACK_SCHEMA pkt.lcb # skip session_track[type].push pkt.lcs when SESSION_TRACK_STATE_CHANGE session_track[type].push pkt.lcs when SESSION_TRACK_GTIDS pkt.lcb # skip pkt.lcb # skip session_track[type].push pkt.lcs when SESSION_TRACK_TRANSACTION_CHARACTERISTICS, SESSION_TRACK_TRANSACTION_STATE pkt.lcb # skip session_track[type].push pkt.lcs end end session_track end