Class: Mysql::StmtRawRecord

Inherits:
Object
  • Object
show all
Defined in:
lib/mysql/protocol.rb

Instance Method Summary collapse

Constructor Details

#initialize(packet, fields, encoding) ⇒ StmtRawRecord

Argument

pkt
Packet
fields
Array of Fields
encoding
Encoding


739
740
741
# File 'lib/mysql/protocol.rb', line 739

def initialize(packet, fields, encoding)
  @packet, @fields, @encoding = packet, fields, encoding
end

Instance Method Details

#parse_record_packetObject Also known as: to_a

Parse statement result packet

Return

Array of Object

one record



746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
# File 'lib/mysql/protocol.rb', line 746

def parse_record_packet
  @packet.utiny  # skip first byte
  null_bit_map = @packet.read((@fields.length+7+2)/8).unpack("b*").first
  rec = @fields.each_with_index.map do |f, i|
    if null_bit_map[i+2] == ?1
      nil
    else
      unsigned = f.flags & Field::UNSIGNED_FLAG != 0
      v = Protocol.net2value(@packet, f.type, unsigned)
      if v.is_a? Numeric or v.is_a? Mysql::Time
        v
      elsif f.type == Field::TYPE_BIT or f.charsetnr == Charset::BINARY_CHARSET_NUMBER
        Charset.to_binary(v)
      else
        Charset.convert_encoding(v, @encoding)
      end
    end
  end
  rec
end