mysql2 0.3.12b3 → 0.3.12b4
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/ext/mysql2/client.c +22 -0
- data/lib/mysql2/client.rb +2 -2
- data/lib/mysql2/version.rb +1 -1
- data/spec/mysql2/client_spec.rb +12 -0
- metadata +1 -1
data/Gemfile.lock
CHANGED
data/ext/mysql2/client.c
CHANGED
@@ -618,6 +618,11 @@ static VALUE _mysql_client_options(VALUE self, int opt, VALUE value) {
|
|
618
618
|
retval = &intval;
|
619
619
|
break;
|
620
620
|
|
621
|
+
case MYSQL_OPT_WRITE_TIMEOUT:
|
622
|
+
intval = NUM2INT(value);
|
623
|
+
retval = &intval;
|
624
|
+
break;
|
625
|
+
|
621
626
|
case MYSQL_OPT_LOCAL_INFILE:
|
622
627
|
intval = (value == Qfalse ? 0 : 1);
|
623
628
|
retval = &intval;
|
@@ -909,6 +914,12 @@ static VALUE set_local_infile(VALUE self, VALUE value) {
|
|
909
914
|
}
|
910
915
|
|
911
916
|
static VALUE set_connect_timeout(VALUE self, VALUE value) {
|
917
|
+
long int sec;
|
918
|
+
Check_Type(value, T_FIXNUM);
|
919
|
+
sec = FIX2INT(value);
|
920
|
+
if (sec < 0) {
|
921
|
+
rb_raise(cMysql2Error, "connect_timeout must be a positive integer, you passed %ld", sec);
|
922
|
+
}
|
912
923
|
return _mysql_client_options(self, MYSQL_OPT_CONNECT_TIMEOUT, value);
|
913
924
|
}
|
914
925
|
|
@@ -926,6 +937,16 @@ static VALUE set_read_timeout(VALUE self, VALUE value) {
|
|
926
937
|
return _mysql_client_options(self, MYSQL_OPT_READ_TIMEOUT, value);
|
927
938
|
}
|
928
939
|
|
940
|
+
static VALUE set_write_timeout(VALUE self, VALUE value) {
|
941
|
+
long int sec;
|
942
|
+
Check_Type(value, T_FIXNUM);
|
943
|
+
sec = FIX2INT(value);
|
944
|
+
if (sec < 0) {
|
945
|
+
rb_raise(cMysql2Error, "write_timeout must be a positive integer, you passed %ld", sec);
|
946
|
+
}
|
947
|
+
return _mysql_client_options(self, MYSQL_OPT_WRITE_TIMEOUT, value);
|
948
|
+
}
|
949
|
+
|
929
950
|
static VALUE set_charset_name(VALUE self, VALUE value) {
|
930
951
|
char * charset_name;
|
931
952
|
#ifdef HAVE_RUBY_ENCODING_H
|
@@ -1032,6 +1053,7 @@ void init_mysql2_client() {
|
|
1032
1053
|
rb_define_private_method(cMysql2Client, "reconnect=", set_reconnect, 1);
|
1033
1054
|
rb_define_private_method(cMysql2Client, "connect_timeout=", set_connect_timeout, 1);
|
1034
1055
|
rb_define_private_method(cMysql2Client, "read_timeout=", set_read_timeout, 1);
|
1056
|
+
rb_define_private_method(cMysql2Client, "write_timeout=", set_write_timeout, 1);
|
1035
1057
|
rb_define_private_method(cMysql2Client, "local_infile=", set_local_infile, 1);
|
1036
1058
|
rb_define_private_method(cMysql2Client, "charset_name=", set_charset_name, 1);
|
1037
1059
|
rb_define_private_method(cMysql2Client, "ssl_set", set_ssl_options, 5);
|
data/lib/mysql2/client.rb
CHANGED
@@ -21,7 +21,7 @@ module Mysql2
|
|
21
21
|
initialize_ext
|
22
22
|
|
23
23
|
# Set MySQL connection options (each one is a call to mysql_options())
|
24
|
-
[:reconnect, :connect_timeout, :local_infile, :read_timeout].each do |key|
|
24
|
+
[:reconnect, :connect_timeout, :local_infile, :read_timeout, :write_timeout].each do |key|
|
25
25
|
next unless opts.key?(key)
|
26
26
|
send(:"#{key}=", opts[key])
|
27
27
|
end
|
@@ -30,7 +30,7 @@ module Mysql2
|
|
30
30
|
self.charset_name = opts[:encoding] || 'utf8'
|
31
31
|
|
32
32
|
ssl_set(*opts.values_at(:sslkey, :sslcert, :sslca, :sslcapath, :sslcipher))
|
33
|
-
|
33
|
+
|
34
34
|
if [:user,:pass,:hostname,:dbname,:db,:sock].any?{|k| @query_options.has_key?(k) }
|
35
35
|
warn "============= WARNING FROM mysql2 ============="
|
36
36
|
warn "The options :user, :pass, :hostname, :dbname, :db, and :sock will be deprecated at some point in the future."
|
data/lib/mysql2/version.rb
CHANGED
data/spec/mysql2/client_spec.rb
CHANGED
@@ -85,12 +85,24 @@ describe Mysql2::Client do
|
|
85
85
|
@client.should respond_to(:query)
|
86
86
|
end
|
87
87
|
|
88
|
+
it "should expect connect_timeout to be a positive integer" do
|
89
|
+
lambda {
|
90
|
+
Mysql2::Client.new(:connect_timeout => -1)
|
91
|
+
}.should raise_error(Mysql2::Error)
|
92
|
+
end
|
93
|
+
|
88
94
|
it "should expect read_timeout to be a positive integer" do
|
89
95
|
lambda {
|
90
96
|
Mysql2::Client.new(:read_timeout => -1)
|
91
97
|
}.should raise_error(Mysql2::Error)
|
92
98
|
end
|
93
99
|
|
100
|
+
it "should expect write_timeout to be a positive integer" do
|
101
|
+
lambda {
|
102
|
+
Mysql2::Client.new(:write_timeout => -1)
|
103
|
+
}.should raise_error(Mysql2::Error)
|
104
|
+
end
|
105
|
+
|
94
106
|
context "#query" do
|
95
107
|
it "should let you query again if iterating is finished when streaming" do
|
96
108
|
@client.query("SELECT 1 UNION SELECT 2", :stream => true, :cache_rows => false).each {}
|