mysql2 0.5.6 → 0.5.7
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 +4 -4
- data/README.md +5 -6
- data/ext/mysql2/client.c +48 -6
- data/ext/mysql2/client.h +1 -0
- data/ext/mysql2/extconf.rb +9 -3
- data/ext/mysql2/result.c +8 -1
- data/ext/mysql2/statement.c +23 -4
- data/lib/mysql2/client.rb +20 -10
- data/lib/mysql2/version.rb +1 -1
- data/support/B7B3B788A8D3785C.asc +66 -0
- metadata +22 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ccf25fc249fb4a7d7f1ce79f2bb5b64669fc70e436e87635779dd0564f2f9507
|
4
|
+
data.tar.gz: a173c4a95ff7bbbfb22fa01676d51c62a4a9b4b411337d3567c5543bbff2c8c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc179ef1bdf1b0cd08c02f471615dc547bb3a730ded3e6f64dfb78515914ef09e07f5294108a89868a9f055a123ff54b4e99c51e0134fccec1a587a082259c3a
|
7
|
+
data.tar.gz: d84e5f6cebcd2531e37c473567788f49055b62cbe722357a44e300b4705ac6f3eae5cef453288f395f130d5e641c299f08589c402fc0182ad76744094dcc5943
|
data/README.md
CHANGED
@@ -3,8 +3,6 @@
|
|
3
3
|
GitHub Actions
|
4
4
|
[](https://github.com/brianmario/mysql2/actions/workflows/build.yml)
|
5
5
|
[](https://github.com/brianmario/mysql2/actions/workflows/container.yml)
|
6
|
-
Travis CI
|
7
|
-
[](https://travis-ci.org/brianmario/mysql2)
|
8
6
|
Appveyor CI
|
9
7
|
[](https://ci.appveyor.com/project/sodabrew/mysql2)
|
10
8
|
|
@@ -107,7 +105,7 @@ Ruby runtime and MySQL client libraries are compiled with the same OpenSSL
|
|
107
105
|
family, 1.0 or 1.1 or 3.0, since only one can be loaded at runtime.
|
108
106
|
|
109
107
|
``` sh
|
110
|
-
$ brew install openssl@1.1
|
108
|
+
$ brew install openssl@1.1 zstd
|
111
109
|
$ gem install mysql2 -- --with-openssl-dir=$(brew --prefix openssl@1.1)
|
112
110
|
|
113
111
|
or
|
@@ -133,7 +131,7 @@ $ bundle config --local build.mysql2 -- $(ruby -r rbconfig -e 'puts RbConfig::CO
|
|
133
131
|
```
|
134
132
|
|
135
133
|
Note the additional double dashes (`--`) these separate command-line arguments
|
136
|
-
that `gem` or `bundler` interpret from the
|
134
|
+
that `gem` or `bundler` interpret from the additional arguments that are passed
|
137
135
|
to the mysql2 build process.
|
138
136
|
|
139
137
|
### Windows
|
@@ -273,7 +271,7 @@ Mysql2::Client.new(
|
|
273
271
|
:database,
|
274
272
|
:socket = '/path/to/mysql.sock',
|
275
273
|
:flags = REMEMBER_OPTIONS | LONG_PASSWORD | LONG_FLAG | TRANSACTIONS | PROTOCOL_41 | SECURE_CONNECTION | MULTI_STATEMENTS,
|
276
|
-
:encoding = '
|
274
|
+
:encoding = 'utf8mb4',
|
277
275
|
:read_timeout = seconds,
|
278
276
|
:write_timeout = seconds,
|
279
277
|
:connect_timeout = seconds,
|
@@ -281,6 +279,7 @@ Mysql2::Client.new(
|
|
281
279
|
:reconnect = true/false,
|
282
280
|
:local_infile = true/false,
|
283
281
|
:secure_auth = true/false,
|
282
|
+
:get_server_public_key = true/false,
|
284
283
|
:default_file = '/path/to/my.cfg',
|
285
284
|
:default_group = 'my.cfg section',
|
286
285
|
:default_auth = 'authentication_windows_client'
|
@@ -366,7 +365,7 @@ Use the value `mysql2` as the adapter name. For example:
|
|
366
365
|
``` yaml
|
367
366
|
development:
|
368
367
|
adapter: mysql2
|
369
|
-
encoding:
|
368
|
+
encoding: utf8mb4
|
370
369
|
database: my_db_name
|
371
370
|
username: root
|
372
371
|
password: my_password
|
data/ext/mysql2/client.c
CHANGED
@@ -48,9 +48,12 @@ static ID intern_brackets, intern_merge, intern_merge_bang, intern_new_with_args
|
|
48
48
|
* compatibility with mysql-connector-c, where LIBMYSQL_VERSION is the correct
|
49
49
|
* variable to use, but MYSQL_SERVER_VERSION gives the correct numbers when
|
50
50
|
* linking against the server itself
|
51
|
+
*
|
52
|
+
* MariaDB exposes its client version independently to the server version as
|
53
|
+
* MARIADB_PACKAGE_VERSION.
|
51
54
|
*/
|
52
|
-
#if defined(
|
53
|
-
#define MYSQL_LINK_VERSION
|
55
|
+
#if defined(MARIADB_PACKAGE_VERSION)
|
56
|
+
#define MYSQL_LINK_VERSION MARIADB_PACKAGE_VERSION
|
54
57
|
#elif defined(LIBMYSQL_VERSION)
|
55
58
|
#define MYSQL_LINK_VERSION LIBMYSQL_VERSION
|
56
59
|
#else
|
@@ -307,7 +310,7 @@ static void *nogvl_connect(void *ptr) {
|
|
307
310
|
* a socket that may be in use by the parent or other processes after fork.
|
308
311
|
*
|
309
312
|
* /dev/null is used to absorb writes; previously a dummy socket was used, but
|
310
|
-
* it could not
|
313
|
+
* it could not absorb writes and caused openssl to go into an infinite loop.
|
311
314
|
*
|
312
315
|
* Returns Qtrue or Qfalse (success or failure)
|
313
316
|
*
|
@@ -411,6 +414,7 @@ static VALUE allocate(VALUE klass) {
|
|
411
414
|
wrapper->initialized = 0; /* will be set true after calling mysql_init */
|
412
415
|
wrapper->closed = 1; /* will be set false after calling mysql_real_connect */
|
413
416
|
wrapper->refcount = 1;
|
417
|
+
wrapper->affected_rows = -1;
|
414
418
|
wrapper->client = (MYSQL*)xmalloc(sizeof(MYSQL));
|
415
419
|
|
416
420
|
return obj;
|
@@ -669,6 +673,7 @@ static VALUE rb_mysql_client_async_result(VALUE self) {
|
|
669
673
|
wrapper->active_fiber = Qnil;
|
670
674
|
rb_raise_mysql2_error(wrapper);
|
671
675
|
}
|
676
|
+
wrapper->affected_rows = mysql_affected_rows(wrapper->client);
|
672
677
|
|
673
678
|
is_streaming = rb_hash_aref(rb_ivar_get(self, intern_current_query_options), sym_stream);
|
674
679
|
if (is_streaming == Qtrue) {
|
@@ -996,6 +1001,13 @@ static VALUE _mysql_client_options(VALUE self, int opt, VALUE value) {
|
|
996
1001
|
retval = charval;
|
997
1002
|
break;
|
998
1003
|
|
1004
|
+
#ifdef HAVE_CONST_MYSQL_OPT_GET_SERVER_PUBLIC_KEY
|
1005
|
+
case MYSQL_OPT_GET_SERVER_PUBLIC_KEY:
|
1006
|
+
boolval = (value == Qfalse ? 0 : 1);
|
1007
|
+
retval = &boolval;
|
1008
|
+
break;
|
1009
|
+
#endif
|
1010
|
+
|
999
1011
|
#ifdef HAVE_MYSQL_DEFAULT_AUTH
|
1000
1012
|
case MYSQL_DEFAULT_AUTH:
|
1001
1013
|
charval = (const char *)StringValueCStr(value);
|
@@ -1148,12 +1160,12 @@ static VALUE rb_mysql_client_session_track(VALUE self, VALUE type) {
|
|
1148
1160
|
* if it was an UPDATE, DELETE, or INSERT.
|
1149
1161
|
*/
|
1150
1162
|
static VALUE rb_mysql_client_affected_rows(VALUE self) {
|
1151
|
-
|
1163
|
+
uint64_t retVal;
|
1152
1164
|
GET_CLIENT(self);
|
1153
1165
|
|
1154
1166
|
REQUIRE_CONNECTED(wrapper);
|
1155
|
-
retVal =
|
1156
|
-
if (retVal == (
|
1167
|
+
retVal = wrapper->affected_rows;
|
1168
|
+
if (retVal == (uint64_t)-1) {
|
1157
1169
|
rb_raise_mysql2_error(wrapper);
|
1158
1170
|
}
|
1159
1171
|
return ULL2NUM(retVal);
|
@@ -1322,6 +1334,26 @@ static VALUE rb_mysql_client_encoding(VALUE self) {
|
|
1322
1334
|
return wrapper->encoding;
|
1323
1335
|
}
|
1324
1336
|
|
1337
|
+
/* call-seq:
|
1338
|
+
* client.database
|
1339
|
+
*
|
1340
|
+
* Returns the currently selected database.
|
1341
|
+
*
|
1342
|
+
* The result may be stale if `session_track_schema` is disabled. Read
|
1343
|
+
* https://dev.mysql.com/doc/refman/5.7/en/session-state-tracking.html for more
|
1344
|
+
* information.
|
1345
|
+
*/
|
1346
|
+
static VALUE rb_mysql_client_database(VALUE self) {
|
1347
|
+
GET_CLIENT(self);
|
1348
|
+
|
1349
|
+
char *db = wrapper->client->db;
|
1350
|
+
if (!db) {
|
1351
|
+
return Qnil;
|
1352
|
+
}
|
1353
|
+
|
1354
|
+
return rb_str_new_cstr(wrapper->client->db);
|
1355
|
+
}
|
1356
|
+
|
1325
1357
|
/* call-seq:
|
1326
1358
|
* client.automatic_close?
|
1327
1359
|
*
|
@@ -1485,6 +1517,14 @@ static VALUE set_init_command(VALUE self, VALUE value) {
|
|
1485
1517
|
return _mysql_client_options(self, MYSQL_INIT_COMMAND, value);
|
1486
1518
|
}
|
1487
1519
|
|
1520
|
+
static VALUE set_get_server_public_key(VALUE self, VALUE value) {
|
1521
|
+
#ifdef HAVE_CONST_MYSQL_OPT_GET_SERVER_PUBLIC_KEY
|
1522
|
+
return _mysql_client_options(self, MYSQL_OPT_GET_SERVER_PUBLIC_KEY, value);
|
1523
|
+
#else
|
1524
|
+
rb_raise(cMysql2Error, "get-server-public-key is not available, you may need a newer MySQL client library");
|
1525
|
+
#endif
|
1526
|
+
}
|
1527
|
+
|
1488
1528
|
static VALUE set_default_auth(VALUE self, VALUE value) {
|
1489
1529
|
#ifdef HAVE_MYSQL_DEFAULT_AUTH
|
1490
1530
|
return _mysql_client_options(self, MYSQL_DEFAULT_AUTH, value);
|
@@ -1586,6 +1626,7 @@ void init_mysql2_client() {
|
|
1586
1626
|
rb_define_method(cMysql2Client, "ssl_cipher", rb_mysql_get_ssl_cipher, 0);
|
1587
1627
|
rb_define_method(cMysql2Client, "encoding", rb_mysql_client_encoding, 0);
|
1588
1628
|
rb_define_method(cMysql2Client, "session_track", rb_mysql_client_session_track, 1);
|
1629
|
+
rb_define_method(cMysql2Client, "database", rb_mysql_client_database, 0);
|
1589
1630
|
|
1590
1631
|
rb_define_private_method(cMysql2Client, "connect_timeout=", set_connect_timeout, 1);
|
1591
1632
|
rb_define_private_method(cMysql2Client, "read_timeout=", set_read_timeout, 1);
|
@@ -1596,6 +1637,7 @@ void init_mysql2_client() {
|
|
1596
1637
|
rb_define_private_method(cMysql2Client, "default_file=", set_read_default_file, 1);
|
1597
1638
|
rb_define_private_method(cMysql2Client, "default_group=", set_read_default_group, 1);
|
1598
1639
|
rb_define_private_method(cMysql2Client, "init_command=", set_init_command, 1);
|
1640
|
+
rb_define_private_method(cMysql2Client, "get_server_public_key=", set_get_server_public_key, 1);
|
1599
1641
|
rb_define_private_method(cMysql2Client, "default_auth=", set_default_auth, 1);
|
1600
1642
|
rb_define_private_method(cMysql2Client, "ssl_set", set_ssl_options, 5);
|
1601
1643
|
rb_define_private_method(cMysql2Client, "ssl_mode=", rb_set_ssl_mode_option, 1);
|
data/ext/mysql2/client.h
CHANGED
data/ext/mysql2/extconf.rb
CHANGED
@@ -28,7 +28,7 @@ def add_ssl_defines(header)
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
### Check for Ruby C
|
31
|
+
### Check for Ruby C extension interfaces
|
32
32
|
|
33
33
|
# 2.1+
|
34
34
|
have_func('rb_absint_size')
|
@@ -63,7 +63,12 @@ if with_config('openssl-dir')
|
|
63
63
|
# Homebrew OpenSSL on MacOS
|
64
64
|
elsif RUBY_PLATFORM =~ /darwin/ && system('command -v brew')
|
65
65
|
openssl_location = `brew --prefix openssl`.strip
|
66
|
-
$
|
66
|
+
$LIBPATH << "#{openssl_location}/lib" unless openssl_location.empty?
|
67
|
+
end
|
68
|
+
|
69
|
+
if RUBY_PLATFORM =~ /darwin/ && system('command -v brew')
|
70
|
+
zstd_location = `brew --prefix zstd`.strip
|
71
|
+
$LIBPATH << "#{zstd_location}/lib" unless zstd_location.empty?
|
67
72
|
end
|
68
73
|
|
69
74
|
### Find MySQL client library
|
@@ -86,7 +91,7 @@ dirs = ENV.fetch('PATH').split(File::PATH_SEPARATOR) + %w[
|
|
86
91
|
/usr/local/opt/mysql@*
|
87
92
|
/usr/local/opt/mysql-client
|
88
93
|
/usr/local/opt/mysql-client@*
|
89
|
-
].map { |dir| dir
|
94
|
+
].map { |dir| "#{dir}/bin" }
|
90
95
|
|
91
96
|
# For those without HOMEBREW_ROOT in PATH
|
92
97
|
dirs << "#{ENV['HOMEBREW_ROOT']}/bin" if ENV['HOMEBREW_ROOT']
|
@@ -159,6 +164,7 @@ have_const('SERVER_QUERY_NO_INDEX_USED', mysql_h)
|
|
159
164
|
have_const('SERVER_QUERY_WAS_SLOW', mysql_h)
|
160
165
|
have_const('MYSQL_OPTION_MULTI_STATEMENTS_ON', mysql_h)
|
161
166
|
have_const('MYSQL_OPTION_MULTI_STATEMENTS_OFF', mysql_h)
|
167
|
+
have_const('MYSQL_OPT_GET_SERVER_PUBLIC_KEY', mysql_h)
|
162
168
|
|
163
169
|
# my_bool is replaced by C99 bool in MySQL 8.0, but we want
|
164
170
|
# to retain compatibility with the typedef in earlier MySQLs.
|
data/ext/mysql2/result.c
CHANGED
@@ -27,6 +27,10 @@ static rb_encoding *binaryEncoding;
|
|
27
27
|
*/
|
28
28
|
#define MYSQL2_BINARY_CHARSET 63
|
29
29
|
|
30
|
+
#ifndef MYSQL_TYPE_VECTOR
|
31
|
+
#define MYSQL_TYPE_VECTOR 242
|
32
|
+
#endif
|
33
|
+
|
30
34
|
#ifndef MYSQL_TYPE_JSON
|
31
35
|
#define MYSQL_TYPE_JSON 245
|
32
36
|
#endif
|
@@ -382,6 +386,9 @@ static VALUE rb_mysql_result_fetch_field_type(VALUE self, unsigned int idx) {
|
|
382
386
|
case MYSQL_TYPE_JSON: // json
|
383
387
|
rb_field_type = rb_str_new_cstr("json");
|
384
388
|
break;
|
389
|
+
case MYSQL_TYPE_VECTOR: // vector
|
390
|
+
rb_field_type = rb_str_new_cstr("vector");
|
391
|
+
break;
|
385
392
|
default:
|
386
393
|
rb_field_type = rb_str_new_cstr("unknown");
|
387
394
|
break;
|
@@ -1008,7 +1015,7 @@ static VALUE rb_mysql_result_each_(VALUE self,
|
|
1008
1015
|
rb_raise(cMysql2Error, "You have already fetched all the rows for this query and streaming is true. (to reiterate you must requery).");
|
1009
1016
|
}
|
1010
1017
|
} else {
|
1011
|
-
if (args->cacheRows && wrapper->
|
1018
|
+
if (args->cacheRows && wrapper->resultFreed) {
|
1012
1019
|
/* we've already read the entire dataset from the C result into our */
|
1013
1020
|
/* internal array. Lets hand that over to the user since it's ready to go */
|
1014
1021
|
for (i = 0; i < wrapper->numberOfRows; i++) {
|
data/ext/mysql2/statement.c
CHANGED
@@ -10,9 +10,12 @@ static VALUE intern_sec_fraction, intern_usec, intern_sec, intern_min, intern_ho
|
|
10
10
|
#define TypedData_Get_Struct(obj, type, ignore, sval) Data_Get_Struct(obj, type, sval)
|
11
11
|
#endif
|
12
12
|
|
13
|
-
#define
|
13
|
+
#define RAW_GET_STATEMENT(self) \
|
14
14
|
mysql_stmt_wrapper *stmt_wrapper; \
|
15
15
|
TypedData_Get_Struct(self, mysql_stmt_wrapper, &rb_mysql_statement_type, stmt_wrapper); \
|
16
|
+
|
17
|
+
#define GET_STATEMENT(self) \
|
18
|
+
RAW_GET_STATEMENT(self) \
|
16
19
|
if (!stmt_wrapper->stmt) { rb_raise(cMysql2Error, "Invalid statement handle"); } \
|
17
20
|
if (stmt_wrapper->closed) { rb_raise(cMysql2Error, "Statement handle already closed"); }
|
18
21
|
|
@@ -603,12 +606,27 @@ static VALUE rb_mysql_stmt_affected_rows(VALUE self) {
|
|
603
606
|
* own prepared statement cache.
|
604
607
|
*/
|
605
608
|
static VALUE rb_mysql_stmt_close(VALUE self) {
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
+
RAW_GET_STATEMENT(self);
|
610
|
+
|
611
|
+
if (!stmt_wrapper->closed) {
|
612
|
+
stmt_wrapper->closed = 1;
|
613
|
+
rb_thread_call_without_gvl(nogvl_stmt_close, stmt_wrapper, RUBY_UBF_IO, 0);
|
614
|
+
}
|
615
|
+
|
609
616
|
return Qnil;
|
610
617
|
}
|
611
618
|
|
619
|
+
/* call-seq:
|
620
|
+
* stmt.closed?
|
621
|
+
*
|
622
|
+
* Returns wheter or not the statement have been closed.
|
623
|
+
*/
|
624
|
+
static VALUE rb_mysql_stmt_closed_p(VALUE self) {
|
625
|
+
RAW_GET_STATEMENT(self);
|
626
|
+
|
627
|
+
return stmt_wrapper->closed ? Qtrue : Qfalse;
|
628
|
+
}
|
629
|
+
|
612
630
|
void init_mysql2_statement() {
|
613
631
|
cDate = rb_const_get(rb_cObject, rb_intern("Date"));
|
614
632
|
rb_global_variable(&cDate);
|
@@ -630,6 +648,7 @@ void init_mysql2_statement() {
|
|
630
648
|
rb_define_method(cMysql2Statement, "last_id", rb_mysql_stmt_last_id, 0);
|
631
649
|
rb_define_method(cMysql2Statement, "affected_rows", rb_mysql_stmt_affected_rows, 0);
|
632
650
|
rb_define_method(cMysql2Statement, "close", rb_mysql_stmt_close, 0);
|
651
|
+
rb_define_method(cMysql2Statement, "closed?", rb_mysql_stmt_closed_p, 0);
|
633
652
|
|
634
653
|
sym_stream = ID2SYM(rb_intern("stream"));
|
635
654
|
|
data/lib/mysql2/client.rb
CHANGED
@@ -32,11 +32,11 @@ module Mysql2
|
|
32
32
|
opts[:connect_timeout] = 120 unless opts.key?(:connect_timeout)
|
33
33
|
|
34
34
|
# TODO: stricter validation rather than silent massaging
|
35
|
-
%i[reconnect connect_timeout local_infile read_timeout write_timeout default_file default_group secure_auth init_command automatic_close enable_cleartext_plugin default_auth].each do |key|
|
35
|
+
%i[reconnect connect_timeout local_infile read_timeout write_timeout default_file default_group secure_auth init_command automatic_close enable_cleartext_plugin default_auth get_server_public_key].each do |key|
|
36
36
|
next unless opts.key?(key)
|
37
37
|
|
38
38
|
case key
|
39
|
-
when :reconnect, :local_infile, :secure_auth, :automatic_close, :enable_cleartext_plugin
|
39
|
+
when :reconnect, :local_infile, :secure_auth, :automatic_close, :enable_cleartext_plugin, :get_server_public_key
|
40
40
|
send(:"#{key}=", !!opts[key]) # rubocop:disable Style/DoubleNegation
|
41
41
|
when :connect_timeout, :read_timeout, :write_timeout
|
42
42
|
send(:"#{key}=", Integer(opts[key])) unless opts[key].nil?
|
@@ -45,8 +45,8 @@ module Mysql2
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
-
# force the encoding to
|
49
|
-
self.charset_name = opts[:encoding] || '
|
48
|
+
# force the encoding to utf8mb4
|
49
|
+
self.charset_name = opts[:encoding] || 'utf8mb4'
|
50
50
|
|
51
51
|
mode = parse_ssl_mode(opts[:ssl_mode]) if opts[:ssl_mode]
|
52
52
|
if (mode == SSL_MODE_VERIFY_CA || mode == SSL_MODE_VERIFY_IDENTITY) && !opts[:sslca]
|
@@ -71,12 +71,7 @@ module Mysql2
|
|
71
71
|
# SSL verify is a connection flag rather than a mysql_ssl_set option
|
72
72
|
flags |= SSL_VERIFY_SERVER_CERT if opts[:sslverify]
|
73
73
|
|
74
|
-
|
75
|
-
warn "============= WARNING FROM mysql2 ============="
|
76
|
-
warn "The options :user, :pass, :hostname, :dbname, :db, and :sock are deprecated and will be removed at some point in the future."
|
77
|
-
warn "Instead, please use :username, :password, :host, :port, :database, :socket, :flags for the options."
|
78
|
-
warn "============= END WARNING FROM mysql2 ========="
|
79
|
-
end
|
74
|
+
check_and_clean_query_options
|
80
75
|
|
81
76
|
user = opts[:username] || opts[:user]
|
82
77
|
pass = opts[:password] || opts[:pass]
|
@@ -165,6 +160,21 @@ module Mysql2
|
|
165
160
|
self.class.info
|
166
161
|
end
|
167
162
|
|
163
|
+
private
|
164
|
+
|
165
|
+
def check_and_clean_query_options
|
166
|
+
if %i[user pass hostname dbname db sock].any? { |k| @query_options.key?(k) }
|
167
|
+
warn "============= WARNING FROM mysql2 ============="
|
168
|
+
warn "The options :user, :pass, :hostname, :dbname, :db, and :sock are deprecated and will be removed at some point in the future."
|
169
|
+
warn "Instead, please use :username, :password, :host, :port, :database, :socket, :flags for the options."
|
170
|
+
warn "============= END WARNING FROM mysql2 ========="
|
171
|
+
end
|
172
|
+
|
173
|
+
# avoid logging sensitive data via #inspect
|
174
|
+
@query_options.delete(:password)
|
175
|
+
@query_options.delete(:pass)
|
176
|
+
end
|
177
|
+
|
168
178
|
class << self
|
169
179
|
private
|
170
180
|
|
data/lib/mysql2/version.rb
CHANGED
@@ -0,0 +1,66 @@
|
|
1
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
2
|
+
Comment: Hostname:
|
3
|
+
Version: Hockeypuck 2.2
|
4
|
+
|
5
|
+
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
|
64
|
+
73BwBlSVqPeJ3dPGq4CW53iVYPM=
|
65
|
+
=mheB
|
66
|
+
-----END PGP PUBLIC KEY BLOCK-----
|
metadata
CHANGED
@@ -1,17 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mysql2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Lopez
|
8
8
|
- Aaron Stone
|
9
|
-
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
dependencies:
|
14
|
-
|
11
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bigdecimal
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
15
27
|
email:
|
16
28
|
- seniorlopez@gmail.com
|
17
29
|
- aaron@serendipity.cx
|
@@ -48,6 +60,7 @@ files:
|
|
48
60
|
- lib/mysql2/version.rb
|
49
61
|
- support/3A79BD29.asc
|
50
62
|
- support/5072E1F5.asc
|
63
|
+
- support/B7B3B788A8D3785C.asc
|
51
64
|
- support/C74CD1D8.asc
|
52
65
|
- support/libmysql.def
|
53
66
|
- support/mysql_enc_to_ruby.rb
|
@@ -57,12 +70,11 @@ licenses:
|
|
57
70
|
- MIT
|
58
71
|
metadata:
|
59
72
|
bug_tracker_uri: https://github.com/brianmario/mysql2/issues
|
60
|
-
changelog_uri: https://github.com/brianmario/mysql2/releases/tag/0.5.
|
61
|
-
documentation_uri: https://www.rubydoc.info/gems/mysql2/0.5.
|
73
|
+
changelog_uri: https://github.com/brianmario/mysql2/releases/tag/0.5.7
|
74
|
+
documentation_uri: https://www.rubydoc.info/gems/mysql2/0.5.7
|
62
75
|
homepage_uri: https://github.com/brianmario/mysql2
|
63
|
-
source_code_uri: https://github.com/brianmario/mysql2/tree/0.5.
|
76
|
+
source_code_uri: https://github.com/brianmario/mysql2/tree/0.5.7
|
64
77
|
msys2_mingw_dependencies: libmariadbclient
|
65
|
-
post_install_message:
|
66
78
|
rdoc_options:
|
67
79
|
- "--charset=UTF-8"
|
68
80
|
require_paths:
|
@@ -78,8 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
78
90
|
- !ruby/object:Gem::Version
|
79
91
|
version: '0'
|
80
92
|
requirements: []
|
81
|
-
rubygems_version: 3.
|
82
|
-
signing_key:
|
93
|
+
rubygems_version: 3.8.0.dev
|
83
94
|
specification_version: 4
|
84
95
|
summary: A simple, fast Mysql library for Ruby, binding to libmysql
|
85
96
|
test_files: []
|