ruby-mysql 2.9.14 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.rdoc +5 -2
- data/lib/mysql/charset.rb +1 -1
- data/lib/mysql/constants.rb +84 -44
- data/lib/mysql/error.rb +10 -1
- data/lib/mysql/protocol.rb +19 -6
- data/lib/mysql.rb +6 -4
- data/test/test_mysql.rb +35 -1
- metadata +7 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: '03296aa0e624e599242e8efc5d3011b4337e161c3b7bf1c9cc81e98fa99f5052'
|
4
|
+
data.tar.gz: c7391d48dab125e86b97b8130556e69ceadf503e11884744b7fdf19af3b58cf1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba1a7bad362dc1523de97aa487ee8c571649854a2bb8a9342ecd525dbda0441c9562639556dcd933f7e7c643373907144329e97c2600af30a5ae6b1cc5fb5606
|
7
|
+
data.tar.gz: bdea4b3d97980fea097d59525b327c275374d006ddb699efda0c359608d8588a8beba742f713f0b2721433ea5efbf9eac5db8d7f4e6d7ddbe9eeb050220e6a3d
|
data/README.rdoc
CHANGED
@@ -20,6 +20,8 @@ MySQL connector for Ruby.
|
|
20
20
|
|
21
21
|
* MySQL/Ruby 2.8.x とほぼ互換があります。
|
22
22
|
|
23
|
+
* MySQL 8.0 には対応していません。
|
24
|
+
|
23
25
|
== Synopsis
|
24
26
|
|
25
27
|
使用例:
|
@@ -42,7 +44,8 @@ MySQL connector for Ruby.
|
|
42
44
|
* Mysql#options でサポートしているオプションは次のものだけです:
|
43
45
|
Mysql::INIT_COMMAND, Mysql::OPT_CONNECT_TIMEOUT,
|
44
46
|
Mysql::OPT_LOCAL_INFILE, Mysql::OPT_READ_TIMEOUT,
|
45
|
-
Mysql::OPT_WRITE_TIMEOUT, Mysql::SET_CHARSET_NAME
|
47
|
+
Mysql::OPT_WRITE_TIMEOUT, Mysql::SET_CHARSET_NAME,
|
48
|
+
Mysql::OPT_LOAD_DATA_LOCAL_DIR.
|
46
49
|
これら以外を指定すると "option not implementted" という warning が標準エラー出力に出力されます。
|
47
50
|
|
48
51
|
* Mysql#use_result は Mysql#store_result と同じです。つまりサーバーから一気に結果セットを読み込みます。
|
@@ -64,5 +67,5 @@ MySQL connector for Ruby.
|
|
64
67
|
== Copyright
|
65
68
|
|
66
69
|
Author :: TOMITA Masahiro <tommy@tmtm.org>
|
67
|
-
Copyright :: Copyright (c)
|
70
|
+
Copyright :: Copyright (c) 2008 TOMITA Masahiro
|
68
71
|
License :: Ruby's
|
data/lib/mysql/charset.rb
CHANGED
data/lib/mysql/constants.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# coding: ascii-8bit
|
2
|
-
# Copyright (C) 2003
|
2
|
+
# Copyright (C) 2003 TOMITA Masahiro
|
3
3
|
# mailto:tommy@tmtm.org
|
4
4
|
|
5
5
|
class Mysql
|
@@ -36,6 +36,7 @@ class Mysql
|
|
36
36
|
COM_DAEMON = 29
|
37
37
|
COM_BINLOG_DUMP_GTID = 30
|
38
38
|
COM_RESET_CONNECTION = 31
|
39
|
+
COM_CLONE = 32
|
39
40
|
|
40
41
|
# Client flag
|
41
42
|
CLIENT_LONG_PASSWORD = 1 # new more secure passwords
|
@@ -63,32 +64,57 @@ class Mysql
|
|
63
64
|
CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS = 1 << 22 # Don't close the connection for a connection with expired password.
|
64
65
|
CLIENT_SESSION_TRACK = 1 << 23 # Capable of handling server state change information. Its a hint to the server to include the state change information in Ok packet.
|
65
66
|
CLIENT_DEPRECATE_EOF = 1 << 24 # Client no longer needs EOF packet
|
66
|
-
|
67
|
-
|
67
|
+
CLIENT_OPTIONAL_RESULTSET_METADATA = 1 << 25 # The client can handle optional metadata information in the resultset.
|
68
|
+
CLIENT_ZSTD_COMPRESSION_ALGORITHM = 1 << 26 # Compression protocol extended to support zstd compression method
|
69
|
+
CLIENT_CAPABILITY_EXTENSION = 1 << 29 # This flag will be reserved to extend the 32bit capabilities structure to 64bits.
|
70
|
+
CLIENT_SSL_VERIFY_SERVER_CERT = 1 << 30 # Verify server certificate.
|
71
|
+
CLIENT_REMEMBER_OPTIONS = 1 << 31 # Don't reset the options after an unsuccessful connect
|
68
72
|
|
69
73
|
# Connection Option
|
70
|
-
OPT_CONNECT_TIMEOUT
|
71
|
-
OPT_COMPRESS
|
72
|
-
OPT_NAMED_PIPE
|
73
|
-
INIT_COMMAND
|
74
|
-
READ_DEFAULT_FILE
|
75
|
-
READ_DEFAULT_GROUP
|
76
|
-
SET_CHARSET_DIR
|
77
|
-
SET_CHARSET_NAME
|
78
|
-
OPT_LOCAL_INFILE
|
79
|
-
OPT_PROTOCOL
|
80
|
-
SHARED_MEMORY_BASE_NAME
|
81
|
-
OPT_READ_TIMEOUT
|
82
|
-
OPT_WRITE_TIMEOUT
|
83
|
-
OPT_USE_RESULT
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
74
|
+
OPT_CONNECT_TIMEOUT = 0
|
75
|
+
OPT_COMPRESS = 1
|
76
|
+
OPT_NAMED_PIPE = 2
|
77
|
+
INIT_COMMAND = 3
|
78
|
+
READ_DEFAULT_FILE = 4
|
79
|
+
READ_DEFAULT_GROUP = 5
|
80
|
+
SET_CHARSET_DIR = 6
|
81
|
+
SET_CHARSET_NAME = 7
|
82
|
+
OPT_LOCAL_INFILE = 8
|
83
|
+
OPT_PROTOCOL = 9
|
84
|
+
SHARED_MEMORY_BASE_NAME = 10
|
85
|
+
OPT_READ_TIMEOUT = 11
|
86
|
+
OPT_WRITE_TIMEOUT = 12
|
87
|
+
OPT_USE_RESULT = 13
|
88
|
+
REPORT_DATA_TRUNCATION = 14
|
89
|
+
OPT_RECONNECT = 15
|
90
|
+
PLUGIN_DIR = 16
|
91
|
+
DEFAULT_AUTH = 17
|
92
|
+
OPT_BIND = 18
|
93
|
+
OPT_SSL_KEY = 19
|
94
|
+
OPT_SSL_CERT = 20
|
95
|
+
OPT_SSL_CA = 21
|
96
|
+
OPT_SSL_CAPATH = 22
|
97
|
+
OPT_SSL_CIPHER = 23
|
98
|
+
OPT_SSL_CRL = 24
|
99
|
+
OPT_SSL_CRLPATH = 25
|
100
|
+
OPT_CONNECT_ATTR_RESET = 26
|
101
|
+
OPT_CONNECT_ATTR_ADD = 27
|
102
|
+
OPT_CONNECT_ATTR_DELETE = 28
|
103
|
+
SERVER_PUBLIC_KEY = 29
|
104
|
+
ENABLE_CLEARTEXT_PLUGIN = 30
|
105
|
+
OPT_CAN_HANDLE_EXPIRED_PASSWORDS = 31
|
106
|
+
OPT_MAX_ALLOWED_PACKET = 32
|
107
|
+
OPT_NET_BUFFER_LENGTH = 33
|
108
|
+
OPT_TLS_VERSION = 34
|
109
|
+
OPT_SSL_MODE = 35
|
110
|
+
OPT_GET_SERVER_PUBLIC_KEY = 36
|
111
|
+
OPT_RETRY_COUNT = 37
|
112
|
+
OPT_OPTIONAL_RESULTSET_METADATA = 38
|
113
|
+
OPT_SSL_FIPS_MODE = 39
|
114
|
+
OPT_TLS_CIPHERSUITES = 40
|
115
|
+
OPT_COMPRESSION_ALGORITHMS = 41
|
116
|
+
OPT_ZSTD_COMPRESSION_LEVEL = 42
|
117
|
+
OPT_LOAD_DATA_LOCAL_DIR = 43
|
92
118
|
|
93
119
|
# Server Option
|
94
120
|
OPTION_MULTI_STATEMENTS_ON = 0
|
@@ -133,6 +159,7 @@ class Mysql
|
|
133
159
|
REFRESH_USER_RESOURCES = 1 << 19
|
134
160
|
REFRESH_FOR_EXPORT = 1 << 20
|
135
161
|
REFRESH_OPTIMIZER_COSTS = 1 << 21
|
162
|
+
REFRESH_PERSIST = 1 << 22
|
136
163
|
|
137
164
|
class Field
|
138
165
|
# Field type
|
@@ -156,6 +183,9 @@ class Mysql
|
|
156
183
|
TYPE_TIMESTAMP2 = 17
|
157
184
|
TYPE_DATETIME2 = 18
|
158
185
|
TYPE_TIME2 = 19
|
186
|
+
TYPE_TYPED_ARRAY = 20
|
187
|
+
TYPE_INVALID = 243
|
188
|
+
TYPE_BOOL = 244
|
159
189
|
TYPE_JSON = 245
|
160
190
|
TYPE_NEWDECIMAL = 246
|
161
191
|
TYPE_ENUM = 247
|
@@ -171,25 +201,35 @@ class Mysql
|
|
171
201
|
TYPE_INTERVAL = TYPE_ENUM
|
172
202
|
|
173
203
|
# Flag
|
174
|
-
NOT_NULL_FLAG
|
175
|
-
PRI_KEY_FLAG
|
176
|
-
UNIQUE_KEY_FLAG
|
177
|
-
MULTIPLE_KEY_FLAG
|
178
|
-
BLOB_FLAG
|
179
|
-
UNSIGNED_FLAG
|
180
|
-
ZEROFILL_FLAG
|
181
|
-
BINARY_FLAG
|
182
|
-
ENUM_FLAG
|
183
|
-
AUTO_INCREMENT_FLAG
|
184
|
-
TIMESTAMP_FLAG
|
185
|
-
SET_FLAG
|
186
|
-
NO_DEFAULT_VALUE_FLAG
|
187
|
-
ON_UPDATE_NOW_FLAG
|
188
|
-
NUM_FLAG
|
189
|
-
PART_KEY_FLAG
|
190
|
-
GROUP_FLAG
|
191
|
-
UNIQUE_FLAG
|
192
|
-
BINCMP_FLAG
|
204
|
+
NOT_NULL_FLAG = 1
|
205
|
+
PRI_KEY_FLAG = 2
|
206
|
+
UNIQUE_KEY_FLAG = 4
|
207
|
+
MULTIPLE_KEY_FLAG = 8
|
208
|
+
BLOB_FLAG = 16
|
209
|
+
UNSIGNED_FLAG = 32
|
210
|
+
ZEROFILL_FLAG = 64
|
211
|
+
BINARY_FLAG = 128
|
212
|
+
ENUM_FLAG = 256
|
213
|
+
AUTO_INCREMENT_FLAG = 512
|
214
|
+
TIMESTAMP_FLAG = 1024
|
215
|
+
SET_FLAG = 2048
|
216
|
+
NO_DEFAULT_VALUE_FLAG = 4096
|
217
|
+
ON_UPDATE_NOW_FLAG = 8192
|
218
|
+
NUM_FLAG = 32768
|
219
|
+
PART_KEY_FLAG = 16384
|
220
|
+
GROUP_FLAG = 32768
|
221
|
+
UNIQUE_FLAG = 65536
|
222
|
+
BINCMP_FLAG = 131072
|
223
|
+
GET_FIXED_FIELDS_FLAG = 1 << 18
|
224
|
+
FIELD_IN_PART_FUNC_FLAG = 1 << 19
|
225
|
+
FIELD_IN_ADD_INDEX = 1 << 20
|
226
|
+
FIELD_IS_RENAMED = 1 << 21
|
227
|
+
FIELD_FLAGS_STORAGE_MEDIA_MASK = 3 << 22
|
228
|
+
FIELD_FLAGS_COLUMN_FORMAT_MASK = 3 << 24
|
229
|
+
FIELD_IS_DROPPED = 1 << 26
|
230
|
+
EXPLICIT_NULL_FLAG = 1 << 27
|
231
|
+
FIELD_IS_MARKED = 1 << 28
|
232
|
+
NOT_SECONDARY_FLAG = 1 << 29
|
193
233
|
end
|
194
234
|
|
195
235
|
class Stmt
|
data/lib/mysql/error.rb
CHANGED
@@ -977,7 +977,16 @@ class Mysql
|
|
977
977
|
CR_AUTH_PLUGIN_CANNOT_LOAD = 2059
|
978
978
|
CR_DUPLICATE_CONNECTION_ATTR = 2060
|
979
979
|
CR_AUTH_PLUGIN_ERR = 2061
|
980
|
-
|
980
|
+
CR_INSECURE_API_ERR = 2062
|
981
|
+
CR_FILE_NAME_TOO_LONG = 2063
|
982
|
+
CR_SSL_FIPS_MODE_ERR = 2064
|
983
|
+
CR_DEPRECATED_COMPRESSION_NOT_SUPPORTED = 2065
|
984
|
+
CR_COMPRESSION_WRONGLY_CONFIGURED = 2066
|
985
|
+
CR_KERBEROS_USER_NOT_FOUND = 2067
|
986
|
+
CR_LOAD_DATA_LOCAL_INFILE_REJECTED = 2068
|
987
|
+
CR_LOAD_DATA_LOCAL_INFILE_REALPATH_FAIL = 2069
|
988
|
+
CR_DNS_SRV_LOOKUP_FAILED = 2070
|
989
|
+
CR_ERROR_LAST = 2070
|
981
990
|
end
|
982
991
|
|
983
992
|
ClientError.define_error_class(/\ACR_/)
|
data/lib/mysql/protocol.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# coding: ascii-8bit
|
2
|
-
# Copyright (C) 2008
|
2
|
+
# Copyright (C) 2008 TOMITA Masahiro
|
3
3
|
# mailto:tommy@tmtm.org
|
4
4
|
|
5
5
|
require "socket"
|
@@ -134,15 +134,17 @@ class Mysql
|
|
134
134
|
# conn_timeout :: [Integer] connect timeout (sec).
|
135
135
|
# read_timeout :: [Integer] read timeout (sec).
|
136
136
|
# write_timeout :: [Integer] write timeout (sec).
|
137
|
+
# local_infile :: [String] local infile path
|
137
138
|
# === Exception
|
138
139
|
# [ClientError] :: connection timeout
|
139
|
-
def initialize(host, port, socket, conn_timeout, read_timeout, write_timeout)
|
140
|
+
def initialize(host, port, socket, conn_timeout, read_timeout, write_timeout, local_infile)
|
140
141
|
@insert_id = 0
|
141
142
|
@warning_count = 0
|
142
143
|
@gc_stmt_queue = [] # stmt id list which GC destroy.
|
143
144
|
set_state :INIT
|
144
145
|
@read_timeout = read_timeout
|
145
146
|
@write_timeout = write_timeout
|
147
|
+
@local_infile = local_infile
|
146
148
|
begin
|
147
149
|
Timeout.timeout conn_timeout do
|
148
150
|
if host.nil? or host.empty? or host == "localhost"
|
@@ -180,6 +182,7 @@ class Mysql
|
|
180
182
|
@server_version = init_packet.server_version.split(/\D/)[0,3].inject{|a,b|a.to_i*100+b.to_i}
|
181
183
|
@thread_id = init_packet.thread_id
|
182
184
|
client_flags = CLIENT_LONG_PASSWORD | CLIENT_LONG_FLAG | CLIENT_TRANSACTIONS | CLIENT_PROTOCOL_41 | CLIENT_SECURE_CONNECTION
|
185
|
+
client_flags |= CLIENT_LOCAL_FILES if @local_infile
|
183
186
|
client_flags |= CLIENT_CONNECT_WITH_DB if db
|
184
187
|
client_flags |= flag
|
185
188
|
@charset = charset
|
@@ -230,10 +233,7 @@ class Mysql
|
|
230
233
|
return res_packet.field_count
|
231
234
|
end
|
232
235
|
if res_packet.field_count.nil? # LOAD DATA LOCAL INFILE
|
233
|
-
|
234
|
-
File.open(filename){|f| write f}
|
235
|
-
write nil # EOF mark
|
236
|
-
read
|
236
|
+
send_local_file(res_packet.message)
|
237
237
|
end
|
238
238
|
@affected_rows, @insert_id, @server_status, @warning_count, @message =
|
239
239
|
res_packet.affected_rows, res_packet.insert_id, res_packet.server_status, res_packet.warning_count, res_packet.message
|
@@ -245,6 +245,19 @@ class Mysql
|
|
245
245
|
end
|
246
246
|
end
|
247
247
|
|
248
|
+
# send local file to server
|
249
|
+
def send_local_file(filename)
|
250
|
+
filename = File.absolute_path(filename)
|
251
|
+
if filename.start_with? @local_infile
|
252
|
+
File.open(filename){|f| write f}
|
253
|
+
else
|
254
|
+
raise ClientError::LoadDataLocalInfileRejected, 'LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.'
|
255
|
+
end
|
256
|
+
ensure
|
257
|
+
write nil # EOF mark
|
258
|
+
read
|
259
|
+
end
|
260
|
+
|
248
261
|
# Retrieve n fields
|
249
262
|
# === Argument
|
250
263
|
# n :: [Integer] number of fields
|
data/lib/mysql.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# coding: ascii-8bit
|
2
|
-
# Copyright (C) 2008
|
2
|
+
# Copyright (C) 2008 TOMITA Masahiro
|
3
3
|
# mailto:tommy@tmtm.org
|
4
4
|
|
5
5
|
# MySQL connection class.
|
@@ -21,7 +21,7 @@ class Mysql
|
|
21
21
|
rescue LoadError
|
22
22
|
end
|
23
23
|
|
24
|
-
VERSION =
|
24
|
+
VERSION = 21000 # Version number of this library
|
25
25
|
MYSQL_UNIX_PORT = "/tmp/mysql.sock" # UNIX domain socket filename
|
26
26
|
MYSQL_TCP_PORT = 3306 # TCP socket port number
|
27
27
|
|
@@ -112,8 +112,8 @@ class Mysql
|
|
112
112
|
warn 'unsupported flag: CLIENT_COMPRESS' if $VERBOSE
|
113
113
|
flag &= ~CLIENT_COMPRESS
|
114
114
|
end
|
115
|
-
@protocol = Protocol.new host, port, socket, @connect_timeout, @read_timeout, @write_timeout
|
116
|
-
@protocol.authenticate user, passwd, db,
|
115
|
+
@protocol = Protocol.new host, port, socket, @connect_timeout, @read_timeout, @write_timeout, @local_infile
|
116
|
+
@protocol.authenticate user, passwd, db, flag, @charset
|
117
117
|
@charset ||= @protocol.charset
|
118
118
|
@host_info = (host.nil? || host == "localhost") ? 'Localhost via UNIX socket' : "#{host} via TCP/IP"
|
119
119
|
query @init_command if @init_command
|
@@ -158,6 +158,8 @@ class Mysql
|
|
158
158
|
@connect_timeout = value
|
159
159
|
# when Mysql::GUESS_CONNECTION
|
160
160
|
when Mysql::OPT_LOCAL_INFILE
|
161
|
+
@local_infile = value ? '' : nil
|
162
|
+
when Mysql::OPT_LOAD_DATA_LOCAL_DIR
|
161
163
|
@local_infile = value
|
162
164
|
# when Mysql::OPT_NAMED_PIPE
|
163
165
|
# when Mysql::OPT_PROTOCOL
|
data/test/test_mysql.rb
CHANGED
@@ -20,7 +20,7 @@ MYSQL_SOCKET = ENV['MYSQL_SOCKET']
|
|
20
20
|
class TestMysql < Test::Unit::TestCase
|
21
21
|
sub_test_case 'Mysql::VERSION' do
|
22
22
|
test 'returns client version' do
|
23
|
-
assert{ Mysql::VERSION ==
|
23
|
+
assert{ Mysql::VERSION == 21000 }
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -160,6 +160,40 @@ class TestMysql < Test::Unit::TestCase
|
|
160
160
|
@m.query("load data local infile '#{tmpf.path}' into table t")
|
161
161
|
assert{ @m.query('select * from t').fetch_row == ['123','abc'] }
|
162
162
|
end
|
163
|
+
test 'OPT_LOAD_DATA_LOCAL_DIR: client can execute LOAD DATA LOCAL INFILE query with specified directory' do
|
164
|
+
require 'tempfile'
|
165
|
+
tmpf = Tempfile.new 'mysql_spec'
|
166
|
+
tmpf.puts "123\tabc\n"
|
167
|
+
tmpf.close
|
168
|
+
assert{ @m.options(Mysql::OPT_LOAD_DATA_LOCAL_DIR, File.dirname(tmpf.path)) == @m }
|
169
|
+
@m.connect(MYSQL_SERVER, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, MYSQL_PORT, MYSQL_SOCKET)
|
170
|
+
@m.query('create temporary table t (i int, c char(10))')
|
171
|
+
@m.query("load data local infile '#{tmpf.path}' into table t")
|
172
|
+
assert{ @m.query('select * from t').fetch_row == ['123','abc'] }
|
173
|
+
end
|
174
|
+
test 'OPT_LOAD_DATA_LOCAL_DIR: client cannot execute LOAD DATA LOCAL INFILE query without specified directory' do
|
175
|
+
require 'tempfile'
|
176
|
+
tmpf = Tempfile.new 'mysql_spec'
|
177
|
+
tmpf.puts "123\tabc\n"
|
178
|
+
tmpf.close
|
179
|
+
assert{ @m.options(Mysql::OPT_LOAD_DATA_LOCAL_DIR, '/hoge') == @m }
|
180
|
+
@m.connect(MYSQL_SERVER, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, MYSQL_PORT, MYSQL_SOCKET)
|
181
|
+
@m.query('create temporary table t (i int, c char(10))')
|
182
|
+
assert_raise Mysql::ClientError::LoadDataLocalInfileRejected, 'LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.' do
|
183
|
+
@m.query("load data local infile '#{tmpf.path}' into table t")
|
184
|
+
end
|
185
|
+
end
|
186
|
+
test 'without OPT_LOCAL_INFILE and OPT_LOAD_DATA_LOCAL_DIR: client cannot execute LOAD DATA LOCAL INFILE query' do
|
187
|
+
require 'tempfile'
|
188
|
+
tmpf = Tempfile.new 'mysql_spec'
|
189
|
+
tmpf.puts "123\tabc\n"
|
190
|
+
tmpf.close
|
191
|
+
@m.connect(MYSQL_SERVER, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, MYSQL_PORT, MYSQL_SOCKET)
|
192
|
+
@m.query('create temporary table t (i int, c char(10))')
|
193
|
+
assert_raise Mysql::ServerError::NotAllowedCommand, 'The used command is not allowed with this MySQL version' do
|
194
|
+
@m.query("load data local infile '#{tmpf.path}' into table t")
|
195
|
+
end
|
196
|
+
end
|
163
197
|
test 'OPT_READ_TIMEOUT: set timeout for reading packet' do
|
164
198
|
assert{ @m.options(Mysql::OPT_READ_TIMEOUT, 10) == @m }
|
165
199
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-mysql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomita Masahiro
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: This is MySQL connector. pure Ruby version
|
14
14
|
email: tommy@tmtm.org
|
@@ -30,7 +30,7 @@ homepage: http://github.com/tmtm/ruby-mysql
|
|
30
30
|
licenses:
|
31
31
|
- Ruby
|
32
32
|
metadata: {}
|
33
|
-
post_install_message:
|
33
|
+
post_install_message:
|
34
34
|
rdoc_options: []
|
35
35
|
require_paths:
|
36
36
|
- lib
|
@@ -45,11 +45,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0'
|
47
47
|
requirements: []
|
48
|
-
|
49
|
-
|
50
|
-
signing_key:
|
48
|
+
rubygems_version: 3.2.22
|
49
|
+
signing_key:
|
51
50
|
specification_version: 4
|
52
51
|
summary: MySQL connector
|
53
52
|
test_files:
|
54
|
-
- test/test_mysql_packet.rb
|
55
53
|
- test/test_mysql.rb
|
54
|
+
- test/test_mysql_packet.rb
|