sequel_pg 1.2.2-x86-mingw32 → 1.3.0-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.
- data/CHANGELOG +8 -0
 - data/ext/sequel_pg/sequel_pg.c +100 -19
 - data/lib/1.8/sequel_pg.so +0 -0
 - data/lib/1.9/sequel_pg.so +0 -0
 - data/lib/sequel_pg/sequel_pg.rb +9 -0
 - metadata +12 -14
 
    
        data/CHANGELOG
    CHANGED
    
    | 
         @@ -1,3 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            === 1.3.0 (2012-04-02)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * Build Windows version against PostgreSQL 9.1.1, ruby 1.8.7, and ruby 1.9.2 (previously 9.0.1, 1.8.6, and 1.9.1) (jeremyevans)
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            * Add major speedup for new Sequel 3.34.0 methods Dataset#to_hash_groups and #select_hash_groups (jeremyevans)
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            * Handle infinite timestamp values using Database#convert_infinite_timestamps in Sequel 3.34.0 (jeremyevans)
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
       1 
9 
     | 
    
         
             
            === 1.2.2 (2012-03-09)
         
     | 
| 
       2 
10 
     | 
    
         | 
| 
       3 
11 
     | 
    
         
             
            * Get microsecond accuracy when using datetime_class = DateTime with 1.8-1.9.2 stdlib date library via Rational (jeremyevans)
         
     | 
    
        data/ext/sequel_pg/sequel_pg.c
    CHANGED
    
    | 
         @@ -36,6 +36,10 @@ 
     | 
|
| 
       36 
36 
     | 
    
         
             
            #define SPG_YIELD_KMV_HASH 7
         
     | 
| 
       37 
37 
     | 
    
         
             
            #define SPG_YIELD_MKMV_HASH 8
         
     | 
| 
       38 
38 
     | 
    
         
             
            #define SPG_YIELD_MODEL 9
         
     | 
| 
      
 39 
     | 
    
         
            +
            #define SPG_YIELD_KV_HASH_GROUPS 10
         
     | 
| 
      
 40 
     | 
    
         
            +
            #define SPG_YIELD_MKV_HASH_GROUPS 11
         
     | 
| 
      
 41 
     | 
    
         
            +
            #define SPG_YIELD_KMV_HASH_GROUPS 12
         
     | 
| 
      
 42 
     | 
    
         
            +
            #define SPG_YIELD_MKMV_HASH_GROUPS 13
         
     | 
| 
       39 
43 
     | 
    
         | 
| 
       40 
44 
     | 
    
         
             
            static VALUE spg_Sequel;
         
     | 
| 
       41 
45 
     | 
    
         
             
            static VALUE spg_Blob;
         
     | 
| 
         @@ -49,6 +53,7 @@ static VALUE spg_sym_map; 
     | 
|
| 
       49 
53 
     | 
    
         
             
            static VALUE spg_sym_first;
         
     | 
| 
       50 
54 
     | 
    
         
             
            static VALUE spg_sym_array;
         
     | 
| 
       51 
55 
     | 
    
         
             
            static VALUE spg_sym_hash;
         
     | 
| 
      
 56 
     | 
    
         
            +
            static VALUE spg_sym_hash_groups;
         
     | 
| 
       52 
57 
     | 
    
         
             
            static VALUE spg_sym_model;
         
     | 
| 
       53 
58 
     | 
    
         
             
            static VALUE spg_sym__sequel_pg_type;
         
     | 
| 
       54 
59 
     | 
    
         
             
            static VALUE spg_sym__sequel_pg_value;
         
     | 
| 
         @@ -72,6 +77,8 @@ static ID spg_id_utc; 
     | 
|
| 
       72 
77 
     | 
    
         
             
            static ID spg_id_utc_offset;
         
     | 
| 
       73 
78 
     | 
    
         
             
            static ID spg_id_localtime;
         
     | 
| 
       74 
79 
     | 
    
         
             
            static ID spg_id_new_offset;
         
     | 
| 
      
 80 
     | 
    
         
            +
            static ID spg_id_convert_infinite_timestamps;
         
     | 
| 
      
 81 
     | 
    
         
            +
            static ID spg_id_infinite_timestamp_value;
         
     | 
| 
       75 
82 
     | 
    
         | 
| 
       76 
83 
     | 
    
         
             
            static ID spg_id_call;
         
     | 
| 
       77 
84 
     | 
    
         
             
            static ID spg_id_get;
         
     | 
| 
         @@ -123,6 +130,17 @@ static VALUE spg_date(const char *s) { 
     | 
|
| 
       123 
130 
     | 
    
         
             
              return rb_funcall(spg_Date, spg_id_new, 3, INT2NUM(year), INT2NUM(month), INT2NUM(day));
         
     | 
| 
       124 
131 
     | 
    
         
             
            }
         
     | 
| 
       125 
132 
     | 
    
         | 
| 
      
 133 
     | 
    
         
            +
            static VALUE spg_timestamp_error(const char *s, VALUE self) {
         
     | 
| 
      
 134 
     | 
    
         
            +
              VALUE db;
         
     | 
| 
      
 135 
     | 
    
         
            +
              db = rb_funcall(self, spg_id_db, 0);
         
     | 
| 
      
 136 
     | 
    
         
            +
              if(RTEST(rb_funcall(db, spg_id_convert_infinite_timestamps, 0))) {
         
     | 
| 
      
 137 
     | 
    
         
            +
                if((strcmp(s, "infinity") == 0) || (strcmp(s, "-infinity") == 0)) {
         
     | 
| 
      
 138 
     | 
    
         
            +
                  return rb_funcall(db, spg_id_infinite_timestamp_value, 1, rb_tainted_str_new2(s));
         
     | 
| 
      
 139 
     | 
    
         
            +
                }
         
     | 
| 
      
 140 
     | 
    
         
            +
              }
         
     | 
| 
      
 141 
     | 
    
         
            +
              rb_raise(rb_eArgError, "unexpected datetime format");
         
     | 
| 
      
 142 
     | 
    
         
            +
            }
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
       126 
144 
     | 
    
         
             
            static VALUE spg_timestamp(const char *s, VALUE self) {
         
     | 
| 
       127 
145 
     | 
    
         
             
              VALUE dtc, dt, rtz;
         
     | 
| 
       128 
146 
     | 
    
         
             
              int tz = SPG_NO_TZ;
         
     | 
| 
         @@ -140,7 +158,7 @@ static VALUE spg_timestamp(const char *s, VALUE self) { 
     | 
|
| 
       140 
158 
     | 
    
         
             
                   	&usec_start, &usec, &usec_stop, 
         
     | 
| 
       141 
159 
     | 
    
         
             
            	&offset_sign, &offset_hour, &offset_minute);
         
     | 
| 
       142 
160 
     | 
    
         
             
                if(tokens < 7) {
         
     | 
| 
       143 
     | 
    
         
            -
                   
     | 
| 
      
 161 
     | 
    
         
            +
                  return spg_timestamp_error(s, self);
         
     | 
| 
       144 
162 
     | 
    
         
             
                }
         
     | 
| 
       145 
163 
     | 
    
         
             
                usec *= (int) pow(10, (6 - (usec_stop - usec_start)));
         
     | 
| 
       146 
164 
     | 
    
         
             
              } else {
         
     | 
| 
         @@ -152,7 +170,7 @@ static VALUE spg_timestamp(const char *s, VALUE self) { 
     | 
|
| 
       152 
170 
     | 
    
         
             
                  min = 0;
         
     | 
| 
       153 
171 
     | 
    
         
             
                  sec = 0;
         
     | 
| 
       154 
172 
     | 
    
         
             
                } else if (tokens < 6) {
         
     | 
| 
       155 
     | 
    
         
            -
                   
     | 
| 
      
 173 
     | 
    
         
            +
                  return spg_timestamp_error(s, self);
         
     | 
| 
       156 
174 
     | 
    
         
             
                }
         
     | 
| 
       157 
175 
     | 
    
         
             
                usec = 0;
         
     | 
| 
       158 
176 
     | 
    
         
             
              }
         
     | 
| 
         @@ -458,21 +476,21 @@ static VALUE spg_yield_hash_rows(VALUE self, VALUE rres, VALUE ignore) { 
     | 
|
| 
       458 
476 
     | 
    
         
             
                    type = SPG_YIELD_FIRST;
         
     | 
| 
       459 
477 
     | 
    
         
             
                  } else if (pg_type == spg_sym_array) {
         
     | 
| 
       460 
478 
     | 
    
         
             
                    type = SPG_YIELD_ARRAY;
         
     | 
| 
       461 
     | 
    
         
            -
                  } else if (pg_type == spg_sym_hash && rb_type(pg_value) == T_ARRAY) {
         
     | 
| 
      
 479 
     | 
    
         
            +
                  } else if ((pg_type == spg_sym_hash || pg_type == spg_sym_hash_groups) && rb_type(pg_value) == T_ARRAY) {
         
     | 
| 
       462 
480 
     | 
    
         
             
                    VALUE pg_value_key, pg_value_value;
         
     | 
| 
       463 
481 
     | 
    
         
             
                    pg_value_key = rb_ary_entry(pg_value, 0);
         
     | 
| 
       464 
482 
     | 
    
         
             
                    pg_value_value = rb_ary_entry(pg_value, 1);
         
     | 
| 
       465 
483 
     | 
    
         
             
                    if (SYMBOL_P(pg_value_key)) {
         
     | 
| 
       466 
484 
     | 
    
         
             
                      if (SYMBOL_P(pg_value_value)) {
         
     | 
| 
       467 
     | 
    
         
            -
                        type = SPG_YIELD_KV_HASH;
         
     | 
| 
      
 485 
     | 
    
         
            +
                        type = pg_type == spg_sym_hash_groups ? SPG_YIELD_KV_HASH_GROUPS : SPG_YIELD_KV_HASH;
         
     | 
| 
       468 
486 
     | 
    
         
             
                      } else if (rb_type(pg_value_value) == T_ARRAY) {
         
     | 
| 
       469 
     | 
    
         
            -
                        type = SPG_YIELD_KMV_HASH;
         
     | 
| 
      
 487 
     | 
    
         
            +
                        type = pg_type == spg_sym_hash_groups ? SPG_YIELD_KMV_HASH_GROUPS : SPG_YIELD_KMV_HASH;
         
     | 
| 
       470 
488 
     | 
    
         
             
                      }
         
     | 
| 
       471 
489 
     | 
    
         
             
                    } else if (rb_type(pg_value_key) == T_ARRAY) {
         
     | 
| 
       472 
490 
     | 
    
         
             
                      if (SYMBOL_P(pg_value_value)) {
         
     | 
| 
       473 
     | 
    
         
            -
                        type = SPG_YIELD_MKV_HASH;
         
     | 
| 
      
 491 
     | 
    
         
            +
                        type = pg_type == spg_sym_hash_groups ? SPG_YIELD_MKV_HASH_GROUPS : SPG_YIELD_MKV_HASH;
         
     | 
| 
       474 
492 
     | 
    
         
             
                      } else if (rb_type(pg_value_value) == T_ARRAY) {
         
     | 
| 
       475 
     | 
    
         
            -
                        type = SPG_YIELD_MKMV_HASH;
         
     | 
| 
      
 493 
     | 
    
         
            +
                        type = pg_type == spg_sym_hash_groups ? SPG_YIELD_MKMV_HASH_GROUPS : SPG_YIELD_MKMV_HASH;
         
     | 
| 
       476 
494 
     | 
    
         
             
                      }
         
     | 
| 
       477 
495 
     | 
    
         
             
                    }
         
     | 
| 
       478 
496 
     | 
    
         
             
                  } else if (pg_type == spg_sym_model && rb_type(pg_value) == T_CLASS) {
         
     | 
| 
         @@ -529,54 +547,114 @@ static VALUE spg_yield_hash_rows(VALUE self, VALUE rres, VALUE ignore) { 
     | 
|
| 
       529 
547 
     | 
    
         
             
                  } 
         
     | 
| 
       530 
548 
     | 
    
         
             
                  break;
         
     | 
| 
       531 
549 
     | 
    
         
             
                case SPG_YIELD_KV_HASH:
         
     | 
| 
      
 550 
     | 
    
         
            +
                case SPG_YIELD_KV_HASH_GROUPS:
         
     | 
| 
       532 
551 
     | 
    
         
             
                  /* Hash with single key and single value */
         
     | 
| 
       533 
552 
     | 
    
         
             
                  {
         
     | 
| 
       534 
553 
     | 
    
         
             
                    VALUE k, v;
         
     | 
| 
       535 
554 
     | 
    
         
             
                    h = rb_hash_new();
         
     | 
| 
       536 
555 
     | 
    
         
             
                    k = spg__field_id(rb_ary_entry(pg_value, 0), colsyms, nfields);
         
     | 
| 
       537 
556 
     | 
    
         
             
                    v = spg__field_id(rb_ary_entry(pg_value, 1), colsyms, nfields);
         
     | 
| 
       538 
     | 
    
         
            -
                     
     | 
| 
       539 
     | 
    
         
            -
                       
     | 
| 
       540 
     | 
    
         
            -
             
     | 
| 
      
 557 
     | 
    
         
            +
                    if(type == SPG_YIELD_KV_HASH) {
         
     | 
| 
      
 558 
     | 
    
         
            +
                      for(i=0; i<ntuples; i++) {
         
     | 
| 
      
 559 
     | 
    
         
            +
                        rb_hash_aset(h, spg__col_value(self, res, i, k, colconvert ENC_INDEX), spg__col_value(self, res, i, v, colconvert ENC_INDEX));
         
     | 
| 
      
 560 
     | 
    
         
            +
                      } 
         
     | 
| 
      
 561 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 562 
     | 
    
         
            +
                      VALUE kv, vv, a;
         
     | 
| 
      
 563 
     | 
    
         
            +
                      for(i=0; i<ntuples; i++) {
         
     | 
| 
      
 564 
     | 
    
         
            +
                        kv = spg__col_value(self, res, i, k, colconvert ENC_INDEX);
         
     | 
| 
      
 565 
     | 
    
         
            +
                        vv = spg__col_value(self, res, i, v, colconvert ENC_INDEX);
         
     | 
| 
      
 566 
     | 
    
         
            +
                        a = rb_hash_lookup(h, kv);
         
     | 
| 
      
 567 
     | 
    
         
            +
                        if(!RTEST(a)) {
         
     | 
| 
      
 568 
     | 
    
         
            +
                          rb_hash_aset(h, kv, rb_ary_new3(1, vv));
         
     | 
| 
      
 569 
     | 
    
         
            +
                        } else {
         
     | 
| 
      
 570 
     | 
    
         
            +
                          rb_ary_push(a, vv);
         
     | 
| 
      
 571 
     | 
    
         
            +
                        }
         
     | 
| 
      
 572 
     | 
    
         
            +
                      } 
         
     | 
| 
      
 573 
     | 
    
         
            +
                    }
         
     | 
| 
       541 
574 
     | 
    
         
             
                    rb_yield(h);
         
     | 
| 
       542 
575 
     | 
    
         
             
                  }
         
     | 
| 
       543 
576 
     | 
    
         
             
                  break;
         
     | 
| 
       544 
577 
     | 
    
         
             
                case SPG_YIELD_MKV_HASH:
         
     | 
| 
      
 578 
     | 
    
         
            +
                case SPG_YIELD_MKV_HASH_GROUPS:
         
     | 
| 
       545 
579 
     | 
    
         
             
                  /* Hash with array of keys and single value */
         
     | 
| 
       546 
580 
     | 
    
         
             
                  {
         
     | 
| 
       547 
581 
     | 
    
         
             
                    VALUE k, v;
         
     | 
| 
       548 
582 
     | 
    
         
             
                    h = rb_hash_new();
         
     | 
| 
       549 
583 
     | 
    
         
             
                    k = spg__field_ids(rb_ary_entry(pg_value, 0), colsyms, nfields);
         
     | 
| 
       550 
584 
     | 
    
         
             
                    v = spg__field_id(rb_ary_entry(pg_value, 1), colsyms, nfields);
         
     | 
| 
       551 
     | 
    
         
            -
                     
     | 
| 
       552 
     | 
    
         
            -
                       
     | 
| 
       553 
     | 
    
         
            -
             
     | 
| 
      
 585 
     | 
    
         
            +
                    if(type == SPG_YIELD_MKV_HASH) {
         
     | 
| 
      
 586 
     | 
    
         
            +
                      for(i=0; i<ntuples; i++) {
         
     | 
| 
      
 587 
     | 
    
         
            +
                        rb_hash_aset(h, spg__col_values(self, k, colsyms, nfields, res, i, colconvert ENC_INDEX), spg__col_value(self, res, i, v, colconvert ENC_INDEX));
         
     | 
| 
      
 588 
     | 
    
         
            +
                      } 
         
     | 
| 
      
 589 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 590 
     | 
    
         
            +
                      VALUE kv, vv, a;
         
     | 
| 
      
 591 
     | 
    
         
            +
                      for(i=0; i<ntuples; i++) {
         
     | 
| 
      
 592 
     | 
    
         
            +
                        kv = spg__col_values(self, k, colsyms, nfields, res, i, colconvert ENC_INDEX);
         
     | 
| 
      
 593 
     | 
    
         
            +
                        vv = spg__col_value(self, res, i, v, colconvert ENC_INDEX);
         
     | 
| 
      
 594 
     | 
    
         
            +
                        a = rb_hash_lookup(h, kv);
         
     | 
| 
      
 595 
     | 
    
         
            +
                        if(!RTEST(a)) {
         
     | 
| 
      
 596 
     | 
    
         
            +
                          rb_hash_aset(h, kv, rb_ary_new3(1, vv));
         
     | 
| 
      
 597 
     | 
    
         
            +
                        } else {
         
     | 
| 
      
 598 
     | 
    
         
            +
                          rb_ary_push(a, vv);
         
     | 
| 
      
 599 
     | 
    
         
            +
                        }
         
     | 
| 
      
 600 
     | 
    
         
            +
                      } 
         
     | 
| 
      
 601 
     | 
    
         
            +
                    }
         
     | 
| 
       554 
602 
     | 
    
         
             
                    rb_yield(h);
         
     | 
| 
       555 
603 
     | 
    
         
             
                  }
         
     | 
| 
       556 
604 
     | 
    
         
             
                  break;
         
     | 
| 
       557 
605 
     | 
    
         
             
                case SPG_YIELD_KMV_HASH:
         
     | 
| 
      
 606 
     | 
    
         
            +
                case SPG_YIELD_KMV_HASH_GROUPS:
         
     | 
| 
       558 
607 
     | 
    
         
             
                  /* Hash with single keys and array of values */
         
     | 
| 
       559 
608 
     | 
    
         
             
                  {
         
     | 
| 
       560 
609 
     | 
    
         
             
                    VALUE k, v;
         
     | 
| 
       561 
610 
     | 
    
         
             
                    h = rb_hash_new();
         
     | 
| 
       562 
611 
     | 
    
         
             
                    k = spg__field_id(rb_ary_entry(pg_value, 0), colsyms, nfields);
         
     | 
| 
       563 
612 
     | 
    
         
             
                    v = spg__field_ids(rb_ary_entry(pg_value, 1), colsyms, nfields);
         
     | 
| 
       564 
     | 
    
         
            -
                     
     | 
| 
       565 
     | 
    
         
            -
                       
     | 
| 
       566 
     | 
    
         
            -
             
     | 
| 
      
 613 
     | 
    
         
            +
                    if(type == SPG_YIELD_KMV_HASH) {
         
     | 
| 
      
 614 
     | 
    
         
            +
                      for(i=0; i<ntuples; i++) {
         
     | 
| 
      
 615 
     | 
    
         
            +
                        rb_hash_aset(h, spg__col_value(self, res, i, k, colconvert ENC_INDEX), spg__col_values(self, v, colsyms, nfields, res, i, colconvert ENC_INDEX));
         
     | 
| 
      
 616 
     | 
    
         
            +
                      } 
         
     | 
| 
      
 617 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 618 
     | 
    
         
            +
                      VALUE kv, vv, a;
         
     | 
| 
      
 619 
     | 
    
         
            +
                      for(i=0; i<ntuples; i++) {
         
     | 
| 
      
 620 
     | 
    
         
            +
                        kv = spg__col_value(self, res, i, k, colconvert ENC_INDEX);
         
     | 
| 
      
 621 
     | 
    
         
            +
                        vv = spg__col_values(self, v, colsyms, nfields, res, i, colconvert ENC_INDEX);
         
     | 
| 
      
 622 
     | 
    
         
            +
                        a = rb_hash_lookup(h, kv);
         
     | 
| 
      
 623 
     | 
    
         
            +
                        if(!RTEST(a)) {
         
     | 
| 
      
 624 
     | 
    
         
            +
                          rb_hash_aset(h, kv, rb_ary_new3(1, vv));
         
     | 
| 
      
 625 
     | 
    
         
            +
                        } else {
         
     | 
| 
      
 626 
     | 
    
         
            +
                          rb_ary_push(a, vv);
         
     | 
| 
      
 627 
     | 
    
         
            +
                        }
         
     | 
| 
      
 628 
     | 
    
         
            +
                      } 
         
     | 
| 
      
 629 
     | 
    
         
            +
                    }
         
     | 
| 
       567 
630 
     | 
    
         
             
                    rb_yield(h);
         
     | 
| 
       568 
631 
     | 
    
         
             
                  }
         
     | 
| 
       569 
632 
     | 
    
         
             
                  break;
         
     | 
| 
       570 
633 
     | 
    
         
             
                case SPG_YIELD_MKMV_HASH:
         
     | 
| 
      
 634 
     | 
    
         
            +
                case SPG_YIELD_MKMV_HASH_GROUPS:
         
     | 
| 
       571 
635 
     | 
    
         
             
                  /* Hash with array of keys and array of values */
         
     | 
| 
       572 
636 
     | 
    
         
             
                  {
         
     | 
| 
       573 
637 
     | 
    
         
             
                    VALUE k, v;
         
     | 
| 
       574 
638 
     | 
    
         
             
                    h = rb_hash_new();
         
     | 
| 
       575 
639 
     | 
    
         
             
                    k = spg__field_ids(rb_ary_entry(pg_value, 0), colsyms, nfields);
         
     | 
| 
       576 
640 
     | 
    
         
             
                    v = spg__field_ids(rb_ary_entry(pg_value, 1), colsyms, nfields);
         
     | 
| 
       577 
     | 
    
         
            -
                     
     | 
| 
       578 
     | 
    
         
            -
                       
     | 
| 
       579 
     | 
    
         
            -
             
     | 
| 
      
 641 
     | 
    
         
            +
                    if(type == SPG_YIELD_MKMV_HASH) {
         
     | 
| 
      
 642 
     | 
    
         
            +
                      for(i=0; i<ntuples; i++) {
         
     | 
| 
      
 643 
     | 
    
         
            +
                        rb_hash_aset(h, spg__col_values(self, k, colsyms, nfields, res, i, colconvert ENC_INDEX), spg__col_values(self, v, colsyms, nfields, res, i, colconvert ENC_INDEX));
         
     | 
| 
      
 644 
     | 
    
         
            +
                      } 
         
     | 
| 
      
 645 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 646 
     | 
    
         
            +
                      VALUE kv, vv, a;
         
     | 
| 
      
 647 
     | 
    
         
            +
                      for(i=0; i<ntuples; i++) {
         
     | 
| 
      
 648 
     | 
    
         
            +
                        kv = spg__col_values(self, k, colsyms, nfields, res, i, colconvert ENC_INDEX);
         
     | 
| 
      
 649 
     | 
    
         
            +
                        vv = spg__col_values(self, v, colsyms, nfields, res, i, colconvert ENC_INDEX);
         
     | 
| 
      
 650 
     | 
    
         
            +
                        a = rb_hash_lookup(h, kv);
         
     | 
| 
      
 651 
     | 
    
         
            +
                        if(!RTEST(a)) {
         
     | 
| 
      
 652 
     | 
    
         
            +
                          rb_hash_aset(h, kv, rb_ary_new3(1, vv));
         
     | 
| 
      
 653 
     | 
    
         
            +
                        } else {
         
     | 
| 
      
 654 
     | 
    
         
            +
                          rb_ary_push(a, vv);
         
     | 
| 
      
 655 
     | 
    
         
            +
                        }
         
     | 
| 
      
 656 
     | 
    
         
            +
                      } 
         
     | 
| 
      
 657 
     | 
    
         
            +
                    }
         
     | 
| 
       580 
658 
     | 
    
         
             
                    rb_yield(h);
         
     | 
| 
       581 
659 
     | 
    
         
             
                  }
         
     | 
| 
       582 
660 
     | 
    
         
             
                  break;
         
     | 
| 
         @@ -615,6 +693,8 @@ void Init_sequel_pg(void) { 
     | 
|
| 
       615 
693 
     | 
    
         
             
              spg_id_utc_offset = rb_intern("utc_offset");
         
     | 
| 
       616 
694 
     | 
    
         
             
              spg_id_localtime = rb_intern("localtime");
         
     | 
| 
       617 
695 
     | 
    
         
             
              spg_id_new_offset = rb_intern("new_offset");
         
     | 
| 
      
 696 
     | 
    
         
            +
              spg_id_convert_infinite_timestamps = rb_intern("convert_infinite_timestamps");
         
     | 
| 
      
 697 
     | 
    
         
            +
              spg_id_infinite_timestamp_value = rb_intern("infinite_timestamp_value");
         
     | 
| 
       618 
698 
     | 
    
         | 
| 
       619 
699 
     | 
    
         
             
              spg_id_call = rb_intern("call");
         
     | 
| 
       620 
700 
     | 
    
         
             
              spg_id_get = rb_intern("[]");
         
     | 
| 
         @@ -634,6 +714,7 @@ void Init_sequel_pg(void) { 
     | 
|
| 
       634 
714 
     | 
    
         
             
              spg_sym_first = ID2SYM(rb_intern("first"));
         
     | 
| 
       635 
715 
     | 
    
         
             
              spg_sym_array = ID2SYM(rb_intern("array"));
         
     | 
| 
       636 
716 
     | 
    
         
             
              spg_sym_hash = ID2SYM(rb_intern("hash"));
         
     | 
| 
      
 717 
     | 
    
         
            +
              spg_sym_hash_groups = ID2SYM(rb_intern("hash_groups"));
         
     | 
| 
       637 
718 
     | 
    
         
             
              spg_sym_model = ID2SYM(rb_intern("model"));
         
     | 
| 
       638 
719 
     | 
    
         
             
              spg_sym__sequel_pg_type = ID2SYM(rb_intern("_sequel_pg_type"));
         
     | 
| 
       639 
720 
     | 
    
         
             
              spg_sym__sequel_pg_value = ID2SYM(rb_intern("_sequel_pg_value"));
         
     | 
    
        data/lib/1.8/sequel_pg.so
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/lib/1.9/sequel_pg.so
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/lib/sequel_pg/sequel_pg.rb
    CHANGED
    
    | 
         @@ -40,6 +40,15 @@ class Sequel::Postgres::Dataset 
     | 
|
| 
       40 
40 
     | 
    
         
             
                end
         
     | 
| 
       41 
41 
     | 
    
         
             
              end
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
      
 43 
     | 
    
         
            +
              # In the case where both arguments given, use an optimized version.
         
     | 
| 
      
 44 
     | 
    
         
            +
              def to_hash_groups(key_column, value_column = nil)
         
     | 
| 
      
 45 
     | 
    
         
            +
                if value_column
         
     | 
| 
      
 46 
     | 
    
         
            +
                  clone(:_sequel_pg_type=>:hash_groups, :_sequel_pg_value=>[key_column, value_column]).fetch_rows(sql){|s| return s}
         
     | 
| 
      
 47 
     | 
    
         
            +
                else
         
     | 
| 
      
 48 
     | 
    
         
            +
                  super
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
              end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
       43 
52 
     | 
    
         
             
              # If model loads are being optimized and this is a model load, use the optimized
         
     | 
| 
       44 
53 
     | 
    
         
             
              # version.
         
     | 
| 
       45 
54 
     | 
    
         
             
              def each
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -2,12 +2,12 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            name: sequel_pg
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
4 
     | 
    
         
             
              hash: 27
         
     | 
| 
       5 
     | 
    
         
            -
              prerelease:  
     | 
| 
      
 5 
     | 
    
         
            +
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 1
         
     | 
| 
       8 
     | 
    
         
            -
              -  
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
       10 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 8 
     | 
    
         
            +
              - 3
         
     | 
| 
      
 9 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 1.3.0
         
     | 
| 
       11 
11 
     | 
    
         
             
            platform: x86-mingw32
         
     | 
| 
       12 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
13 
     | 
    
         
             
            - Jeremy Evans
         
     | 
| 
         @@ -15,8 +15,7 @@ autorequire: 
     | 
|
| 
       15 
15 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       16 
16 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
            date:  
     | 
| 
       19 
     | 
    
         
            -
            default_executable: 
         
     | 
| 
      
 18 
     | 
    
         
            +
            date: 2012-03-24 00:00:00 Z
         
     | 
| 
       20 
19 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       21 
20 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       22 
21 
     | 
    
         
             
              name: pg
         
     | 
| 
         @@ -42,12 +41,12 @@ dependencies: 
     | 
|
| 
       42 
41 
     | 
    
         
             
                requirements: 
         
     | 
| 
       43 
42 
     | 
    
         
             
                - - ">="
         
     | 
| 
       44 
43 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       45 
     | 
    
         
            -
                    hash:  
     | 
| 
      
 44 
     | 
    
         
            +
                    hash: 143
         
     | 
| 
       46 
45 
     | 
    
         
             
                    segments: 
         
     | 
| 
       47 
46 
     | 
    
         
             
                    - 3
         
     | 
| 
       48 
     | 
    
         
            -
                    -  
     | 
| 
      
 47 
     | 
    
         
            +
                    - 34
         
     | 
| 
       49 
48 
     | 
    
         
             
                    - 0
         
     | 
| 
       50 
     | 
    
         
            -
                    version: 3. 
     | 
| 
      
 49 
     | 
    
         
            +
                    version: 3.34.0
         
     | 
| 
       51 
50 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       52 
51 
     | 
    
         
             
              version_requirements: *id002
         
     | 
| 
       53 
52 
     | 
    
         
             
            description: |
         
     | 
| 
         @@ -75,7 +74,6 @@ files: 
     | 
|
| 
       75 
74 
     | 
    
         
             
            - lib/sequel_pg/sequel_pg.rb
         
     | 
| 
       76 
75 
     | 
    
         
             
            - lib/1.8/sequel_pg.so
         
     | 
| 
       77 
76 
     | 
    
         
             
            - lib/1.9/sequel_pg.so
         
     | 
| 
       78 
     | 
    
         
            -
            has_rdoc: true
         
     | 
| 
       79 
77 
     | 
    
         
             
            homepage: http://github.com/jeremyevans/sequel_pg
         
     | 
| 
       80 
78 
     | 
    
         
             
            licenses: []
         
     | 
| 
       81 
79 
     | 
    
         | 
| 
         @@ -95,12 +93,12 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       95 
93 
     | 
    
         
             
              requirements: 
         
     | 
| 
       96 
94 
     | 
    
         
             
              - - ">="
         
     | 
| 
       97 
95 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
       98 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 96 
     | 
    
         
            +
                  hash: 57
         
     | 
| 
       99 
97 
     | 
    
         
             
                  segments: 
         
     | 
| 
       100 
98 
     | 
    
         
             
                  - 1
         
     | 
| 
       101 
99 
     | 
    
         
             
                  - 8
         
     | 
| 
       102 
     | 
    
         
            -
                  -  
     | 
| 
       103 
     | 
    
         
            -
                  version: 1.8. 
     | 
| 
      
 100 
     | 
    
         
            +
                  - 7
         
     | 
| 
      
 101 
     | 
    
         
            +
                  version: 1.8.7
         
     | 
| 
       104 
102 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
       105 
103 
     | 
    
         
             
              none: false
         
     | 
| 
       106 
104 
     | 
    
         
             
              requirements: 
         
     | 
| 
         @@ -113,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       113 
111 
     | 
    
         
             
            requirements: []
         
     | 
| 
       114 
112 
     | 
    
         | 
| 
       115 
113 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       116 
     | 
    
         
            -
            rubygems_version: 1. 
     | 
| 
      
 114 
     | 
    
         
            +
            rubygems_version: 1.8.21
         
     | 
| 
       117 
115 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       118 
116 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       119 
117 
     | 
    
         
             
            summary: Faster SELECTs when using Sequel with pg
         
     |