Class: ActiveRecord::ConnectionAdapters::DbslayerConnection

Inherits:
Object
  • Object
show all
Defined in:
lib/active_record/connection_adapters/dbslayer_connection.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host = 'localhost', port = 9090) ⇒ DbslayerConnection

Returns a new instance of DbslayerConnection.



75
76
77
78
79
80
# File 'lib/active_record/connection_adapters/dbslayer_connection.rb', line 75

def initialize(host='localhost', port=9090)
  @host = host
  @port = port
  @insert_id = nil
  @affected_rows = nil
end

Instance Attribute Details

#affected_rowsObject (readonly)

Returns the value of attribute affected_rows.



73
74
75
# File 'lib/active_record/connection_adapters/dbslayer_connection.rb', line 73

def affected_rows
  @affected_rows
end

#hostObject (readonly)

Returns the value of attribute host.



73
74
75
# File 'lib/active_record/connection_adapters/dbslayer_connection.rb', line 73

def host
  @host
end

#insert_idObject (readonly)

Returns the value of attribute insert_id.



73
74
75
# File 'lib/active_record/connection_adapters/dbslayer_connection.rb', line 73

def insert_id
  @insert_id
end

#portObject (readonly)

Returns the value of attribute port.



73
74
75
# File 'lib/active_record/connection_adapters/dbslayer_connection.rb', line 73

def port
  @port
end

Instance Method Details

#client_infoObject Also known as: server_info



118
119
120
121
122
123
# File 'lib/active_record/connection_adapters/dbslayer_connection.rb', line 118

def client_info
  if @client_info.nil?
    @client_info = cmd_execute(:db, 'CLIENT_INFO' => true)["CLIENT_INFO"]
  end
  @client_info
end

#client_version_numObject



127
128
129
130
131
132
# File 'lib/active_record/connection_adapters/dbslayer_connection.rb', line 127

def client_version_num
  if @client_version.nil?
    @client_version = Integer(cmd_execute(:db, 'CLIENT_VERSION' => true)["CLIENT_VERSION"])
  end
  @client_version
end

#escape_string(str) ⇒ Object Also known as: quote



141
142
143
144
145
146
147
148
149
150
151
# File 'lib/active_record/connection_adapters/dbslayer_connection.rb', line 141

def escape_string(str)
  str.gsub(/([\0\n\r\032\'\"\\])/) do
    case $1
    when "\0" then "\\0"
    when "\n" then "\\n"
    when "\r" then "\\r"
    when "\032" then "\\Z"
    else "\\"+$1
    end
  end
end

#mysql_statsObject Also known as: stat



111
112
113
114
# File 'lib/active_record/connection_adapters/dbslayer_connection.rb', line 111

def mysql_stats
  results = cmd_execute(:db, 'STAT' => true)
  results['STAT']
end

#server_version_numObject



134
135
136
137
138
139
# File 'lib/active_record/connection_adapters/dbslayer_connection.rb', line 134

def server_version_num
  if @server_version.nil?
    @server_version = Integer(cmd_execute(:db, 'SERVER_VERSION' => true)["SERVER_VERSION"])
  end
  @server_version
end

#sql_query(sql) ⇒ Object Also known as: execute, query

Executes a SQL query



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/active_record/connection_adapters/dbslayer_connection.rb', line 84

def sql_query(sql)
  dbslay_results = cmd_execute(:db, 'SQL' => sql)
          
  # check for an error
  if dbslay_results['MYSQL_ERROR']
    raise DbslayerException, "MySQL Error #{dbslay_results['MYSQL_ERRNO']}: #{dbslay_results['MYSQL_ERROR']}"
  elsif result = dbslay_results['RESULT']
    case result
    when Hash
      out = DbslayerResult.new(result)
      set_affected!(out)
      out
    when Array
      out = result.map {|r| DbslayerResult.new(r) }
      set_affected!(out.last)
      out
    else  
      raise DbslayerException, "Unknown format for SQL results from DBSlayer"
    end
  else  
    raise DbslayerException, "Unknown format for SQL results from DBSlayer"
  end
end