Class: MysqlPR::Protocol::ExecutePacket

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

Overview

Execute packet

Class Method Summary collapse

Class Method Details

.null_bitmap(values) ⇒ Object

make null bitmap

If values is [1, nil, 2, 3, nil] then returns “x12”(0b10010).



957
958
959
960
961
962
# File 'lib/mysql-pr/protocol.rb', line 957

def self.null_bitmap(values)
  bitmap = values.enum_for(:each_slice, 8).map do |vals|
    vals.reverse.inject(0) { |b, v| (b << 1 | (v ? 0 : 1)) }
  end
  bitmap.pack("C*")
end

.serialize(statement_id, cursor_type, values) ⇒ Object



942
943
944
945
946
947
948
949
950
951
952
# File 'lib/mysql-pr/protocol.rb', line 942

def self.serialize(statement_id, cursor_type, values)
  nbm = null_bitmap values
  netvalues = ""
  types = values.map do |v|
    t, n = Protocol.value2net v
    netvalues.concat n if v
    t
  end
  [MysqlPR::COM_STMT_EXECUTE, statement_id, cursor_type, 1, nbm, 1, types.pack("v*"),
   netvalues].pack("CVCVa*Ca*a*")
end