Class: MysqlPR::StmtRawRecord

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

Instance Method Summary collapse

Constructor Details

#initialize(packet, fields, encoding) ⇒ StmtRawRecord

Argument

pkt
Packet
fields
Array of Fields
encoding
Encoding


752
753
754
# File 'lib/mysql-pr/protocol.rb', line 752

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



759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
# File 'lib/mysql-pr/protocol.rb', line 759

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? MysqlPR::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