Skip to content

Instantly share code, notes, and snippets.

@gwik
Created January 3, 2009 17:55
Show Gist options
  • Save gwik/42909 to your computer and use it in GitHub Desktop.
Save gwik/42909 to your computer and use it in GitHub Desktop.

Revisions

  1. Antonin Amand revised this gist Jan 3, 2009. 1 changed file with 0 additions and 0 deletions.
    Empty file removed gistfile2.txt
    Empty file.
  2. gwik created this gist Jan 3, 2009.
    Empty file added gistfile2.txt
    Empty file.
    95 changes: 95 additions & 0 deletions mysql-ruby-2.6-patch-ruby1.9.1rc1.patch
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,95 @@
    commit 7df6d1b37b57476771ee7ae764e3236eb0d22e8f
    Author: Antonin Amand <[email protected]>
    Date: Sat Jan 3 18:42:57 2009 +0100

    fixes for 1.9

    diff --git a/extconf.rb b/extconf.rb
    index bc00612..f502d4f 100644
    --- a/extconf.rb
    +++ b/extconf.rb
    @@ -67,4 +67,6 @@ File.open('error_const.h', 'w') do |f|
    end
    end

    +have_func('rb_thread_start_timer')
    +
    create_makefile("mysql")
    diff --git a/mysql.c b/mysql.c
    index ba1e06b..4d138b0 100644
    --- a/mysql.c
    +++ b/mysql.c
    @@ -12,6 +12,9 @@
    #ifndef HAVE_RB_STR_SET_LEN
    #define rb_str_set_len(str, length) (RSTRING_LEN(str) = (length))
    #endif
    +#ifndef RARRAY_PTR
    +#define RARRAY_PTR(ary) RARRAY(ary)->ptr
    +#endif

    #ifdef HAVE_MYSQL_H
    #include <mysql.h>
    @@ -248,7 +251,9 @@ static VALUE real_connect(int argc, VALUE* argv, VALUE klass)
    pp = NILorINT(port);
    s = NILorSTRING(sock);

    +#if HAVE_RB_THREAD_START_TIMER
    rb_thread_stop_timer();
    +#endif
    obj = Data_Make_Struct(klass, struct mysql, 0, free_mysql, myp);
    #if MYSQL_VERSION_ID >= 32200
    mysql_init(&myp->handler);
    @@ -259,10 +264,14 @@ static VALUE real_connect(int argc, VALUE* argv, VALUE klass)
    if (mysql_real_connect(&myp->handler, h, u, p, pp, s) == NULL)
    #endif
    {
    +#if HAVE_RB_THREAD_START_TIMER
    rb_thread_start_timer();
    +#endif
    mysql_raise(&myp->handler);
    }
    +#if HAVE_RB_THREAD_START_TIMER
    rb_thread_start_timer();
    +#endif

    myp->handler.reconnect = 0;
    myp->connection = Qtrue;
    @@ -326,12 +335,18 @@ static VALUE real_connect2(int argc, VALUE* argv, VALUE obj)
    pp = NILorINT(port);
    s = NILorSTRING(sock);

    +#if HAVE_RB_THREAD_START_TIMER
    rb_thread_stop_timer();
    +#endif
    if (mysql_real_connect(m, h, u, p, d, pp, s, f) == NULL) {
    +#if HAVE_RB_THREAD_START_TIMER
    rb_thread_start_timer();
    +#endif
    mysql_raise(m);
    }
    +#if HAVE_RB_THREAD_START_TIMER
    rb_thread_start_timer();
    +#endif
    m->reconnect = 0;
    GetMysqlStruct(obj)->connection = Qtrue;

    @@ -1389,12 +1404,12 @@ static VALUE stmt_execute(int argc, VALUE *argv, VALUE obj)
    s->param.bind[i].buffer = &(s->param.buffer[i]);
    t.second_part = 0;
    t.neg = 0;
    - t.second = FIX2INT(RARRAY(a)->ptr[0]);
    - t.minute = FIX2INT(RARRAY(a)->ptr[1]);
    - t.hour = FIX2INT(RARRAY(a)->ptr[2]);
    - t.day = FIX2INT(RARRAY(a)->ptr[3]);
    - t.month = FIX2INT(RARRAY(a)->ptr[4]);
    - t.year = FIX2INT(RARRAY(a)->ptr[5]);
    + t.second = FIX2INT(RARRAY_PTR(a)[0]);
    + t.minute = FIX2INT(RARRAY_PTR(a)[1]);
    + t.hour = FIX2INT(RARRAY_PTR(a)[2]);
    + t.day = FIX2INT(RARRAY_PTR(a)[3]);
    + t.month = FIX2INT(RARRAY_PTR(a)[4]);
    + t.year = FIX2INT(RARRAY_PTR(a)[5]);
    *(MYSQL_TIME*)&(s->param.buffer[i]) = t;
    } else if (CLASS_OF(argv[i]) == cMysqlTime) {
    MYSQL_TIME t;