mysql2 0.3.18-x86-mingw32 → 0.3.19-x86-mingw32
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 -13
 - data/LICENSE +21 -0
 - data/ext/mysql2/client.c +43 -48
 - data/ext/mysql2/extconf.rb +14 -3
 - data/ext/mysql2/result.c +48 -62
 - data/ext/mysql2/result.h +1 -2
 - data/lib/mysql2/1.8/mysql2.so +0 -0
 - data/lib/mysql2/1.9/mysql2.so +0 -0
 - 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/client.rb +4 -0
 - data/lib/mysql2/error.rb +1 -1
 - data/lib/mysql2/version.rb +1 -1
 - data/spec/mysql2/client_spec.rb +47 -23
 - data/spec/mysql2/result_spec.rb +15 -6
 - data/vendor/README +1 -1
 - data/vendor/libmysql.dll +0 -0
 - metadata +29 -18
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,15 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
              data.tar.gz: !binary |-
         
     | 
| 
       6 
     | 
    
         
            -
                M2JmNzFiOTUzYzE1ZTAxYWUyYTM4MmNkODY2MjYwMDYyOTNlN2E5YQ==
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: cc3cfbf43e47aa888b1e0fa8c638cfd2175152d8
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 535f79e3d82375cbe20a9e522bd1dc0bd57ca3d5
         
     | 
| 
       7 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       8 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                NDE2ZWI3ZGVlOTcwOTM1NTllYWFkMTIyZWM2ZWFiNjhhZDkzOGUwMmVlNTk4
         
     | 
| 
       11 
     | 
    
         
            -
                MjkyZWM1ZmJmZjBkMDVkNmY1YjVmMzViOTI2YTExMzhmMTZhY2I=
         
     | 
| 
       12 
     | 
    
         
            -
              data.tar.gz: !binary |-
         
     | 
| 
       13 
     | 
    
         
            -
                MTk3N2FhYTc5ZmVhYTIwNjZkYzYwNGIwZWFkM2JiYTc5ZDc1ZTRlYzdlNzA2
         
     | 
| 
       14 
     | 
    
         
            -
                ZjIxZDFjZmVmMjVlOTcxYTA1MDQzNjhkOGJhMGYzOTQ5NDc5MGM3MGFlZjU3
         
     | 
| 
       15 
     | 
    
         
            -
                MTI5MWMzYTJlNmU3MzI0ZjAyMTllNzA0YzhjYTRhZDc4MTE5NjI=
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 81c8d0cd3e8b3bd73ee29a32a544158bf0d589e53a3165e5d324816bfd4a55a344186321fbcbf0ea89f9e4d2f87769f242cc8b6c90d1a1469399cae2a9adfe34
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: a7c6b8b1a17dd0d899ed2c5944d0371afc5c939bf850fa75bcafa4bafe30063a00b2fc256d5743a18c9eb58e90a1de2ce58f55f38f03b81d2f59499095345c50
         
     | 
    
        data/LICENSE
    ADDED
    
    | 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            The MIT License (MIT)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Copyright (c) 2014 Brian Lopez
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining a copy
         
     | 
| 
      
 6 
     | 
    
         
            +
            of this software and associated documentation files (the "Software"), to deal
         
     | 
| 
      
 7 
     | 
    
         
            +
            in the Software without restriction, including without limitation the rights
         
     | 
| 
      
 8 
     | 
    
         
            +
            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
         
     | 
| 
      
 9 
     | 
    
         
            +
            copies of the Software, and to permit persons to whom the Software is
         
     | 
| 
      
 10 
     | 
    
         
            +
            furnished to do so, subject to the following conditions:
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be included in all
         
     | 
| 
      
 13 
     | 
    
         
            +
            copies or substantial portions of the Software.
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
         
     | 
| 
      
 16 
     | 
    
         
            +
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
         
     | 
| 
      
 17 
     | 
    
         
            +
            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
         
     | 
| 
      
 18 
     | 
    
         
            +
            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
         
     | 
| 
      
 19 
     | 
    
         
            +
            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
         
     | 
| 
      
 20 
     | 
    
         
            +
            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
         
     | 
| 
      
 21 
     | 
    
         
            +
            SOFTWARE.
         
     | 
    
        data/ext/mysql2/client.c
    CHANGED
    
    | 
         @@ -16,7 +16,7 @@ 
     | 
|
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
            VALUE cMysql2Client;
         
     | 
| 
       18 
18 
     | 
    
         
             
            extern VALUE mMysql2, cMysql2Error;
         
     | 
| 
       19 
     | 
    
         
            -
            static VALUE sym_id, sym_version, sym_async, sym_symbolize_keys, sym_as, sym_array, sym_stream;
         
     | 
| 
      
 19 
     | 
    
         
            +
            static VALUE sym_id, sym_version, sym_header_version, sym_async, sym_symbolize_keys, sym_as, sym_array, sym_stream;
         
     | 
| 
       20 
20 
     | 
    
         
             
            static ID intern_merge, intern_merge_bang, intern_error_number_eql, intern_sql_state_eql;
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
       22 
22 
     | 
    
         
             
            #ifndef HAVE_RB_HASH_DUP
         
     | 
| 
         @@ -287,7 +287,7 @@ static VALUE rb_mysql_client_escape(RB_MYSQL_UNUSED VALUE klass, VALUE str) { 
     | 
|
| 
       287 
287 
     | 
    
         
             
              oldLen = RSTRING_LEN(str);
         
     | 
| 
       288 
288 
     | 
    
         
             
              newStr = xmalloc(oldLen*2+1);
         
     | 
| 
       289 
289 
     | 
    
         | 
| 
       290 
     | 
    
         
            -
              newLen = mysql_escape_string((char *)newStr,  
     | 
| 
      
 290 
     | 
    
         
            +
              newLen = mysql_escape_string((char *)newStr, RSTRING_PTR(str), oldLen);
         
     | 
| 
       291 
291 
     | 
    
         
             
              if (newLen == oldLen) {
         
     | 
| 
       292 
292 
     | 
    
         
             
                /* no need to return a new ruby string if nothing changed */
         
     | 
| 
       293 
293 
     | 
    
         
             
                xfree(newStr);
         
     | 
| 
         @@ -337,13 +337,13 @@ static VALUE rb_connect(VALUE self, VALUE user, VALUE pass, VALUE host, VALUE po 
     | 
|
| 
       337 
337 
     | 
    
         
             
              VALUE rv;
         
     | 
| 
       338 
338 
     | 
    
         
             
              GET_CLIENT(self);
         
     | 
| 
       339 
339 
     | 
    
         | 
| 
       340 
     | 
    
         
            -
              args.host 
     | 
| 
       341 
     | 
    
         
            -
              args.unix_socket = NIL_P(socket) 
     | 
| 
       342 
     | 
    
         
            -
              args.port 
     | 
| 
       343 
     | 
    
         
            -
              args.user 
     | 
| 
       344 
     | 
    
         
            -
              args.passwd 
     | 
| 
       345 
     | 
    
         
            -
              args.db 
     | 
| 
       346 
     | 
    
         
            -
              args.mysql 
     | 
| 
      
 340 
     | 
    
         
            +
              args.host        = NIL_P(host)     ? NULL : StringValueCStr(host);
         
     | 
| 
      
 341 
     | 
    
         
            +
              args.unix_socket = NIL_P(socket)   ? NULL : StringValueCStr(socket);
         
     | 
| 
      
 342 
     | 
    
         
            +
              args.port        = NIL_P(port)     ? 0    : NUM2INT(port);
         
     | 
| 
      
 343 
     | 
    
         
            +
              args.user        = NIL_P(user)     ? NULL : StringValueCStr(user);
         
     | 
| 
      
 344 
     | 
    
         
            +
              args.passwd      = NIL_P(pass)     ? NULL : StringValueCStr(pass);
         
     | 
| 
      
 345 
     | 
    
         
            +
              args.db          = NIL_P(database) ? NULL : StringValueCStr(database);
         
     | 
| 
      
 346 
     | 
    
         
            +
              args.mysql       = wrapper->client;
         
     | 
| 
       347 
347 
     | 
    
         
             
              args.client_flag = NUM2ULONG(flags);
         
     | 
| 
       348 
348 
     | 
    
         | 
| 
       349 
349 
     | 
    
         
             
              if (wrapper->connect_timeout)
         
     | 
| 
         @@ -669,7 +669,7 @@ static VALUE rb_mysql_client_query(int argc, VALUE * argv, VALUE self) { 
     | 
|
| 
       669 
669 
     | 
    
         
             
              /* ensure the string is in the encoding the connection is expecting */
         
     | 
| 
       670 
670 
     | 
    
         
             
              args.sql = rb_str_export_to_enc(args.sql, conn_enc);
         
     | 
| 
       671 
671 
     | 
    
         
             
            #endif
         
     | 
| 
       672 
     | 
    
         
            -
              args.sql_ptr =  
     | 
| 
      
 672 
     | 
    
         
            +
              args.sql_ptr = RSTRING_PTR(args.sql);
         
     | 
| 
       673 
673 
     | 
    
         
             
              args.sql_len = RSTRING_LEN(args.sql);
         
     | 
| 
       674 
674 
     | 
    
         | 
| 
       675 
675 
     | 
    
         
             
              /* see if this connection is still waiting on a result from a previous query */
         
     | 
| 
         @@ -736,9 +736,14 @@ static VALUE rb_mysql_client_real_escape(VALUE self, VALUE str) { 
     | 
|
| 
       736 
736 
     | 
    
         
             
              oldLen = RSTRING_LEN(str);
         
     | 
| 
       737 
737 
     | 
    
         
             
              newStr = xmalloc(oldLen*2+1);
         
     | 
| 
       738 
738 
     | 
    
         | 
| 
       739 
     | 
    
         
            -
              newLen = mysql_real_escape_string(wrapper->client, (char *)newStr,  
     | 
| 
      
 739 
     | 
    
         
            +
              newLen = mysql_real_escape_string(wrapper->client, (char *)newStr, RSTRING_PTR(str), oldLen);
         
     | 
| 
       740 
740 
     | 
    
         
             
              if (newLen == oldLen) {
         
     | 
| 
       741 
741 
     | 
    
         
             
                /* no need to return a new ruby string if nothing changed */
         
     | 
| 
      
 742 
     | 
    
         
            +
            #ifdef HAVE_RUBY_ENCODING_H
         
     | 
| 
      
 743 
     | 
    
         
            +
                if (default_internal_enc) {
         
     | 
| 
      
 744 
     | 
    
         
            +
                  str = rb_str_export_to_enc(str, default_internal_enc);
         
     | 
| 
      
 745 
     | 
    
         
            +
                }
         
     | 
| 
      
 746 
     | 
    
         
            +
            #endif
         
     | 
| 
       742 
747 
     | 
    
         
             
                xfree(newStr);
         
     | 
| 
       743 
748 
     | 
    
         
             
                return str;
         
     | 
| 
       744 
749 
     | 
    
         
             
              } else {
         
     | 
| 
         @@ -800,17 +805,17 @@ static VALUE _mysql_client_options(VALUE self, int opt, VALUE value) { 
     | 
|
| 
       800 
805 
     | 
    
         
             
                  break;
         
     | 
| 
       801 
806 
     | 
    
         | 
| 
       802 
807 
     | 
    
         
             
                case MYSQL_READ_DEFAULT_FILE:
         
     | 
| 
       803 
     | 
    
         
            -
                  charval = (const char *) 
     | 
| 
      
 808 
     | 
    
         
            +
                  charval = (const char *)StringValueCStr(value);
         
     | 
| 
       804 
809 
     | 
    
         
             
                  retval  = charval;
         
     | 
| 
       805 
810 
     | 
    
         
             
                  break;
         
     | 
| 
       806 
811 
     | 
    
         | 
| 
       807 
812 
     | 
    
         
             
                case MYSQL_READ_DEFAULT_GROUP:
         
     | 
| 
       808 
     | 
    
         
            -
                  charval = (const char *) 
     | 
| 
      
 813 
     | 
    
         
            +
                  charval = (const char *)StringValueCStr(value);
         
     | 
| 
       809 
814 
     | 
    
         
             
                  retval  = charval;
         
     | 
| 
       810 
815 
     | 
    
         
             
                  break;
         
     | 
| 
       811 
816 
     | 
    
         | 
| 
       812 
817 
     | 
    
         
             
                case MYSQL_INIT_COMMAND:
         
     | 
| 
       813 
     | 
    
         
            -
                  charval = (const char *) 
     | 
| 
      
 818 
     | 
    
         
            +
                  charval = (const char *)StringValueCStr(value);
         
     | 
| 
       814 
819 
     | 
    
         
             
                  retval  = charval;
         
     | 
| 
       815 
820 
     | 
    
         
             
                  break;
         
     | 
| 
       816 
821 
     | 
    
         | 
| 
         @@ -843,30 +848,23 @@ static VALUE _mysql_client_options(VALUE self, int opt, VALUE value) { 
     | 
|
| 
       843 
848 
     | 
    
         
             
             *
         
     | 
| 
       844 
849 
     | 
    
         
             
             * Returns a string that represents the client library version.
         
     | 
| 
       845 
850 
     | 
    
         
             
             */
         
     | 
| 
       846 
     | 
    
         
            -
            static VALUE rb_mysql_client_info(VALUE  
     | 
| 
       847 
     | 
    
         
            -
              VALUE version,  
     | 
| 
       848 
     | 
    
         
            -
             
     | 
| 
       849 
     | 
    
         
            -
              rb_encoding *default_internal_enc;
         
     | 
| 
       850 
     | 
    
         
            -
              rb_encoding *conn_enc;
         
     | 
| 
       851 
     | 
    
         
            -
              GET_CLIENT(self);
         
     | 
| 
       852 
     | 
    
         
            -
            #endif
         
     | 
| 
       853 
     | 
    
         
            -
              version = rb_hash_new();
         
     | 
| 
      
 851 
     | 
    
         
            +
            static VALUE rb_mysql_client_info(RB_MYSQL_UNUSED VALUE klass) {
         
     | 
| 
      
 852 
     | 
    
         
            +
              VALUE version_info, version, header_version;
         
     | 
| 
      
 853 
     | 
    
         
            +
              version_info = rb_hash_new();
         
     | 
| 
       854 
854 
     | 
    
         | 
| 
       855 
     | 
    
         
            -
             
     | 
| 
       856 
     | 
    
         
            -
               
     | 
| 
       857 
     | 
    
         
            -
              conn_enc = rb_to_encoding(wrapper->encoding);
         
     | 
| 
       858 
     | 
    
         
            -
            #endif
         
     | 
| 
      
 855 
     | 
    
         
            +
              version = rb_str_new2(mysql_get_client_info());
         
     | 
| 
      
 856 
     | 
    
         
            +
              header_version = rb_str_new2(MYSQL_LINK_VERSION);
         
     | 
| 
       859 
857 
     | 
    
         | 
| 
       860 
     | 
    
         
            -
              rb_hash_aset(version, sym_id, LONG2NUM(mysql_get_client_version()));
         
     | 
| 
       861 
     | 
    
         
            -
              client_info = rb_str_new2(mysql_get_client_info());
         
     | 
| 
       862 
858 
     | 
    
         
             
            #ifdef HAVE_RUBY_ENCODING_H
         
     | 
| 
       863 
     | 
    
         
            -
              rb_enc_associate( 
     | 
| 
       864 
     | 
    
         
            -
               
     | 
| 
       865 
     | 
    
         
            -
                client_info = rb_str_export_to_enc(client_info, default_internal_enc);
         
     | 
| 
       866 
     | 
    
         
            -
              }
         
     | 
| 
      
 859 
     | 
    
         
            +
              rb_enc_associate(version, rb_usascii_encoding());
         
     | 
| 
      
 860 
     | 
    
         
            +
              rb_enc_associate(header_version, rb_usascii_encoding());
         
     | 
| 
       867 
861 
     | 
    
         
             
            #endif
         
     | 
| 
       868 
     | 
    
         
            -
             
     | 
| 
       869 
     | 
    
         
            -
               
     | 
| 
      
 862 
     | 
    
         
            +
             
     | 
| 
      
 863 
     | 
    
         
            +
              rb_hash_aset(version_info, sym_id, LONG2NUM(mysql_get_client_version()));
         
     | 
| 
      
 864 
     | 
    
         
            +
              rb_hash_aset(version_info, sym_version, version);
         
     | 
| 
      
 865 
     | 
    
         
            +
              rb_hash_aset(version_info, sym_header_version, header_version);
         
     | 
| 
      
 866 
     | 
    
         
            +
             
     | 
| 
      
 867 
     | 
    
         
            +
              return version_info;
         
     | 
| 
       870 
868 
     | 
    
         
             
            }
         
     | 
| 
       871 
869 
     | 
    
         | 
| 
       872 
870 
     | 
    
         
             
            /* call-seq:
         
     | 
| 
         @@ -907,14 +905,10 @@ static VALUE rb_mysql_client_server_info(VALUE self) { 
     | 
|
| 
       907 
905 
     | 
    
         
             
             * Return the file descriptor number for this client.
         
     | 
| 
       908 
906 
     | 
    
         
             
             */
         
     | 
| 
       909 
907 
     | 
    
         
             
            static VALUE rb_mysql_client_socket(VALUE self) {
         
     | 
| 
       910 
     | 
    
         
            -
              GET_CLIENT(self);
         
     | 
| 
       911 
908 
     | 
    
         
             
            #ifndef _WIN32
         
     | 
| 
       912 
     | 
    
         
            -
               
     | 
| 
       913 
     | 
    
         
            -
             
     | 
| 
       914 
     | 
    
         
            -
             
     | 
| 
       915 
     | 
    
         
            -
                fd_set_fd = wrapper->client->net.fd;
         
     | 
| 
       916 
     | 
    
         
            -
                return INT2NUM(fd_set_fd);
         
     | 
| 
       917 
     | 
    
         
            -
              }
         
     | 
| 
      
 909 
     | 
    
         
            +
              GET_CLIENT(self);
         
     | 
| 
      
 910 
     | 
    
         
            +
              REQUIRE_CONNECTED(wrapper);
         
     | 
| 
      
 911 
     | 
    
         
            +
              return INT2NUM(wrapper->client->net.fd);
         
     | 
| 
       918 
912 
     | 
    
         
             
            #else
         
     | 
| 
       919 
913 
     | 
    
         
             
              rb_raise(cMysql2Error, "Raw access to the mysql file descriptor isn't supported on Windows");
         
     | 
| 
       920 
914 
     | 
    
         
             
            #endif
         
     | 
| 
         @@ -987,7 +981,7 @@ static VALUE rb_mysql_client_select_db(VALUE self, VALUE db) 
     | 
|
| 
       987 
981 
     | 
    
         
             
              REQUIRE_CONNECTED(wrapper);
         
     | 
| 
       988 
982 
     | 
    
         | 
| 
       989 
983 
     | 
    
         
             
              args.mysql = wrapper->client;
         
     | 
| 
       990 
     | 
    
         
            -
              args.db =  
     | 
| 
      
 984 
     | 
    
         
            +
              args.db = StringValueCStr(db);
         
     | 
| 
       991 
985 
     | 
    
         | 
| 
       992 
986 
     | 
    
         
             
              if (rb_thread_call_without_gvl(nogvl_select_db, &args, RUBY_UBF_IO, 0) == Qfalse)
         
     | 
| 
       993 
987 
     | 
    
         
             
                rb_raise_mysql2_error(wrapper);
         
     | 
| 
         @@ -1183,11 +1177,11 @@ static VALUE set_ssl_options(VALUE self, VALUE key, VALUE cert, VALUE ca, VALUE 
     | 
|
| 
       1183 
1177 
     | 
    
         
             
              GET_CLIENT(self);
         
     | 
| 
       1184 
1178 
     | 
    
         | 
| 
       1185 
1179 
     | 
    
         
             
              mysql_ssl_set(wrapper->client,
         
     | 
| 
       1186 
     | 
    
         
            -
                  NIL_P(key) 
     | 
| 
       1187 
     | 
    
         
            -
                  NIL_P(cert) 
     | 
| 
       1188 
     | 
    
         
            -
                  NIL_P(ca) 
     | 
| 
       1189 
     | 
    
         
            -
                  NIL_P(capath) ? NULL :  
     | 
| 
       1190 
     | 
    
         
            -
                  NIL_P(cipher) ? NULL :  
     | 
| 
      
 1180 
     | 
    
         
            +
                  NIL_P(key)    ? NULL : StringValueCStr(key),
         
     | 
| 
      
 1181 
     | 
    
         
            +
                  NIL_P(cert)   ? NULL : StringValueCStr(cert),
         
     | 
| 
      
 1182 
     | 
    
         
            +
                  NIL_P(ca)     ? NULL : StringValueCStr(ca),
         
     | 
| 
      
 1183 
     | 
    
         
            +
                  NIL_P(capath) ? NULL : StringValueCStr(capath),
         
     | 
| 
      
 1184 
     | 
    
         
            +
                  NIL_P(cipher) ? NULL : StringValueCStr(cipher));
         
     | 
| 
       1191 
1185 
     | 
    
         | 
| 
       1192 
1186 
     | 
    
         
             
              return self;
         
     | 
| 
       1193 
1187 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1254,12 +1248,12 @@ void init_mysql2_client() { 
     | 
|
| 
       1254 
1248 
     | 
    
         
             
              rb_define_alloc_func(cMysql2Client, allocate);
         
     | 
| 
       1255 
1249 
     | 
    
         | 
| 
       1256 
1250 
     | 
    
         
             
              rb_define_singleton_method(cMysql2Client, "escape", rb_mysql_client_escape, 1);
         
     | 
| 
      
 1251 
     | 
    
         
            +
              rb_define_singleton_method(cMysql2Client, "info", rb_mysql_client_info, 0);
         
     | 
| 
       1257 
1252 
     | 
    
         | 
| 
       1258 
1253 
     | 
    
         
             
              rb_define_method(cMysql2Client, "close", rb_mysql_client_close, 0);
         
     | 
| 
       1259 
1254 
     | 
    
         
             
              rb_define_method(cMysql2Client, "query", rb_mysql_client_query, -1);
         
     | 
| 
       1260 
1255 
     | 
    
         
             
              rb_define_method(cMysql2Client, "abandon_results!", rb_mysql_client_abandon_results, 0);
         
     | 
| 
       1261 
1256 
     | 
    
         
             
              rb_define_method(cMysql2Client, "escape", rb_mysql_client_real_escape, 1);
         
     | 
| 
       1262 
     | 
    
         
            -
              rb_define_method(cMysql2Client, "info", rb_mysql_client_info, 0);
         
     | 
| 
       1263 
1257 
     | 
    
         
             
              rb_define_method(cMysql2Client, "server_info", rb_mysql_client_server_info, 0);
         
     | 
| 
       1264 
1258 
     | 
    
         
             
              rb_define_method(cMysql2Client, "socket", rb_mysql_client_socket, 0);
         
     | 
| 
       1265 
1259 
     | 
    
         
             
              rb_define_method(cMysql2Client, "async_result", rb_mysql_client_async_result, 0);
         
     | 
| 
         @@ -1293,6 +1287,7 @@ void init_mysql2_client() { 
     | 
|
| 
       1293 
1287 
     | 
    
         | 
| 
       1294 
1288 
     | 
    
         
             
              sym_id              = ID2SYM(rb_intern("id"));
         
     | 
| 
       1295 
1289 
     | 
    
         
             
              sym_version         = ID2SYM(rb_intern("version"));
         
     | 
| 
      
 1290 
     | 
    
         
            +
              sym_header_version  = ID2SYM(rb_intern("header_version"));
         
     | 
| 
       1296 
1291 
     | 
    
         
             
              sym_async           = ID2SYM(rb_intern("async"));
         
     | 
| 
       1297 
1292 
     | 
    
         
             
              sym_symbolize_keys  = ID2SYM(rb_intern("symbolize_keys"));
         
     | 
| 
       1298 
1293 
     | 
    
         
             
              sym_as              = ID2SYM(rb_intern("as"));
         
     | 
    
        data/ext/mysql2/extconf.rb
    CHANGED
    
    | 
         @@ -2,7 +2,14 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require 'mkmf'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            def asplode lib
         
     | 
| 
       5 
     | 
    
         
            -
               
     | 
| 
      
 5 
     | 
    
         
            +
              if RUBY_PLATFORM =~ /mingw|mswin/
         
     | 
| 
      
 6 
     | 
    
         
            +
                abort "-----\n#{lib} is missing. please check your installation of mysql and try again.\n-----"
         
     | 
| 
      
 7 
     | 
    
         
            +
              elsif RUBY_PLATFORM =~ /darwin/
         
     | 
| 
      
 8 
     | 
    
         
            +
                abort "-----\n#{lib} is missing. Try 'brew install mysql', check your installation of mysql and try again.\n-----"
         
     | 
| 
      
 9 
     | 
    
         
            +
              else
         
     | 
| 
      
 10 
     | 
    
         
            +
                abort "-----\n#{lib} is missing. Try 'apt-get install libmysqlclient-dev' or
         
     | 
| 
      
 11 
     | 
    
         
            +
            'yum install mysql-devel', check your installation of mysql and try again.\n-----"
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
       6 
13 
     | 
    
         
             
            end
         
     | 
| 
       7 
14 
     | 
    
         | 
| 
       8 
15 
     | 
    
         
             
            # 2.0-only
         
     | 
| 
         @@ -29,7 +36,7 @@ dirs = ENV['PATH'].split(File::PATH_SEPARATOR) + %w[ 
     | 
|
| 
       29 
36 
     | 
    
         
             
              /usr/local/lib/mysql5*
         
     | 
| 
       30 
37 
     | 
    
         
             
            ].map{|dir| "#{dir}/bin" }
         
     | 
| 
       31 
38 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
            GLOB = "{#{dirs.join(',')}}/{mysql_config,mysql_config5}"
         
     | 
| 
      
 39 
     | 
    
         
            +
            GLOB = "{#{dirs.join(',')}}/{mysql_config,mysql_config5,mariadb_config}"
         
     | 
| 
       33 
40 
     | 
    
         | 
| 
       34 
41 
     | 
    
         
             
            # If the user has provided a --with-mysql-dir argument, we must respect it or fail.
         
     | 
| 
       35 
42 
     | 
    
         
             
            inc, lib = dir_config('mysql')
         
     | 
| 
         @@ -67,10 +74,14 @@ elsif mc = (with_config('mysql-config') || Dir[GLOB].first) 
     | 
|
| 
       67 
74 
     | 
    
         
             
            else
         
     | 
| 
       68 
75 
     | 
    
         
             
              inc, lib = dir_config('mysql', '/usr/local')
         
     | 
| 
       69 
76 
     | 
    
         
             
              libs = ['m', 'z', 'socket', 'nsl', 'mygcc']
         
     | 
| 
      
 77 
     | 
    
         
            +
              found = false
         
     | 
| 
       70 
78 
     | 
    
         
             
              while not find_library('mysqlclient', 'mysql_query', lib, "#{lib}/mysql") do
         
     | 
| 
       71 
79 
     | 
    
         
             
                exit 1 if libs.empty?
         
     | 
| 
       72 
     | 
    
         
            -
                have_library(libs.shift)
         
     | 
| 
      
 80 
     | 
    
         
            +
                found ||= have_library(libs.shift)
         
     | 
| 
       73 
81 
     | 
    
         
             
              end
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
              asplode("mysql client") unless found
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
       74 
85 
     | 
    
         
             
              rpath_dir = lib
         
     | 
| 
       75 
86 
     | 
    
         
             
            end
         
     | 
| 
       76 
87 
     | 
    
         | 
    
        data/ext/mysql2/result.c
    CHANGED
    
    | 
         @@ -50,6 +50,10 @@ static rb_encoding *binaryEncoding; 
     | 
|
| 
       50 
50 
     | 
    
         
             
            #define MYSQL2_MIN_TIME 62171150401ULL
         
     | 
| 
       51 
51 
     | 
    
         
             
            #endif
         
     | 
| 
       52 
52 
     | 
    
         | 
| 
      
 53 
     | 
    
         
            +
            #define GET_RESULT(obj) \
         
     | 
| 
      
 54 
     | 
    
         
            +
              mysql2_result_wrapper *wrapper; \
         
     | 
| 
      
 55 
     | 
    
         
            +
              Data_Get_Struct(self, mysql2_result_wrapper, wrapper);
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
       53 
57 
     | 
    
         
             
            static VALUE cMysql2Result;
         
     | 
| 
       54 
58 
     | 
    
         
             
            static VALUE cBigDecimal, cDate, cDateTime;
         
     | 
| 
       55 
59 
     | 
    
         
             
            static VALUE opt_decimal_zero, opt_float_zero, opt_time_year, opt_time_month, opt_utc_offset;
         
     | 
| 
         @@ -103,9 +107,8 @@ static void *nogvl_fetch_row(void *ptr) { 
     | 
|
| 
       103 
107 
     | 
    
         
             
            }
         
     | 
| 
       104 
108 
     | 
    
         | 
| 
       105 
109 
     | 
    
         
             
            static VALUE rb_mysql_result_fetch_field(VALUE self, unsigned int idx, short int symbolize_keys) {
         
     | 
| 
       106 
     | 
    
         
            -
              mysql2_result_wrapper * wrapper;
         
     | 
| 
       107 
110 
     | 
    
         
             
              VALUE rb_field;
         
     | 
| 
       108 
     | 
    
         
            -
               
     | 
| 
      
 111 
     | 
    
         
            +
              GET_RESULT(self);
         
     | 
| 
       109 
112 
     | 
    
         | 
| 
       110 
113 
     | 
    
         
             
              if (wrapper->fields == Qnil) {
         
     | 
| 
       111 
114 
     | 
    
         
             
                wrapper->numberOfFields = mysql_num_fields(wrapper->result);
         
     | 
| 
         @@ -193,7 +196,6 @@ static unsigned int msec_char_to_uint(char *msec_char, size_t len) 
     | 
|
| 
       193 
196 
     | 
    
         | 
| 
       194 
197 
     | 
    
         
             
            static VALUE rb_mysql_result_fetch_row(VALUE self, ID db_timezone, ID app_timezone, int symbolizeKeys, int asArray, int castBool, int cast, MYSQL_FIELD * fields) {
         
     | 
| 
       195 
198 
     | 
    
         
             
              VALUE rowVal;
         
     | 
| 
       196 
     | 
    
         
            -
              mysql2_result_wrapper * wrapper;
         
     | 
| 
       197 
199 
     | 
    
         
             
              MYSQL_ROW row;
         
     | 
| 
       198 
200 
     | 
    
         
             
              unsigned int i = 0;
         
     | 
| 
       199 
201 
     | 
    
         
             
              unsigned long * fieldLengths;
         
     | 
| 
         @@ -202,7 +204,7 @@ static VALUE rb_mysql_result_fetch_row(VALUE self, ID db_timezone, ID app_timezo 
     | 
|
| 
       202 
204 
     | 
    
         
             
              rb_encoding *default_internal_enc;
         
     | 
| 
       203 
205 
     | 
    
         
             
              rb_encoding *conn_enc;
         
     | 
| 
       204 
206 
     | 
    
         
             
            #endif
         
     | 
| 
       205 
     | 
    
         
            -
               
     | 
| 
      
 207 
     | 
    
         
            +
              GET_RESULT(self);
         
     | 
| 
       206 
208 
     | 
    
         | 
| 
       207 
209 
     | 
    
         
             
            #ifdef HAVE_RUBY_ENCODING_H
         
     | 
| 
       208 
210 
     | 
    
         
             
              default_internal_enc = rb_default_internal_encoding();
         
     | 
| 
         @@ -413,12 +415,11 @@ static VALUE rb_mysql_result_fetch_row(VALUE self, ID db_timezone, ID app_timezo 
     | 
|
| 
       413 
415 
     | 
    
         
             
            }
         
     | 
| 
       414 
416 
     | 
    
         | 
| 
       415 
417 
     | 
    
         
             
            static VALUE rb_mysql_result_fetch_fields(VALUE self) {
         
     | 
| 
       416 
     | 
    
         
            -
              mysql2_result_wrapper * wrapper;
         
     | 
| 
       417 
418 
     | 
    
         
             
              unsigned int i = 0;
         
     | 
| 
       418 
419 
     | 
    
         
             
              short int symbolizeKeys = 0;
         
     | 
| 
       419 
420 
     | 
    
         
             
              VALUE defaults;
         
     | 
| 
       420 
421 
     | 
    
         | 
| 
       421 
     | 
    
         
            -
               
     | 
| 
      
 422 
     | 
    
         
            +
              GET_RESULT(self);
         
     | 
| 
       422 
423 
     | 
    
         | 
| 
       423 
424 
     | 
    
         
             
              defaults = rb_iv_get(self, "@query_options");
         
     | 
| 
       424 
425 
     | 
    
         
             
              Check_Type(defaults, T_HASH);
         
     | 
| 
         @@ -443,13 +444,12 @@ static VALUE rb_mysql_result_fetch_fields(VALUE self) { 
     | 
|
| 
       443 
444 
     | 
    
         
             
            static VALUE rb_mysql_result_each(int argc, VALUE * argv, VALUE self) {
         
     | 
| 
       444 
445 
     | 
    
         
             
              VALUE defaults, opts, block;
         
     | 
| 
       445 
446 
     | 
    
         
             
              ID db_timezone, app_timezone, dbTz, appTz;
         
     | 
| 
       446 
     | 
    
         
            -
              mysql2_result_wrapper * wrapper;
         
     | 
| 
       447 
447 
     | 
    
         
             
              unsigned long i;
         
     | 
| 
       448 
448 
     | 
    
         
             
              const char * errstr;
         
     | 
| 
       449 
     | 
    
         
            -
              int symbolizeKeys 
     | 
| 
      
 449 
     | 
    
         
            +
              int symbolizeKeys, asArray, castBool, cacheRows, cast;
         
     | 
| 
       450 
450 
     | 
    
         
             
              MYSQL_FIELD * fields = NULL;
         
     | 
| 
       451 
451 
     | 
    
         | 
| 
       452 
     | 
    
         
            -
               
     | 
| 
      
 452 
     | 
    
         
            +
              GET_RESULT(self);
         
     | 
| 
       453 
453 
     | 
    
         | 
| 
       454 
454 
     | 
    
         
             
              defaults = rb_iv_get(self, "@query_options");
         
     | 
| 
       455 
455 
     | 
    
         
             
              Check_Type(defaults, T_HASH);
         
     | 
| 
         @@ -459,32 +459,14 @@ static VALUE rb_mysql_result_each(int argc, VALUE * argv, VALUE self) { 
     | 
|
| 
       459 
459 
     | 
    
         
             
                opts = defaults;
         
     | 
| 
       460 
460 
     | 
    
         
             
              }
         
     | 
| 
       461 
461 
     | 
    
         | 
| 
       462 
     | 
    
         
            -
               
     | 
| 
       463 
     | 
    
         
            -
             
     | 
| 
       464 
     | 
    
         
            -
               
     | 
| 
       465 
     | 
    
         
            -
             
     | 
| 
       466 
     | 
    
         
            -
               
     | 
| 
       467 
     | 
    
         
            -
                asArray = 1;
         
     | 
| 
       468 
     | 
    
         
            -
              }
         
     | 
| 
       469 
     | 
    
         
            -
             
     | 
| 
       470 
     | 
    
         
            -
              if (rb_hash_aref(opts, sym_cast_booleans) == Qtrue) {
         
     | 
| 
       471 
     | 
    
         
            -
                castBool = 1;
         
     | 
| 
       472 
     | 
    
         
            -
              }
         
     | 
| 
       473 
     | 
    
         
            -
             
     | 
| 
       474 
     | 
    
         
            -
              if (rb_hash_aref(opts, sym_cache_rows) == Qfalse) {
         
     | 
| 
       475 
     | 
    
         
            -
                cacheRows = 0;
         
     | 
| 
       476 
     | 
    
         
            -
              }
         
     | 
| 
       477 
     | 
    
         
            -
             
     | 
| 
       478 
     | 
    
         
            -
              if (rb_hash_aref(opts, sym_cast) == Qfalse) {
         
     | 
| 
       479 
     | 
    
         
            -
                cast = 0;
         
     | 
| 
       480 
     | 
    
         
            -
              }
         
     | 
| 
       481 
     | 
    
         
            -
             
     | 
| 
       482 
     | 
    
         
            -
              if (rb_hash_aref(opts, sym_stream) == Qtrue) {
         
     | 
| 
       483 
     | 
    
         
            -
                streaming = 1;
         
     | 
| 
       484 
     | 
    
         
            -
              }
         
     | 
| 
      
 462 
     | 
    
         
            +
              symbolizeKeys = RTEST(rb_hash_aref(opts, sym_symbolize_keys));
         
     | 
| 
      
 463 
     | 
    
         
            +
              asArray       = rb_hash_aref(opts, sym_as) == sym_array;
         
     | 
| 
      
 464 
     | 
    
         
            +
              castBool      = RTEST(rb_hash_aref(opts, sym_cast_booleans));
         
     | 
| 
      
 465 
     | 
    
         
            +
              cacheRows     = RTEST(rb_hash_aref(opts, sym_cache_rows));
         
     | 
| 
      
 466 
     | 
    
         
            +
              cast          = RTEST(rb_hash_aref(opts, sym_cast));
         
     | 
| 
       485 
467 
     | 
    
         | 
| 
       486 
     | 
    
         
            -
              if ( 
     | 
| 
       487 
     | 
    
         
            -
                rb_warn(" 
     | 
| 
      
 468 
     | 
    
         
            +
              if (wrapper->is_streaming && cacheRows) {
         
     | 
| 
      
 469 
     | 
    
         
            +
                rb_warn(":cache_rows is ignored if :stream is true");
         
     | 
| 
       488 
470 
     | 
    
         
             
              }
         
     | 
| 
       489 
471 
     | 
    
         | 
| 
       490 
472 
     | 
    
         
             
              dbTz = rb_hash_aref(opts, sym_database_timezone);
         
     | 
| 
         @@ -508,23 +490,12 @@ static VALUE rb_mysql_result_each(int argc, VALUE * argv, VALUE self) { 
     | 
|
| 
       508 
490 
     | 
    
         
             
                app_timezone = Qnil;
         
     | 
| 
       509 
491 
     | 
    
         
             
              }
         
     | 
| 
       510 
492 
     | 
    
         | 
| 
       511 
     | 
    
         
            -
              if (wrapper-> 
     | 
| 
       512 
     | 
    
         
            -
                 
     | 
| 
       513 
     | 
    
         
            -
             
     | 
| 
       514 
     | 
    
         
            -
                  /* until we've finished fetching all rows */
         
     | 
| 
       515 
     | 
    
         
            -
                  wrapper->numberOfRows = 0;
         
     | 
| 
      
 493 
     | 
    
         
            +
              if (wrapper->is_streaming) {
         
     | 
| 
      
 494 
     | 
    
         
            +
                /* When streaming, we will only yield rows, not return them. */
         
     | 
| 
      
 495 
     | 
    
         
            +
                if (wrapper->rows == Qnil) {
         
     | 
| 
       516 
496 
     | 
    
         
             
                  wrapper->rows = rb_ary_new();
         
     | 
| 
       517 
     | 
    
         
            -
                } else {
         
     | 
| 
       518 
     | 
    
         
            -
                  wrapper->numberOfRows = mysql_num_rows(wrapper->result);
         
     | 
| 
       519 
     | 
    
         
            -
                  if (wrapper->numberOfRows == 0) {
         
     | 
| 
       520 
     | 
    
         
            -
                    wrapper->rows = rb_ary_new();
         
     | 
| 
       521 
     | 
    
         
            -
                    return wrapper->rows;
         
     | 
| 
       522 
     | 
    
         
            -
                  }
         
     | 
| 
       523 
     | 
    
         
            -
                  wrapper->rows = rb_ary_new2(wrapper->numberOfRows);
         
     | 
| 
       524 
497 
     | 
    
         
             
                }
         
     | 
| 
       525 
     | 
    
         
            -
              }
         
     | 
| 
       526 
498 
     | 
    
         | 
| 
       527 
     | 
    
         
            -
              if (streaming) {
         
     | 
| 
       528 
499 
     | 
    
         
             
                if (!wrapper->streamingComplete) {
         
     | 
| 
       529 
500 
     | 
    
         
             
                  VALUE row;
         
     | 
| 
       530 
501 
     | 
    
         | 
| 
         @@ -532,16 +503,15 @@ static VALUE rb_mysql_result_each(int argc, VALUE * argv, VALUE self) { 
     | 
|
| 
       532 
503 
     | 
    
         | 
| 
       533 
504 
     | 
    
         
             
                  do {
         
     | 
| 
       534 
505 
     | 
    
         
             
                    row = rb_mysql_result_fetch_row(self, db_timezone, app_timezone, symbolizeKeys, asArray, castBool, cast, fields);
         
     | 
| 
       535 
     | 
    
         
            -
             
     | 
| 
       536 
     | 
    
         
            -
             
     | 
| 
       537 
     | 
    
         
            -
                       
     | 
| 
       538 
     | 
    
         
            -
             
     | 
| 
      
 506 
     | 
    
         
            +
                    if (row != Qnil) {
         
     | 
| 
      
 507 
     | 
    
         
            +
                      wrapper->numberOfRows++;
         
     | 
| 
      
 508 
     | 
    
         
            +
                      if (block != Qnil) {
         
     | 
| 
      
 509 
     | 
    
         
            +
                        rb_yield(row);
         
     | 
| 
      
 510 
     | 
    
         
            +
                      }
         
     | 
| 
       539 
511 
     | 
    
         
             
                    }
         
     | 
| 
       540 
512 
     | 
    
         
             
                  } while(row != Qnil);
         
     | 
| 
       541 
513 
     | 
    
         | 
| 
       542 
514 
     | 
    
         
             
                  rb_mysql_result_free_result(wrapper);
         
     | 
| 
       543 
     | 
    
         
            -
             
     | 
| 
       544 
     | 
    
         
            -
                  wrapper->numberOfRows = wrapper->lastRowProcessed;
         
     | 
| 
       545 
515 
     | 
    
         
             
                  wrapper->streamingComplete = 1;
         
     | 
| 
       546 
516 
     | 
    
         | 
| 
       547 
517 
     | 
    
         
             
                  // Check for errors, the connection might have gone out from under us
         
     | 
| 
         @@ -554,6 +524,15 @@ static VALUE rb_mysql_result_each(int argc, VALUE * argv, VALUE self) { 
     | 
|
| 
       554 
524 
     | 
    
         
             
                  rb_raise(cMysql2Error, "You have already fetched all the rows for this query and streaming is true. (to reiterate you must requery).");
         
     | 
| 
       555 
525 
     | 
    
         
             
                }
         
     | 
| 
       556 
526 
     | 
    
         
             
              } else {
         
     | 
| 
      
 527 
     | 
    
         
            +
                if (wrapper->lastRowProcessed == 0) {
         
     | 
| 
      
 528 
     | 
    
         
            +
                  wrapper->numberOfRows = mysql_num_rows(wrapper->result);
         
     | 
| 
      
 529 
     | 
    
         
            +
                  if (wrapper->numberOfRows == 0) {
         
     | 
| 
      
 530 
     | 
    
         
            +
                    wrapper->rows = rb_ary_new();
         
     | 
| 
      
 531 
     | 
    
         
            +
                    return wrapper->rows;
         
     | 
| 
      
 532 
     | 
    
         
            +
                  }
         
     | 
| 
      
 533 
     | 
    
         
            +
                  wrapper->rows = rb_ary_new2(wrapper->numberOfRows);
         
     | 
| 
      
 534 
     | 
    
         
            +
                }
         
     | 
| 
      
 535 
     | 
    
         
            +
             
     | 
| 
       557 
536 
     | 
    
         
             
                if (cacheRows && wrapper->lastRowProcessed == wrapper->numberOfRows) {
         
     | 
| 
       558 
537 
     | 
    
         
             
                  /* we've already read the entire dataset from the C result into our */
         
     | 
| 
       559 
538 
     | 
    
         
             
                  /* internal array. Lets hand that over to the user since it's ready to go */
         
     | 
| 
         @@ -598,17 +577,19 @@ static VALUE rb_mysql_result_each(int argc, VALUE * argv, VALUE self) { 
     | 
|
| 
       598 
577 
     | 
    
         
             
            }
         
     | 
| 
       599 
578 
     | 
    
         | 
| 
       600 
579 
     | 
    
         
             
            static VALUE rb_mysql_result_count(VALUE self) {
         
     | 
| 
       601 
     | 
    
         
            -
               
     | 
| 
      
 580 
     | 
    
         
            +
              GET_RESULT(self);
         
     | 
| 
      
 581 
     | 
    
         
            +
             
     | 
| 
      
 582 
     | 
    
         
            +
              if (wrapper->is_streaming) {
         
     | 
| 
      
 583 
     | 
    
         
            +
                /* This is an unsigned long per result.h */
         
     | 
| 
      
 584 
     | 
    
         
            +
                return ULONG2NUM(wrapper->numberOfRows);
         
     | 
| 
      
 585 
     | 
    
         
            +
              }
         
     | 
| 
       602 
586 
     | 
    
         | 
| 
       603 
     | 
    
         
            -
              GetMysql2Result(self, wrapper);
         
     | 
| 
       604 
587 
     | 
    
         
             
              if (wrapper->resultFreed) {
         
     | 
| 
       605 
     | 
    
         
            -
                 
     | 
| 
       606 
     | 
    
         
            -
             
     | 
| 
       607 
     | 
    
         
            -
                } else {
         
     | 
| 
       608 
     | 
    
         
            -
                  return LONG2NUM(RARRAY_LEN(wrapper->rows));
         
     | 
| 
       609 
     | 
    
         
            -
                }
         
     | 
| 
      
 588 
     | 
    
         
            +
                /* Ruby arrays have platform signed long length */
         
     | 
| 
      
 589 
     | 
    
         
            +
                return LONG2NUM(RARRAY_LEN(wrapper->rows));
         
     | 
| 
       610 
590 
     | 
    
         
             
              } else {
         
     | 
| 
       611 
     | 
    
         
            -
                 
     | 
| 
      
 591 
     | 
    
         
            +
                /* MySQL returns an unsigned 64-bit long here */
         
     | 
| 
      
 592 
     | 
    
         
            +
                return ULL2NUM(mysql_num_rows(wrapper->result));
         
     | 
| 
       612 
593 
     | 
    
         
             
              }
         
     | 
| 
       613 
594 
     | 
    
         
             
            }
         
     | 
| 
       614 
595 
     | 
    
         | 
| 
         @@ -616,6 +597,7 @@ static VALUE rb_mysql_result_count(VALUE self) { 
     | 
|
| 
       616 
597 
     | 
    
         
             
            VALUE rb_mysql_result_to_obj(VALUE client, VALUE encoding, VALUE options, MYSQL_RES *r) {
         
     | 
| 
       617 
598 
     | 
    
         
             
              VALUE obj;
         
     | 
| 
       618 
599 
     | 
    
         
             
              mysql2_result_wrapper * wrapper;
         
     | 
| 
      
 600 
     | 
    
         
            +
             
     | 
| 
       619 
601 
     | 
    
         
             
              obj = Data_Make_Struct(cMysql2Result, mysql2_result_wrapper, rb_mysql_result_mark, rb_mysql_result_free, wrapper);
         
     | 
| 
       620 
602 
     | 
    
         
             
              wrapper->numberOfFields = 0;
         
     | 
| 
       621 
603 
     | 
    
         
             
              wrapper->numberOfRows = 0;
         
     | 
| 
         @@ -634,6 +616,10 @@ VALUE rb_mysql_result_to_obj(VALUE client, VALUE encoding, VALUE options, MYSQL_ 
     | 
|
| 
       634 
616 
     | 
    
         | 
| 
       635 
617 
     | 
    
         
             
              rb_iv_set(obj, "@query_options", options);
         
     | 
| 
       636 
618 
     | 
    
         | 
| 
      
 619 
     | 
    
         
            +
              /* Options that cannot be changed in results.each(...) { |row| }
         
     | 
| 
      
 620 
     | 
    
         
            +
               * should be processed here. */
         
     | 
| 
      
 621 
     | 
    
         
            +
              wrapper->is_streaming = (rb_hash_aref(options, sym_stream) == Qtrue ? 1 : 0);
         
     | 
| 
      
 622 
     | 
    
         
            +
             
     | 
| 
       637 
623 
     | 
    
         
             
              return obj;
         
     | 
| 
       638 
624 
     | 
    
         
             
            }
         
     | 
| 
       639 
625 
     | 
    
         | 
    
        data/ext/mysql2/result.h
    CHANGED
    
    | 
         @@ -12,12 +12,11 @@ typedef struct { 
     | 
|
| 
       12 
12 
     | 
    
         
             
              unsigned int numberOfFields;
         
     | 
| 
       13 
13 
     | 
    
         
             
              unsigned long numberOfRows;
         
     | 
| 
       14 
14 
     | 
    
         
             
              unsigned long lastRowProcessed;
         
     | 
| 
      
 15 
     | 
    
         
            +
              char is_streaming;
         
     | 
| 
       15 
16 
     | 
    
         
             
              char streamingComplete;
         
     | 
| 
       16 
17 
     | 
    
         
             
              char resultFreed;
         
     | 
| 
       17 
18 
     | 
    
         
             
              MYSQL_RES *result;
         
     | 
| 
       18 
19 
     | 
    
         
             
              mysql_client_wrapper *client_wrapper;
         
     | 
| 
       19 
20 
     | 
    
         
             
            } mysql2_result_wrapper;
         
     | 
| 
       20 
21 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
            #define GetMysql2Result(obj, sval) (sval = (mysql2_result_wrapper*)DATA_PTR(obj));
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
22 
     | 
    
         
             
            #endif
         
     | 
    
        data/lib/mysql2/1.8/mysql2.so
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/lib/mysql2/1.9/mysql2.so
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/lib/mysql2/2.0/mysql2.so
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/lib/mysql2/2.1/mysql2.so
    CHANGED
    
    | 
         Binary file 
     | 
| 
         Binary file 
     | 
    
        data/lib/mysql2/client.rb
    CHANGED
    
    
    
        data/lib/mysql2/error.rb
    CHANGED
    
    | 
         @@ -30,7 +30,7 @@ module Mysql2 
     | 
|
| 
       30 
30 
     | 
    
         
             
                # variable.
         
     | 
| 
       31 
31 
     | 
    
         
             
                #
         
     | 
| 
       32 
32 
     | 
    
         
             
                # See http://dev.mysql.com/doc/refman/5.5/en/charset-errors.html for
         
     | 
| 
       33 
     | 
    
         
            -
                # more  
     | 
| 
      
 33 
     | 
    
         
            +
                # more context.
         
     | 
| 
       34 
34 
     | 
    
         
             
                #
         
     | 
| 
       35 
35 
     | 
    
         
             
                # Before MySQL 5.5 error message template strings are in whatever encoding
         
     | 
| 
       36 
36 
     | 
    
         
             
                # is associated with the error message language.
         
     | 
    
        data/lib/mysql2/version.rb
    CHANGED
    
    
    
        data/spec/mysql2/client_spec.rb
    CHANGED
    
    | 
         @@ -66,12 +66,13 @@ describe Mysql2::Client do 
     | 
|
| 
       66 
66 
     | 
    
         
             
                  end
         
     | 
| 
       67 
67 
     | 
    
         
             
                end
         
     | 
| 
       68 
68 
     | 
    
         
             
                client = klient.new
         
     | 
| 
       69 
     | 
    
         
            -
                 
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
      
 69 
     | 
    
         
            +
                client_flags = Mysql2::Client::REMEMBER_OPTIONS |
         
     | 
| 
      
 70 
     | 
    
         
            +
                               Mysql2::Client::LONG_PASSWORD |
         
     | 
| 
      
 71 
     | 
    
         
            +
                               Mysql2::Client::LONG_FLAG |
         
     | 
| 
      
 72 
     | 
    
         
            +
                               Mysql2::Client::TRANSACTIONS |
         
     | 
| 
      
 73 
     | 
    
         
            +
                               Mysql2::Client::PROTOCOL_41 |
         
     | 
| 
      
 74 
     | 
    
         
            +
                               Mysql2::Client::SECURE_CONNECTION
         
     | 
| 
      
 75 
     | 
    
         
            +
                client.connect_args.last[6].should eql(client_flags)
         
     | 
| 
       75 
76 
     | 
    
         
             
              end
         
     | 
| 
       76 
77 
     | 
    
         | 
| 
       77 
78 
     | 
    
         
             
              it "should execute init command" do
         
     | 
| 
         @@ -614,6 +615,21 @@ describe Mysql2::Client do 
     | 
|
| 
       614 
615 
     | 
    
         | 
| 
       615 
616 
     | 
    
         
             
                    @multi_client.more_results?.should be_false
         
     | 
| 
       616 
617 
     | 
    
         
             
                  end
         
     | 
| 
      
 618 
     | 
    
         
            +
             
     | 
| 
      
 619 
     | 
    
         
            +
                  it "#more_results? should work with stored procedures" do
         
     | 
| 
      
 620 
     | 
    
         
            +
                    @multi_client.query("DROP PROCEDURE IF EXISTS test_proc")
         
     | 
| 
      
 621 
     | 
    
         
            +
                    @multi_client.query("CREATE PROCEDURE test_proc() BEGIN SELECT 1 AS 'set_1'; SELECT 2 AS 'set_2'; END")
         
     | 
| 
      
 622 
     | 
    
         
            +
                    @multi_client.query("CALL test_proc()").first.should eql({ 'set_1' => 1 })
         
     | 
| 
      
 623 
     | 
    
         
            +
                    @multi_client.more_results?.should be_true
         
     | 
| 
      
 624 
     | 
    
         
            +
             
     | 
| 
      
 625 
     | 
    
         
            +
                    @multi_client.next_result
         
     | 
| 
      
 626 
     | 
    
         
            +
                    @multi_client.store_result.first.should eql({ 'set_2' => 2 })
         
     | 
| 
      
 627 
     | 
    
         
            +
             
     | 
| 
      
 628 
     | 
    
         
            +
                    @multi_client.next_result
         
     | 
| 
      
 629 
     | 
    
         
            +
                    @multi_client.store_result.should be_nil # this is the result from CALL itself
         
     | 
| 
      
 630 
     | 
    
         
            +
             
     | 
| 
      
 631 
     | 
    
         
            +
                    @multi_client.more_results?.should be_false
         
     | 
| 
      
 632 
     | 
    
         
            +
                  end
         
     | 
| 
       617 
633 
     | 
    
         
             
                end
         
     | 
| 
       618 
634 
     | 
    
         
             
              end
         
     | 
| 
       619 
635 
     | 
    
         | 
| 
         @@ -700,6 +716,19 @@ describe Mysql2::Client do 
     | 
|
| 
       700 
716 
     | 
    
         
             
                    @client.escape ""
         
     | 
| 
       701 
717 
     | 
    
         
             
                  }.should raise_error(Mysql2::Error)
         
     | 
| 
       702 
718 
     | 
    
         
             
                end
         
     | 
| 
      
 719 
     | 
    
         
            +
             
     | 
| 
      
 720 
     | 
    
         
            +
                context 'when mysql encoding is not utf8' do
         
     | 
| 
      
 721 
     | 
    
         
            +
                  before { pending('Encoding is undefined') unless defined?(Encoding) }
         
     | 
| 
      
 722 
     | 
    
         
            +
             
     | 
| 
      
 723 
     | 
    
         
            +
                  let(:client) { Mysql2::Client.new(DatabaseCredentials['root'].merge(:encoding => "ujis")) }
         
     | 
| 
      
 724 
     | 
    
         
            +
             
     | 
| 
      
 725 
     | 
    
         
            +
                  it 'should return a internal encoding string if Encoding.default_internal is set' do
         
     | 
| 
      
 726 
     | 
    
         
            +
                    with_internal_encoding Encoding::UTF_8 do
         
     | 
| 
      
 727 
     | 
    
         
            +
                      client.escape("\u{30C6}\u{30B9}\u{30C8}").should eql("\u{30C6}\u{30B9}\u{30C8}")
         
     | 
| 
      
 728 
     | 
    
         
            +
                      client.escape("\u{30C6}'\u{30B9}\"\u{30C8}").should eql("\u{30C6}\\'\u{30B9}\\\"\u{30C8}")
         
     | 
| 
      
 729 
     | 
    
         
            +
                    end
         
     | 
| 
      
 730 
     | 
    
         
            +
                  end
         
     | 
| 
      
 731 
     | 
    
         
            +
                end
         
     | 
| 
       703 
732 
     | 
    
         
             
              end
         
     | 
| 
       704 
733 
     | 
    
         | 
| 
       705 
734 
     | 
    
         
             
              it "should respond to #info" do
         
     | 
| 
         @@ -715,26 +744,21 @@ describe Mysql2::Client do 
     | 
|
| 
       715 
744 
     | 
    
         
             
                info[:version].class.should eql(String)
         
     | 
| 
       716 
745 
     | 
    
         
             
              end
         
     | 
| 
       717 
746 
     | 
    
         | 
| 
       718 
     | 
    
         
            -
               
     | 
| 
       719 
     | 
    
         
            -
                 
     | 
| 
       720 
     | 
    
         
            -
                  it "should default to the connection's encoding if Encoding.default_internal is nil" do
         
     | 
| 
       721 
     | 
    
         
            -
                    with_internal_encoding nil do
         
     | 
| 
       722 
     | 
    
         
            -
                      @client.info[:version].encoding.should eql(Encoding.find('utf-8'))
         
     | 
| 
      
 747 
     | 
    
         
            +
              context "strings returned by #info" do
         
     | 
| 
      
 748 
     | 
    
         
            +
                before { pending('Encoding is undefined') unless defined?(Encoding) }
         
     | 
| 
       723 
749 
     | 
    
         | 
| 
       724 
     | 
    
         
            -
             
     | 
| 
       725 
     | 
    
         
            -
             
     | 
| 
       726 
     | 
    
         
            -
             
     | 
| 
       727 
     | 
    
         
            -
             
     | 
| 
      
 750 
     | 
    
         
            +
                it "should be tagged as ascii" do
         
     | 
| 
      
 751 
     | 
    
         
            +
                  @client.info[:version].encoding.should eql(Encoding::US_ASCII)
         
     | 
| 
      
 752 
     | 
    
         
            +
                  @client.info[:header_version].encoding.should eql(Encoding::US_ASCII)
         
     | 
| 
      
 753 
     | 
    
         
            +
                end
         
     | 
| 
      
 754 
     | 
    
         
            +
              end
         
     | 
| 
       728 
755 
     | 
    
         | 
| 
       729 
     | 
    
         
            -
             
     | 
| 
       730 
     | 
    
         
            -
             
     | 
| 
       731 
     | 
    
         
            -
                      @client.info[:version].encoding.should eql(Encoding.default_internal)
         
     | 
| 
       732 
     | 
    
         
            -
                    end
         
     | 
| 
      
 756 
     | 
    
         
            +
              context "strings returned by .info" do
         
     | 
| 
      
 757 
     | 
    
         
            +
                before { pending('Encoding is undefined') unless defined?(Encoding) }
         
     | 
| 
       733 
758 
     | 
    
         | 
| 
       734 
     | 
    
         
            -
             
     | 
| 
       735 
     | 
    
         
            -
             
     | 
| 
       736 
     | 
    
         
            -
             
     | 
| 
       737 
     | 
    
         
            -
                  end
         
     | 
| 
      
 759 
     | 
    
         
            +
                it "should be tagged as ascii" do
         
     | 
| 
      
 760 
     | 
    
         
            +
                  Mysql2::Client.info[:version].encoding.should eql(Encoding::US_ASCII)
         
     | 
| 
      
 761 
     | 
    
         
            +
                  Mysql2::Client.info[:header_version].encoding.should eql(Encoding::US_ASCII)
         
     | 
| 
       738 
762 
     | 
    
         
             
                end
         
     | 
| 
       739 
763 
     | 
    
         
             
              end
         
     | 
| 
       740 
764 
     | 
    
         | 
    
        data/spec/mysql2/result_spec.rb
    CHANGED
    
    | 
         @@ -6,6 +6,14 @@ describe Mysql2::Result do 
     | 
|
| 
       6 
6 
     | 
    
         
             
                @result = @client.query "SELECT 1"
         
     | 
| 
       7 
7 
     | 
    
         
             
              end
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
      
 9 
     | 
    
         
            +
              it "should raise a TypeError exception when it doesn't wrap a result set" do
         
     | 
| 
      
 10 
     | 
    
         
            +
                r = Mysql2::Result.new
         
     | 
| 
      
 11 
     | 
    
         
            +
                expect { r.count }.to raise_error(TypeError)
         
     | 
| 
      
 12 
     | 
    
         
            +
                expect { r.fields }.to raise_error(TypeError)
         
     | 
| 
      
 13 
     | 
    
         
            +
                expect { r.size }.to raise_error(TypeError)
         
     | 
| 
      
 14 
     | 
    
         
            +
                expect { r.each }.to raise_error(TypeError)
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       9 
17 
     | 
    
         
             
              it "should have included Enumerable" do
         
     | 
| 
       10 
18 
     | 
    
         
             
                Mysql2::Result.ancestors.include?(Enumerable).should be_true
         
     | 
| 
       11 
19 
     | 
    
         
             
              end
         
     | 
| 
         @@ -107,18 +115,19 @@ describe Mysql2::Result do 
     | 
|
| 
       107 
115 
     | 
    
         | 
| 
       108 
116 
     | 
    
         
             
              context "streaming" do
         
     | 
| 
       109 
117 
     | 
    
         
             
                it "should maintain a count while streaming" do
         
     | 
| 
       110 
     | 
    
         
            -
                  result = @client.query('SELECT 1')
         
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
       112 
     | 
    
         
            -
                  result.count.should eql(1)
         
     | 
| 
      
 118 
     | 
    
         
            +
                  result = @client.query('SELECT 1', :stream => true, :cache_rows => false)
         
     | 
| 
      
 119 
     | 
    
         
            +
                  result.count.should eql(0)
         
     | 
| 
       113 
120 
     | 
    
         
             
                  result.each.to_a
         
     | 
| 
       114 
121 
     | 
    
         
             
                  result.count.should eql(1)
         
     | 
| 
       115 
122 
     | 
    
         
             
                end
         
     | 
| 
       116 
123 
     | 
    
         | 
| 
       117 
     | 
    
         
            -
                it "should  
     | 
| 
       118 
     | 
    
         
            -
                  result = @client.query("SELECT  
     | 
| 
      
 124 
     | 
    
         
            +
                it "should retain the count when mixing first and each" do
         
     | 
| 
      
 125 
     | 
    
         
            +
                  result = @client.query("SELECT 1 UNION SELECT 2", :stream => true, :cache_rows => false)
         
     | 
| 
       119 
126 
     | 
    
         
             
                  result.count.should eql(0)
         
     | 
| 
       120 
     | 
    
         
            -
                  result. 
     | 
| 
      
 127 
     | 
    
         
            +
                  result.first
         
     | 
| 
       121 
128 
     | 
    
         
             
                  result.count.should eql(1)
         
     | 
| 
      
 129 
     | 
    
         
            +
                  result.each.to_a
         
     | 
| 
      
 130 
     | 
    
         
            +
                  result.count.should eql(2)
         
     | 
| 
       122 
131 
     | 
    
         
             
                end
         
     | 
| 
       123 
132 
     | 
    
         | 
| 
       124 
133 
     | 
    
         
             
                it "should not yield nil at the end of streaming" do
         
     | 
    
        data/vendor/README
    CHANGED
    
    | 
         @@ -6,7 +6,7 @@ doubt, this particular copy of the software is released 
     | 
|
| 
       6 
6 
     | 
    
         
             
            under the version 2 of the GNU General Public License.
         
     | 
| 
       7 
7 
     | 
    
         
             
            MySQL Connector/C is brought to you by Oracle.
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
            Copyright (c) 2000,  
     | 
| 
      
 9 
     | 
    
         
            +
            Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
            License information can be found in the COPYING file.
         
     | 
| 
       12 
12 
     | 
    
         | 
    
        data/vendor/libmysql.dll
    CHANGED
    
    | 
         Binary file 
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,55 +1,55 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: mysql2
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.3. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.3.19
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: x86-mingw32
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Brian Lopez
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2015- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2015-07-30 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rake-compiler
         
     | 
| 
       15 
15 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       16 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       17 
     | 
    
         
            -
                - - ~>
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       18 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
19 
     | 
    
         
             
                    version: 0.9.5
         
     | 
| 
       20 
20 
     | 
    
         
             
              type: :development
         
     | 
| 
       21 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       22 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       24 
     | 
    
         
            -
                - - ~>
         
     | 
| 
      
 24 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
26 
     | 
    
         
             
                    version: 0.9.5
         
     | 
| 
       27 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
28 
     | 
    
         
             
              name: rake
         
     | 
| 
       29 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       30 
30 
     | 
    
         
             
                requirements:
         
     | 
| 
       31 
     | 
    
         
            -
                - - ~>
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       32 
32 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       33 
33 
     | 
    
         
             
                    version: 0.9.3
         
     | 
| 
       34 
34 
     | 
    
         
             
              type: :development
         
     | 
| 
       35 
35 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       36 
36 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       37 
37 
     | 
    
         
             
                requirements:
         
     | 
| 
       38 
     | 
    
         
            -
                - - ~>
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       39 
39 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       40 
40 
     | 
    
         
             
                    version: 0.9.3
         
     | 
| 
       41 
41 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       42 
42 
     | 
    
         
             
              name: rspec
         
     | 
| 
       43 
43 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       44 
44 
     | 
    
         
             
                requirements:
         
     | 
| 
       45 
     | 
    
         
            -
                - - ~>
         
     | 
| 
      
 45 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       46 
46 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       47 
47 
     | 
    
         
             
                    version: 2.8.0
         
     | 
| 
       48 
48 
     | 
    
         
             
              type: :development
         
     | 
| 
       49 
49 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       50 
50 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       51 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       52 
     | 
    
         
            -
                - - ~>
         
     | 
| 
      
 52 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       53 
53 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       54 
54 
     | 
    
         
             
                    version: 2.8.0
         
     | 
| 
       55 
55 
     | 
    
         
             
            description: 
         
     | 
| 
         @@ -58,6 +58,7 @@ executables: [] 
     | 
|
| 
       58 
58 
     | 
    
         
             
            extensions: []
         
     | 
| 
       59 
59 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       60 
60 
     | 
    
         
             
            files:
         
     | 
| 
      
 61 
     | 
    
         
            +
            - LICENSE
         
     | 
| 
       61 
62 
     | 
    
         
             
            - README.md
         
     | 
| 
       62 
63 
     | 
    
         
             
            - examples/eventmachine.rb
         
     | 
| 
       63 
64 
     | 
    
         
             
            - examples/threaded.rb
         
     | 
| 
         @@ -78,6 +79,7 @@ files: 
     | 
|
| 
       78 
79 
     | 
    
         
             
            - lib/mysql2/1.9/mysql2.so
         
     | 
| 
       79 
80 
     | 
    
         
             
            - lib/mysql2/2.0/mysql2.so
         
     | 
| 
       80 
81 
     | 
    
         
             
            - lib/mysql2/2.1/mysql2.so
         
     | 
| 
      
 82 
     | 
    
         
            +
            - lib/mysql2/2.2/mysql2.so
         
     | 
| 
       81 
83 
     | 
    
         
             
            - lib/mysql2/client.rb
         
     | 
| 
       82 
84 
     | 
    
         
             
            - lib/mysql2/console.rb
         
     | 
| 
       83 
85 
     | 
    
         
             
            - lib/mysql2/em.rb
         
     | 
| 
         @@ -103,29 +105,38 @@ homepage: http://github.com/brianmario/mysql2 
     | 
|
| 
       103 
105 
     | 
    
         
             
            licenses:
         
     | 
| 
       104 
106 
     | 
    
         
             
            - MIT
         
     | 
| 
       105 
107 
     | 
    
         
             
            metadata: {}
         
     | 
| 
       106 
     | 
    
         
            -
            post_install_message:  
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
               
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
       110 
     | 
    
         
            -
             
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
      
 108 
     | 
    
         
            +
            post_install_message: |2+
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
              ======================================================================================================
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                You've installed the binary version of mysql2.
         
     | 
| 
      
 113 
     | 
    
         
            +
                It was built using MySQL Connector/C version 6.1.6.
         
     | 
| 
      
 114 
     | 
    
         
            +
                It's recommended to use the exact same version to avoid potential issues.
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
                At the time of building this gem, the necessary DLL files were retrieved from:
         
     | 
| 
      
 117 
     | 
    
         
            +
                http://cdn.mysql.com/Downloads/Connector-C/mysql-connector-c-6.1.6-win32.zip
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
                This gem *includes* vendor/libmysql.dll with redistribution notice in vendor/README.
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
              ======================================================================================================
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
       112 
123 
     | 
    
         
             
            rdoc_options:
         
     | 
| 
       113 
     | 
    
         
            -
            - --charset=UTF-8
         
     | 
| 
      
 124 
     | 
    
         
            +
            - "--charset=UTF-8"
         
     | 
| 
       114 
125 
     | 
    
         
             
            require_paths:
         
     | 
| 
       115 
126 
     | 
    
         
             
            - lib
         
     | 
| 
       116 
127 
     | 
    
         
             
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
       117 
128 
     | 
    
         
             
              requirements:
         
     | 
| 
       118 
     | 
    
         
            -
              - -  
     | 
| 
      
 129 
     | 
    
         
            +
              - - ">="
         
     | 
| 
       119 
130 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       120 
131 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       121 
132 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       122 
133 
     | 
    
         
             
              requirements:
         
     | 
| 
       123 
     | 
    
         
            -
              - -  
     | 
| 
      
 134 
     | 
    
         
            +
              - - ">="
         
     | 
| 
       124 
135 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       125 
136 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       126 
137 
     | 
    
         
             
            requirements: []
         
     | 
| 
       127 
138 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       128 
     | 
    
         
            -
            rubygems_version: 2.4. 
     | 
| 
      
 139 
     | 
    
         
            +
            rubygems_version: 2.4.8
         
     | 
| 
       129 
140 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       130 
141 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       131 
142 
     | 
    
         
             
            summary: A simple, fast Mysql library for Ruby, binding to libmysql
         
     |