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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d8e25b1a25080490b1bf04829d8f6616609391a094baa783d7da242342a4ff3b
4
- data.tar.gz: 7dfab0d03b289b665807d21b29326b96711e5c1d3ae697e81f0e4ab7a5dd6280
3
+ metadata.gz: ccf25fc249fb4a7d7f1ce79f2bb5b64669fc70e436e87635779dd0564f2f9507
4
+ data.tar.gz: a173c4a95ff7bbbfb22fa01676d51c62a4a9b4b411337d3567c5543bbff2c8c2
5
5
  SHA512:
6
- metadata.gz: 3709403d316832055596c96af2e260e3de9d181ba558f551f0d5fe0d89abfec0ea242f6c30228eac02284e1e7287cbd315933fadc517fab88a10d588c4f0d8b6
7
- data.tar.gz: 63c17fa1c273cefa454ea7f6cc0860014514e4c899ceb1bd856271cd238938a4d0fb263118eb64dde0a9568905d6410110fbe3b8359bff3fab8314607de6dd50
6
+ metadata.gz: bc179ef1bdf1b0cd08c02f471615dc547bb3a730ded3e6f64dfb78515914ef09e07f5294108a89868a9f055a123ff54b4e99c51e0134fccec1a587a082259c3a
7
+ data.tar.gz: d84e5f6cebcd2531e37c473567788f49055b62cbe722357a44e300b4705ac6f3eae5cef453288f395f130d5e641c299f08589c402fc0182ad76744094dcc5943
data/README.md CHANGED
@@ -3,8 +3,6 @@
3
3
  GitHub Actions
4
4
  [![GitHub Actions Status: Build](https://github.com/brianmario/mysql2/actions/workflows/build.yml/badge.svg)](https://github.com/brianmario/mysql2/actions/workflows/build.yml)
5
5
  [![GitHub Actions Status: Container](https://github.com/brianmario/mysql2/actions/workflows/container.yml/badge.svg)](https://github.com/brianmario/mysql2/actions/workflows/container.yml)
6
- Travis CI
7
- [![Travis CI Status](https://travis-ci.org/brianmario/mysql2.png)](https://travis-ci.org/brianmario/mysql2)
8
6
  Appveyor CI
9
7
  [![Appveyor CI Status](https://ci.appveyor.com/api/projects/status/github/sodabrew/mysql2)](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 addiitonal arguments that are passed
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 = 'utf8',
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: utf8
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(MARIADB_CLIENT_VERSION_STR)
53
- #define MYSQL_LINK_VERSION MARIADB_CLIENT_VERSION_STR
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 abosrb writes and caused openssl to go into an infinite loop.
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
- my_ulonglong retVal;
1163
+ uint64_t retVal;
1152
1164
  GET_CLIENT(self);
1153
1165
 
1154
1166
  REQUIRE_CONNECTED(wrapper);
1155
- retVal = mysql_affected_rows(wrapper->client);
1156
- if (retVal == (my_ulonglong)-1) {
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
@@ -12,6 +12,7 @@ typedef struct {
12
12
  int initialized;
13
13
  int refcount;
14
14
  int closed;
15
+ uint64_t affected_rows;
15
16
  MYSQL *client;
16
17
  } mysql_client_wrapper;
17
18
 
@@ -28,7 +28,7 @@ def add_ssl_defines(header)
28
28
  end
29
29
  end
30
30
 
31
- ### Check for Ruby C extention interfaces
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
- $LDFLAGS << " -L#{openssl_location}/lib" if openssl_location
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 << '/bin' }
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->lastRowProcessed == wrapper->numberOfRows) {
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++) {
@@ -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 GET_STATEMENT(self) \
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
- GET_STATEMENT(self);
607
- stmt_wrapper->closed = 1;
608
- rb_thread_call_without_gvl(nogvl_stmt_close, stmt_wrapper, RUBY_UBF_IO, 0);
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 utf8
49
- self.charset_name = opts[:encoding] || 'utf8'
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
- if %i[user pass hostname dbname db sock].any? { |k| @query_options.key?(k) }
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
 
@@ -1,3 +1,3 @@
1
1
  module Mysql2
2
- VERSION = "0.5.6".freeze
2
+ VERSION = "0.5.7".freeze
3
3
  end
@@ -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.6
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: 2024-02-08 00:00:00.000000000 Z
13
- dependencies: []
14
- description:
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.6
61
- documentation_uri: https://www.rubydoc.info/gems/mysql2/0.5.6
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.6
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.6.0.dev
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: []