trilogy 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of trilogy might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/ext/trilogy-ruby/cext.c +57 -4
- data/ext/trilogy-ruby/extconf.rb +1 -0
- data/ext/trilogy-ruby/src/socket.c +3 -3
- data/lib/trilogy/version.rb +1 -1
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 79779c19d22b6a05581eba7135cf2fd588a64ee33b59c8caf82a4dc51277bf5f
         | 
| 4 | 
            +
              data.tar.gz: 48c88ac7fe38563810abc4f21858758f9b54f102b4abb63c81d0a41f4bd0a687
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ab915961914de4e0ed847b93aae3357fe328186cd0fdf602f322c379bdd15a3d1aa935535783bfce892cb5013b41c841581c83c42ea248cc6ff0efd7abd2d6eb
         | 
| 7 | 
            +
              data.tar.gz: 6865a1c5b9c96ff4d4eefda88cc771aff23b3ff6db8534767edbdba4a929eec1f42184ae845fe02664c1e6b8c64c72aa52f5948233d8ca35f57c510c60ef42a9
         | 
    
        data/Rakefile
    CHANGED
    
    
    
        data/ext/trilogy-ruby/cext.c
    CHANGED
    
    | @@ -21,9 +21,9 @@ static VALUE Trilogy_DatabaseError, Trilogy_Result; | |
| 21 21 |  | 
| 22 22 | 
             
            static ID id_socket, id_host, id_port, id_username, id_password, id_found_rows, id_connect_timeout, id_read_timeout,
         | 
| 23 23 | 
             
                id_write_timeout, id_keepalive_enabled, id_keepalive_idle, id_keepalive_interval, id_keepalive_count,
         | 
| 24 | 
            -
                id_ivar_fields, id_ivar_rows, id_ivar_query_time, id_password, | 
| 25 | 
            -
                 | 
| 26 | 
            -
                id_tls_max_version;
         | 
| 24 | 
            +
                id_ivar_affected_rows, id_ivar_fields, id_ivar_last_insert_id, id_ivar_rows, id_ivar_query_time, id_password,
         | 
| 25 | 
            +
                id_database, id_ssl_ca, id_ssl_capath, id_ssl_cert, id_ssl_cipher, id_ssl_crl, id_ssl_crlpath, id_ssl_key,
         | 
| 26 | 
            +
                id_ssl_mode, id_tls_ciphersuites, id_tls_min_version, id_tls_max_version;
         | 
| 27 27 |  | 
| 28 28 | 
             
            struct trilogy_ctx {
         | 
| 29 29 | 
             
                trilogy_conn_t conn;
         | 
| @@ -140,6 +140,11 @@ static struct timeval double_to_timeval(double secs) | |
| 140 140 | 
             
                };
         | 
| 141 141 | 
             
            }
         | 
| 142 142 |  | 
| 143 | 
            +
            static double timeval_to_double(struct timeval tv)
         | 
| 144 | 
            +
            {
         | 
| 145 | 
            +
                return (double)tv.tv_sec + ((double)tv.tv_usec) / 1000000.0;
         | 
| 146 | 
            +
            }
         | 
| 147 | 
            +
             | 
| 143 148 | 
             
            static int _cb_ruby_wait(trilogy_sock_t *sock, trilogy_wait_t wait)
         | 
| 144 149 | 
             
            {
         | 
| 145 150 | 
             
                struct timeval *timeout = NULL;
         | 
| @@ -606,6 +611,10 @@ static VALUE execute_read_query(VALUE vargs) | |
| 606 611 | 
             
                rb_ivar_set(result, id_ivar_query_time, DBL2NUM(query_time));
         | 
| 607 612 |  | 
| 608 613 | 
             
                if (rc == TRILOGY_OK) {
         | 
| 614 | 
            +
                    rb_ivar_set(result, id_ivar_last_insert_id, ULL2NUM(ctx->conn.last_insert_id));
         | 
| 615 | 
            +
             | 
| 616 | 
            +
                    rb_ivar_set(result, id_ivar_affected_rows, ULL2NUM(ctx->conn.affected_rows));
         | 
| 617 | 
            +
             | 
| 609 618 | 
             
                    return result;
         | 
| 610 619 | 
             
                }
         | 
| 611 620 |  | 
| @@ -631,8 +640,12 @@ static VALUE execute_read_query(VALUE vargs) | |
| 631 640 | 
             
                        }
         | 
| 632 641 | 
             
                    }
         | 
| 633 642 |  | 
| 643 | 
            +
            #ifdef HAVE_RB_INTERNED_STR
         | 
| 644 | 
            +
                    VALUE column_name = rb_interned_str(column.name, column.name_len);
         | 
| 645 | 
            +
            #else
         | 
| 634 646 | 
             
                    VALUE column_name = rb_str_new(column.name, column.name_len);
         | 
| 635 647 | 
             
                    OBJ_FREEZE(column_name);
         | 
| 648 | 
            +
            #endif
         | 
| 636 649 |  | 
| 637 650 | 
             
                    rb_ary_push(column_names, column_name);
         | 
| 638 651 |  | 
| @@ -836,6 +849,38 @@ static VALUE rb_trilogy_query_flags_set(VALUE self, VALUE query_flags) | |
| 836 849 | 
             
                return get_ctx(self)->query_flags = NUM2UINT(query_flags);
         | 
| 837 850 | 
             
            }
         | 
| 838 851 |  | 
| 852 | 
            +
            static VALUE rb_trilogy_read_timeout(VALUE self) {
         | 
| 853 | 
            +
                struct trilogy_ctx *ctx = get_open_ctx(self);
         | 
| 854 | 
            +
                return DBL2NUM(timeval_to_double(ctx->conn.socket->opts.read_timeout));
         | 
| 855 | 
            +
            }
         | 
| 856 | 
            +
             | 
| 857 | 
            +
            static VALUE rb_trilogy_read_timeout_set(VALUE self, VALUE read_timeout)
         | 
| 858 | 
            +
            {
         | 
| 859 | 
            +
                struct trilogy_ctx *ctx = get_open_ctx(self);
         | 
| 860 | 
            +
                if (read_timeout == Qnil) {
         | 
| 861 | 
            +
                    ctx->conn.socket->opts.read_timeout = double_to_timeval(0.0);
         | 
| 862 | 
            +
                } else {
         | 
| 863 | 
            +
                    ctx->conn.socket->opts.read_timeout = double_to_timeval(NUM2DBL(read_timeout));
         | 
| 864 | 
            +
                }
         | 
| 865 | 
            +
                return read_timeout;
         | 
| 866 | 
            +
            }
         | 
| 867 | 
            +
             | 
| 868 | 
            +
            static VALUE rb_trilogy_write_timeout(VALUE self) {
         | 
| 869 | 
            +
                struct trilogy_ctx *ctx = get_open_ctx(self);
         | 
| 870 | 
            +
                return DBL2NUM(timeval_to_double(ctx->conn.socket->opts.write_timeout));
         | 
| 871 | 
            +
            }
         | 
| 872 | 
            +
             | 
| 873 | 
            +
            static VALUE rb_trilogy_write_timeout_set(VALUE self, VALUE write_timeout)
         | 
| 874 | 
            +
            {
         | 
| 875 | 
            +
                struct trilogy_ctx *ctx = get_open_ctx(self);
         | 
| 876 | 
            +
                if (write_timeout == Qnil) {
         | 
| 877 | 
            +
                    ctx->conn.socket->opts.write_timeout = double_to_timeval(0.0);
         | 
| 878 | 
            +
                } else {
         | 
| 879 | 
            +
                    ctx->conn.socket->opts.write_timeout = double_to_timeval(NUM2DBL(write_timeout));
         | 
| 880 | 
            +
                }
         | 
| 881 | 
            +
                return write_timeout;
         | 
| 882 | 
            +
            }
         | 
| 883 | 
            +
             | 
| 839 884 | 
             
            static VALUE rb_trilogy_server_status(VALUE self) { return LONG2FIX(get_open_ctx(self)->conn.server_status); }
         | 
| 840 885 |  | 
| 841 886 | 
             
            static VALUE rb_trilogy_server_version(VALUE self) { return rb_str_new_cstr(get_open_ctx(self)->server_version); }
         | 
| @@ -858,6 +903,10 @@ void Init_cext() | |
| 858 903 | 
             
                rb_define_method(Trilogy, "last_gtid", rb_trilogy_last_gtid, 0);
         | 
| 859 904 | 
             
                rb_define_method(Trilogy, "query_flags", rb_trilogy_query_flags, 0);
         | 
| 860 905 | 
             
                rb_define_method(Trilogy, "query_flags=", rb_trilogy_query_flags_set, 1);
         | 
| 906 | 
            +
                rb_define_method(Trilogy, "read_timeout", rb_trilogy_read_timeout, 0);
         | 
| 907 | 
            +
                rb_define_method(Trilogy, "read_timeout=", rb_trilogy_read_timeout_set, 1);
         | 
| 908 | 
            +
                rb_define_method(Trilogy, "write_timeout", rb_trilogy_write_timeout, 0);
         | 
| 909 | 
            +
                rb_define_method(Trilogy, "write_timeout=", rb_trilogy_write_timeout_set, 1);
         | 
| 861 910 | 
             
                rb_define_method(Trilogy, "server_status", rb_trilogy_server_status, 0);
         | 
| 862 911 | 
             
                rb_define_method(Trilogy, "server_version", rb_trilogy_server_version, 0);
         | 
| 863 912 | 
             
                rb_define_const(Trilogy, "TLS_VERSION_10", INT2NUM(TRILOGY_TLS_VERSION_10));
         | 
| @@ -890,7 +939,9 @@ void Init_cext() | |
| 890 939 | 
             
                Trilogy_Result = rb_define_class_under(Trilogy, "Result", rb_cObject);
         | 
| 891 940 | 
             
                rb_global_variable(&Trilogy_Result);
         | 
| 892 941 |  | 
| 942 | 
            +
                rb_define_attr(Trilogy_Result, "affected_rows", 1, 0);
         | 
| 893 943 | 
             
                rb_define_attr(Trilogy_Result, "fields", 1, 0);
         | 
| 944 | 
            +
                rb_define_attr(Trilogy_Result, "last_insert_id", 1, 0);
         | 
| 894 945 | 
             
                rb_define_attr(Trilogy_Result, "rows", 1, 0);
         | 
| 895 946 | 
             
                rb_define_attr(Trilogy_Result, "query_time", 1, 0);
         | 
| 896 947 |  | 
| @@ -920,14 +971,16 @@ void Init_cext() | |
| 920 971 | 
             
                id_tls_min_version = rb_intern("tls_min_version");
         | 
| 921 972 | 
             
                id_tls_max_version = rb_intern("tls_max_version");
         | 
| 922 973 |  | 
| 974 | 
            +
                id_ivar_affected_rows = rb_intern("@affected_rows");
         | 
| 923 975 | 
             
                id_ivar_fields = rb_intern("@fields");
         | 
| 976 | 
            +
                id_ivar_last_insert_id = rb_intern("@last_insert_id");
         | 
| 924 977 | 
             
                id_ivar_rows = rb_intern("@rows");
         | 
| 925 978 | 
             
                id_ivar_query_time = rb_intern("@query_time");
         | 
| 926 979 |  | 
| 927 980 | 
             
                rb_trilogy_cast_init();
         | 
| 928 981 |  | 
| 929 982 | 
             
            // server_status flags
         | 
| 930 | 
            -
            #define XX(name, code) rb_const_set(Trilogy, rb_intern(#name + strlen("TRILOGY_")), LONG2NUM(name));
         | 
| 983 | 
            +
            #define XX(name, code) rb_const_set(Trilogy, rb_intern((char *)#name + strlen("TRILOGY_")), LONG2NUM(name));
         | 
| 931 984 | 
             
                TRILOGY_SERVER_STATUS(XX)
         | 
| 932 985 | 
             
            #undef XX
         | 
| 933 986 | 
             
            }
         | 
    
        data/ext/trilogy-ruby/extconf.rb
    CHANGED
    
    
| @@ -307,7 +307,7 @@ fail: | |
| 307 307 | 
             
            static ssize_t ssl_io_return(struct trilogy_sock *sock, ssize_t ret)
         | 
| 308 308 | 
             
            {
         | 
| 309 309 | 
             
                if (ret < 0) {
         | 
| 310 | 
            -
                    int rc = SSL_get_error(sock->ssl, ret);
         | 
| 310 | 
            +
                    int rc = SSL_get_error(sock->ssl, (int)ret);
         | 
| 311 311 | 
             
                    if (rc == SSL_ERROR_WANT_WRITE || rc == SSL_ERROR_WANT_READ) {
         | 
| 312 312 | 
             
                        return (ssize_t)TRILOGY_AGAIN;
         | 
| 313 313 | 
             
                    } else if (rc == SSL_ERROR_SYSCALL && errno != 0) {
         | 
| @@ -375,7 +375,7 @@ static int trilogy_tls_version_map[] = {0, TLS1_VERSION, TLS1_1_VERSION, TLS1_2_ | |
| 375 375 | 
             
            #endif
         | 
| 376 376 | 
             
            };
         | 
| 377 377 |  | 
| 378 | 
            -
             | 
| 378 | 
            +
            long trilogy_set_min_proto_version(SSL_CTX *ctx, trilogy_tls_version_t version)
         | 
| 379 379 | 
             
            {
         | 
| 380 380 | 
             
                int ssl_ver = trilogy_tls_version_map[version];
         | 
| 381 381 | 
             
                if (ssl_ver == 0) {
         | 
| @@ -385,7 +385,7 @@ int trilogy_set_min_proto_version(SSL_CTX *ctx, trilogy_tls_version_t version) | |
| 385 385 | 
             
                return SSL_CTX_set_min_proto_version(ctx, ssl_ver);
         | 
| 386 386 | 
             
            }
         | 
| 387 387 |  | 
| 388 | 
            -
             | 
| 388 | 
            +
            long trilogy_set_max_proto_version(SSL_CTX *ctx, trilogy_tls_version_t version)
         | 
| 389 389 | 
             
            {
         | 
| 390 390 | 
             
                int ssl_ver = trilogy_tls_version_map[version];
         | 
| 391 391 | 
             
                if (ssl_ver == 0) {
         | 
    
        data/lib/trilogy/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: trilogy
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2. | 
| 4 | 
            +
              version: 2.1.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - GitHub Engineering
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2022-03-11 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rake-compiler
         | 
| @@ -99,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 99 99 | 
             
                - !ruby/object:Gem::Version
         | 
| 100 100 | 
             
                  version: '0'
         | 
| 101 101 | 
             
            requirements: []
         | 
| 102 | 
            -
            rubygems_version: 3.3. | 
| 102 | 
            +
            rubygems_version: 3.3.3
         | 
| 103 103 | 
             
            signing_key:
         | 
| 104 104 | 
             
            specification_version: 4
         | 
| 105 105 | 
             
            summary: A friendly MySQL-compatible library for Ruby, binding to libtrilogy
         |