mysql2 0.5.0-x86-mswin32-60 → 0.5.1-x86-mswin32-60
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 +4 -0
 - data/ext/mysql2/extconf.rb +1 -0
 - data/ext/mysql2/statement.c +33 -11
 - data/lib/mysql2/2.0/mysql2.so +0 -0
 - data/lib/mysql2/2.1/mysql2.so +0 -0
 - data/lib/mysql2/2.2/mysql2.so +0 -0
 - data/lib/mysql2/2.3/mysql2.so +0 -0
 - data/lib/mysql2/2.4/mysql2.so +0 -0
 - data/lib/mysql2/2.5/mysql2.so +0 -0
 - data/lib/mysql2/mysql2.rb +2 -0
 - data/lib/mysql2/version.rb +1 -1
 - data/spec/mysql2/statement_spec.rb +4 -0
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 3742289f5034fac7e4bba5286607f8ad0819260363fc56fdeeb29ff7ca75d79f
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 6149fe0004bded93e643d742645a79cf49d4de4726fbede5b682b9945088385c
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 2d7041de3f662d2b8586ca632cb938922ec0535b6144af7602be5f63317bec30cc9a06c3b50d1b9c3a43e332b7fe3bc1906f11b62f27ec1fc66a8c105eb5b04e
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: a7f387554e25f1fd967c2919699e44e0a1257cb072bcd20cb8f06ffb4931f83526296c5b10830a00cc17a4f9faeb9e92296098d6c2357a0482cdac3be9f76c82
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -178,6 +178,9 @@ Pass your arguments to the execute method in the same number and order as the 
     | 
|
| 
       178 
178 
     | 
    
         
             
            question marks in the statement. Query options can be passed as keyword arguments
         
     | 
| 
       179 
179 
     | 
    
         
             
            to the execute method.
         
     | 
| 
       180 
180 
     | 
    
         | 
| 
      
 181 
     | 
    
         
            +
            Be sure to read about the known limitations of prepared statements at
         
     | 
| 
      
 182 
     | 
    
         
            +
            https://dev.mysql.com/doc/refman/5.6/en/c-api-prepared-statement-problems.html
         
     | 
| 
      
 183 
     | 
    
         
            +
             
     | 
| 
       181 
184 
     | 
    
         
             
            ``` ruby
         
     | 
| 
       182 
185 
     | 
    
         
             
            statement = @client.prepare("SELECT * FROM users WHERE login_count = ?")
         
     | 
| 
       183 
186 
     | 
    
         
             
            result1 = statement.execute(1)
         
     | 
| 
         @@ -534,6 +537,7 @@ This gem is tested with the following MySQL and MariaDB versions: 
     | 
|
| 
       534 
537 
     | 
    
         | 
| 
       535 
538 
     | 
    
         
             
            ### Ruby on Rails / Active Record
         
     | 
| 
       536 
539 
     | 
    
         | 
| 
      
 540 
     | 
    
         
            +
             * mysql2 0.5.x works with Rails / Active Record 5.0.7, 5.1.6, and higher.
         
     | 
| 
       537 
541 
     | 
    
         
             
             * mysql2 0.4.x works with Rails / Active Record 4.2.5 - 5.0 and higher.
         
     | 
| 
       538 
542 
     | 
    
         
             
             * mysql2 0.3.x works with Rails / Active Record 3.1, 3.2, 4.x, 5.0.
         
     | 
| 
       539 
543 
     | 
    
         
             
             * mysql2 0.2.x works with Rails / Active Record 2.3 - 3.0.
         
     | 
    
        data/ext/mysql2/extconf.rb
    CHANGED
    
    | 
         @@ -63,6 +63,7 @@ if inc && lib 
     | 
|
| 
       63 
63 
     | 
    
         
             
              abort "-----\nCannot find library dir(s) #{lib}\n-----" unless lib && lib.split(File::PATH_SEPARATOR).any? { |dir| File.directory?(dir) }
         
     | 
| 
       64 
64 
     | 
    
         
             
              warn "-----\nUsing --with-mysql-dir=#{File.dirname inc}\n-----"
         
     | 
| 
       65 
65 
     | 
    
         
             
              rpath_dir = lib
         
     | 
| 
      
 66 
     | 
    
         
            +
              have_library('mysqlclient')
         
     | 
| 
       66 
67 
     | 
    
         
             
            elsif (mc = (with_config('mysql-config') || Dir[GLOB].first))
         
     | 
| 
       67 
68 
     | 
    
         
             
              # If the user has provided a --with-mysql-config argument, we must respect it or fail.
         
     | 
| 
       68 
69 
     | 
    
         
             
              # If the user gave --with-mysql-config with no argument means we should try to find it.
         
     | 
    
        data/ext/mysql2/statement.c
    CHANGED
    
    | 
         @@ -403,6 +403,39 @@ static VALUE rb_mysql_stmt_execute(int argc, VALUE *argv, VALUE self) { 
     | 
|
| 
       403 
403 
     | 
    
         
             
                }
         
     | 
| 
       404 
404 
     | 
    
         
             
              }
         
     | 
| 
       405 
405 
     | 
    
         | 
| 
      
 406 
     | 
    
         
            +
              // Duplicate the options hash, merge! extra opts, put the copy into the Result object
         
     | 
| 
      
 407 
     | 
    
         
            +
              current = rb_hash_dup(rb_iv_get(stmt_wrapper->client, "@query_options"));
         
     | 
| 
      
 408 
     | 
    
         
            +
              (void)RB_GC_GUARD(current);
         
     | 
| 
      
 409 
     | 
    
         
            +
              Check_Type(current, T_HASH);
         
     | 
| 
      
 410 
     | 
    
         
            +
             
     | 
| 
      
 411 
     | 
    
         
            +
              // Merge in hash opts/keyword arguments
         
     | 
| 
      
 412 
     | 
    
         
            +
              if (!NIL_P(opts)) {
         
     | 
| 
      
 413 
     | 
    
         
            +
                rb_funcall(current, intern_merge_bang, 1, opts);
         
     | 
| 
      
 414 
     | 
    
         
            +
              }
         
     | 
| 
      
 415 
     | 
    
         
            +
             
     | 
| 
      
 416 
     | 
    
         
            +
              is_streaming = (Qtrue == rb_hash_aref(current, sym_stream));
         
     | 
| 
      
 417 
     | 
    
         
            +
             
     | 
| 
      
 418 
     | 
    
         
            +
              // From stmt_execute to mysql_stmt_result_metadata to stmt_store_result, no
         
     | 
| 
      
 419 
     | 
    
         
            +
              // Ruby API calls are allowed so that GC is not invoked. If the connection is
         
     | 
| 
      
 420 
     | 
    
         
            +
              // in results-streaming-mode for Statement A, and in the middle Statement B
         
     | 
| 
      
 421 
     | 
    
         
            +
              // gets garbage collected, a message will be sent to the server notifying it
         
     | 
| 
      
 422 
     | 
    
         
            +
              // to release Statement B, resulting in the following error:
         
     | 
| 
      
 423 
     | 
    
         
            +
              //   Commands out of sync; you can't run this command now
         
     | 
| 
      
 424 
     | 
    
         
            +
              //
         
     | 
| 
      
 425 
     | 
    
         
            +
              // In streaming mode, statement execute must return a cursor because we
         
     | 
| 
      
 426 
     | 
    
         
            +
              // cannot prevent other Statement objects from being garbage collected
         
     | 
| 
      
 427 
     | 
    
         
            +
              // between fetches of each row of the result set. The following error
         
     | 
| 
      
 428 
     | 
    
         
            +
              // occurs if cursor mode is not set:
         
     | 
| 
      
 429 
     | 
    
         
            +
              //   Row retrieval was canceled by mysql_stmt_close
         
     | 
| 
      
 430 
     | 
    
         
            +
             
     | 
| 
      
 431 
     | 
    
         
            +
              if (is_streaming) {
         
     | 
| 
      
 432 
     | 
    
         
            +
                unsigned long type = CURSOR_TYPE_READ_ONLY;
         
     | 
| 
      
 433 
     | 
    
         
            +
                if (mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, &type)) {
         
     | 
| 
      
 434 
     | 
    
         
            +
                  FREE_BINDS;
         
     | 
| 
      
 435 
     | 
    
         
            +
                  rb_raise(cMysql2Error, "Unable to stream prepared statement, could not set CURSOR_TYPE_READ_ONLY");
         
     | 
| 
      
 436 
     | 
    
         
            +
                }
         
     | 
| 
      
 437 
     | 
    
         
            +
              }
         
     | 
| 
      
 438 
     | 
    
         
            +
             
     | 
| 
       406 
439 
     | 
    
         
             
              if ((VALUE)rb_thread_call_without_gvl(nogvl_stmt_execute, stmt, RUBY_UBF_IO, 0) == Qfalse) {
         
     | 
| 
       407 
440 
     | 
    
         
             
                FREE_BINDS;
         
     | 
| 
       408 
441 
     | 
    
         
             
                rb_raise_mysql2_stmt_error(stmt_wrapper);
         
     | 
| 
         @@ -421,17 +454,6 @@ static VALUE rb_mysql_stmt_execute(int argc, VALUE *argv, VALUE self) { 
     | 
|
| 
       421 
454 
     | 
    
         
             
                return Qnil;
         
     | 
| 
       422 
455 
     | 
    
         
             
              }
         
     | 
| 
       423 
456 
     | 
    
         | 
| 
       424 
     | 
    
         
            -
              // Duplicate the options hash, merge! extra opts, put the copy into the Result object
         
     | 
| 
       425 
     | 
    
         
            -
              current = rb_hash_dup(rb_iv_get(stmt_wrapper->client, "@query_options"));
         
     | 
| 
       426 
     | 
    
         
            -
              (void)RB_GC_GUARD(current);
         
     | 
| 
       427 
     | 
    
         
            -
              Check_Type(current, T_HASH);
         
     | 
| 
       428 
     | 
    
         
            -
             
     | 
| 
       429 
     | 
    
         
            -
              // Merge in hash opts/keyword arguments
         
     | 
| 
       430 
     | 
    
         
            -
              if (!NIL_P(opts)) {
         
     | 
| 
       431 
     | 
    
         
            -
                rb_funcall(current, intern_merge_bang, 1, opts);
         
     | 
| 
       432 
     | 
    
         
            -
              }
         
     | 
| 
       433 
     | 
    
         
            -
             
     | 
| 
       434 
     | 
    
         
            -
              is_streaming = (Qtrue == rb_hash_aref(current, sym_stream));
         
     | 
| 
       435 
457 
     | 
    
         
             
              if (!is_streaming) {
         
     | 
| 
       436 
458 
     | 
    
         
             
                // recieve the whole result set from the server
         
     | 
| 
       437 
459 
     | 
    
         
             
                if (mysql_stmt_store_result(stmt)) {
         
     | 
    
        data/lib/mysql2/2.0/mysql2.so
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/lib/mysql2/2.1/mysql2.so
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/lib/mysql2/2.2/mysql2.so
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/lib/mysql2/2.3/mysql2.so
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/lib/mysql2/2.4/mysql2.so
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/lib/mysql2/2.5/mysql2.so
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/lib/mysql2/mysql2.rb
    CHANGED
    
    
    
        data/lib/mysql2/version.rb
    CHANGED
    
    
| 
         @@ -6,6 +6,10 @@ RSpec.describe Mysql2::Statement do 
     | 
|
| 
       6 
6 
     | 
    
         
             
              end
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
              def stmt_count
         
     | 
| 
      
 9 
     | 
    
         
            +
                # Use the performance schema in MySQL 5.7 and above
         
     | 
| 
      
 10 
     | 
    
         
            +
                @client.query("SELECT COUNT(1) AS count FROM performance_schema.prepared_statements_instances").first['count'].to_i
         
     | 
| 
      
 11 
     | 
    
         
            +
              rescue Mysql2::Error
         
     | 
| 
      
 12 
     | 
    
         
            +
                # Fall back to the global prepapred statement counter
         
     | 
| 
       9 
13 
     | 
    
         
             
                @client.query("SHOW STATUS LIKE 'Prepared_stmt_count'").first['Value'].to_i
         
     | 
| 
       10 
14 
     | 
    
         
             
              end
         
     | 
| 
       11 
15 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       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.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: x86-mswin32-60
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Brian Lopez
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2018- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2018-04-11 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       14 
14 
     | 
    
         
             
            description: 
         
     | 
| 
       15 
15 
     | 
    
         
             
            email:
         
     |