Class: Vertica::Messages::NoticeResponse

Inherits:
BackendMessage show all
Defined in:
lib/vertica/messages/backend_messages/notice_response.rb

Direct Known Subclasses

ErrorResponse

Constant Summary collapse

FIELDS_DEFINITIONS =
[
  { :type => 'q', :name => "Internal Query", :method => :internal_query },
  { :type => 'S', :name => "Severity", :method => :severity },
  { :type => 'M', :name => "Message", :method => :message },
  { :type => 'C', :name => "Sqlstate", :method => :sqlstate },
  { :type => 'D', :name => "Detail", :method => :detail },
  { :type => 'H', :name => "Hint", :method => :hint },
  { :type => 'P', :name => "Position", :method => :position },
  { :type => 'W', :name => "Where", :method => :where },
  { :type => 'p', :name => "Internal Position", :method => :internal_position },
  { :type => 'R', :name => "Routine", :method => :routine },
  { :type => 'F', :name => "File", :method => :file },
  { :type => 'L', :name => "Line", :method => :line }
]
FIELDS =
Hash[*FIELDS_DEFINITIONS.map { |f| [f[:type], f[:name]

Constants inherited from BackendMessage

BackendMessage::MessageIdMap

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from BackendMessage

factory, message_id

Methods inherited from Message

message_id, #message_string

Constructor Details

#initialize(data) ⇒ NoticeResponse

Returns a new instance of NoticeResponse.



25
26
27
28
29
30
31
32
# File 'lib/vertica/messages/backend_messages/notice_response.rb', line 25

def initialize(data)
  @values, pos = {}, 0
  while pos < data.size - 1
    key, value = data.unpack("@#{pos}aZ*")
    @values[FIELDS[key]] = value
    pos += value.size + 2
  end
end

Instance Attribute Details

#valuesObject (readonly)

Returns the value of attribute values.



23
24
25
# File 'lib/vertica/messages/backend_messages/notice_response.rb', line 23

def values
  @values
end

Instance Method Details

#error_messageObject



34
35
36
37
38
39
# File 'lib/vertica/messages/backend_messages/notice_response.rb', line 34

def error_message
  ordered_values = FIELDS_DEFINITIONS.map do |field| 
    "#{field[:name]}: #{@values[field[:name]]}" if @values[field[:name]]
  end
  ordered_values.compact.join(', ')
end