Skip to content

Commit f9eba44

Browse files
committed
Move error_number and sql_state into Mysql2::Error initializer
1 parent 355213d commit f9eba44

File tree

2 files changed

+9
-10
lines changed

2 files changed

+9
-10
lines changed

ext/mysql2/client.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,11 @@ static VALUE rb_raise_mysql2_error(mysql_client_wrapper *wrapper) {
124124
rb_enc_associate(rb_sql_state, rb_usascii_encoding());
125125
#endif
126126

127-
e = rb_funcall(cMysql2Error, intern_new, 2, rb_error_msg, LONG2FIX(wrapper->server_version));
128-
rb_funcall(e, intern_error_number_eql, 1, UINT2NUM(mysql_errno(wrapper->client)));
129-
rb_funcall(e, intern_sql_state_eql, 1, rb_sql_state);
127+
e = rb_funcall(cMysql2Error, intern_new, 4,
128+
rb_error_msg,
129+
LONG2FIX(wrapper->server_version),
130+
UINT2NUM(mysql_errno(wrapper->client)),
131+
rb_sql_state);
130132
rb_exc_raise(e);
131133
return Qnil;
132134
}

lib/mysql2/error.rb

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,21 @@ class Error < StandardError
88
:replace => '?'.freeze,
99
}.freeze
1010

11-
attr_accessor :error_number
12-
attr_reader :sql_state
11+
attr_reader :error_number, :sql_state
1312
attr_writer :server_version
1413

1514
# Mysql gem compatibility
1615
alias_method :errno, :error_number
1716
alias_method :error, :message
1817

19-
def initialize(msg, server_version = nil)
18+
def initialize(msg, server_version=nil, error_number=nil, sql_state=nil)
2019
self.server_version = server_version
20+
self.error_number = error_number
21+
self.sql_state = sql_state.respond_to?(:encode) ? sql_state.encode(ENCODE_OPTS) : sql_state
2122

2223
super(clean_message(msg))
2324
end
2425

25-
def sql_state=(state)
26-
@sql_state = state.respond_to?(:encode) ? state.encode(ENCODE_OPTS) : state
27-
end
28-
2926
private
3027

3128
# In MySQL 5.5+ error messages are always constructed server-side as UTF-8

0 commit comments

Comments
 (0)