sequel_pg 1.10.0 → 1.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +6 -0
- data/ext/sequel_pg/sequel_pg.c +57 -40
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c587158ff9ea71f6a0ce019384c317b03b8c1a9c6027f363502e98f148b4a958
|
4
|
+
data.tar.gz: ad74cf362d21fe64409be4b29536709c5d6d6dbabe3a248a3cad5da5f282124f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 39fb59374fe67630cea51820851b380f9537ef6769599ee43581855eb99e70c5251d03c70134a0512ad6ce36bc127704dcf152a2113de1461deb2839e19830c5
|
7
|
+
data.tar.gz: 470e31d71b43e3cad932cad0838805047d8d69013795a28d29b0099460a7a285ae5caae6a3e3950d61b80e30d2668cbf398fdc0dce1e16a1f970226e48c69cdb
|
data/CHANGELOG
CHANGED
data/ext/sequel_pg/sequel_pg.c
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#define SEQUEL_PG_VERSION_INTEGER
|
1
|
+
#define SEQUEL_PG_VERSION_INTEGER 11100
|
2
2
|
|
3
3
|
#include <string.h>
|
4
4
|
#include <stdio.h>
|
@@ -79,7 +79,6 @@ static VALUE spg_Sequel;
|
|
79
79
|
static VALUE spg_PGArray;
|
80
80
|
static VALUE spg_Blob;
|
81
81
|
static VALUE spg_Blob_instance;
|
82
|
-
static VALUE spg_Kernel;
|
83
82
|
static VALUE spg_Date;
|
84
83
|
static VALUE spg_DateTime;
|
85
84
|
static VALUE spg_SQLTime;
|
@@ -881,18 +880,27 @@ static VALUE spg__array_col_value(char *v, size_t length, VALUE converter, int e
|
|
881
880
|
break;
|
882
881
|
case 700: /* float */
|
883
882
|
case 701:
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
883
|
+
switch(*v) {
|
884
|
+
case 'N':
|
885
|
+
rv = spg_nan;
|
886
|
+
break;
|
887
|
+
case 'I':
|
888
|
+
rv = spg_pos_inf;
|
889
|
+
break;
|
890
|
+
case '-':
|
891
|
+
if (v[1] == 'I') {
|
892
|
+
rv = spg_neg_inf;
|
893
|
+
} else {
|
894
|
+
rv = rb_float_new(rb_cstr_to_dbl(v, Qfalse));
|
895
|
+
}
|
896
|
+
break;
|
897
|
+
default:
|
898
|
+
rv = rb_float_new(rb_cstr_to_dbl(v, Qfalse));
|
899
|
+
break;
|
892
900
|
}
|
893
901
|
break;
|
894
902
|
case 1700: /* numeric */
|
895
|
-
rv = rb_funcall(
|
903
|
+
rv = rb_funcall(rb_mKernel, spg_id_BigDecimal, 1, rb_str_new(v, length));
|
896
904
|
break;
|
897
905
|
case 1082: /* date */
|
898
906
|
rv = spg_date(v, db, length);
|
@@ -1018,18 +1026,27 @@ static VALUE spg__col_value(VALUE self, PGresult *res, long i, long j, VALUE* co
|
|
1018
1026
|
break;
|
1019
1027
|
case 700: /* float */
|
1020
1028
|
case 701:
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1029
|
+
switch(*v) {
|
1030
|
+
case 'N':
|
1031
|
+
rv = spg_nan;
|
1032
|
+
break;
|
1033
|
+
case 'I':
|
1034
|
+
rv = spg_pos_inf;
|
1035
|
+
break;
|
1036
|
+
case '-':
|
1037
|
+
if (v[1] == 'I') {
|
1038
|
+
rv = spg_neg_inf;
|
1039
|
+
} else {
|
1040
|
+
rv = rb_float_new(rb_cstr_to_dbl(v, Qfalse));
|
1041
|
+
}
|
1042
|
+
break;
|
1043
|
+
default:
|
1044
|
+
rv = rb_float_new(rb_cstr_to_dbl(v, Qfalse));
|
1045
|
+
break;
|
1029
1046
|
}
|
1030
1047
|
break;
|
1031
1048
|
case 1700: /* numeric */
|
1032
|
-
rv = rb_funcall(
|
1049
|
+
rv = rb_funcall(rb_mKernel, spg_id_BigDecimal, 1, rb_str_new(v, PQgetlength(res, i, j)));
|
1033
1050
|
break;
|
1034
1051
|
case 1082: /* date */
|
1035
1052
|
rv = spg_date(v, self, PQgetlength(res, i, j));
|
@@ -1246,18 +1263,21 @@ static VALUE spg__field_ids(VALUE v, VALUE *colsyms, long nfields) {
|
|
1246
1263
|
return pg_columns;
|
1247
1264
|
}
|
1248
1265
|
|
1249
|
-
static void spg_set_column_info(VALUE self, PGresult *res, VALUE *colsyms, VALUE *colconvert) {
|
1266
|
+
static void spg_set_column_info(VALUE self, PGresult *res, VALUE *colsyms, VALUE *colconvert, int enc_index) {
|
1250
1267
|
long i;
|
1251
1268
|
long j;
|
1252
1269
|
long nfields;
|
1253
1270
|
int timestamp_info = 0;
|
1254
1271
|
int time_info = 0;
|
1255
1272
|
VALUE conv_procs = 0;
|
1273
|
+
VALUE tmp;
|
1256
1274
|
|
1257
1275
|
nfields = PQnfields(res);
|
1258
1276
|
|
1259
1277
|
for(j=0; j<nfields; j++) {
|
1260
|
-
|
1278
|
+
tmp = rb_str_new2(PQfname(res, j));
|
1279
|
+
PG_ENCODING_SET_NOCHECK(tmp, enc_index);
|
1280
|
+
colsyms[j] = rb_funcall(self, spg_id_output_identifier, 1, tmp);
|
1261
1281
|
i = PQftype(res, j);
|
1262
1282
|
switch (i) {
|
1263
1283
|
/* scalar types */
|
@@ -1363,7 +1383,7 @@ static VALUE spg_yield_hash_rows(VALUE self, VALUE rres, VALUE ignore) {
|
|
1363
1383
|
rb_raise(rb_eRangeError, "more than %d columns in query (%ld columns detected)", SPG_MAX_FIELDS, nfields);
|
1364
1384
|
}
|
1365
1385
|
|
1366
|
-
spg_set_column_info(self, res, colsyms, colconvert);
|
1386
|
+
spg_set_column_info(self, res, colsyms, colconvert, enc_index);
|
1367
1387
|
|
1368
1388
|
opts = rb_funcall(self, spg_id_opts, 0);
|
1369
1389
|
if (rb_type(opts) == T_HASH) {
|
@@ -1643,7 +1663,7 @@ static VALUE spg__yield_each_row(VALUE self) {
|
|
1643
1663
|
rb_raise(rb_eRangeError, "more than %d columns in query", SPG_MAX_FIELDS);
|
1644
1664
|
}
|
1645
1665
|
|
1646
|
-
spg_set_column_info(self, res, colsyms, colconvert);
|
1666
|
+
spg_set_column_info(self, res, colsyms, colconvert, enc_index);
|
1647
1667
|
|
1648
1668
|
while (PQntuples(res) != 0) {
|
1649
1669
|
h = rb_hash_new();
|
@@ -1715,12 +1735,10 @@ static VALUE spg_yield_each_row(VALUE self, VALUE rconn) {
|
|
1715
1735
|
|
1716
1736
|
void Init_sequel_pg(void) {
|
1717
1737
|
VALUE c, spg_Postgres;
|
1718
|
-
ID cg;
|
1719
|
-
cg = rb_intern("const_get");
|
1720
1738
|
|
1721
|
-
spg_Sequel =
|
1722
|
-
spg_Postgres = rb_funcall(spg_Sequel, cg, 1, rb_str_new2("Postgres"));
|
1739
|
+
spg_Sequel = rb_const_get(rb_cObject, rb_intern("Sequel"));
|
1723
1740
|
rb_global_variable(&spg_Sequel);
|
1741
|
+
spg_Postgres = rb_const_get(spg_Sequel, rb_intern("Postgres"));
|
1724
1742
|
|
1725
1743
|
if(rb_obj_respond_to(spg_Postgres, rb_intern("sequel_pg_version_supported?"), 0)) {
|
1726
1744
|
if(!RTEST(rb_funcall(spg_Postgres, rb_intern("sequel_pg_version_supported?"), 1, INT2FIX(SEQUEL_PG_VERSION_INTEGER)))) {
|
@@ -1728,7 +1746,8 @@ void Init_sequel_pg(void) {
|
|
1728
1746
|
return;
|
1729
1747
|
}
|
1730
1748
|
}
|
1731
|
-
|
1749
|
+
|
1750
|
+
rb_const_set(spg_Postgres, rb_intern("SEQUEL_PG_VERSION_INTEGER"), INT2FIX(SEQUEL_PG_VERSION_INTEGER));
|
1732
1751
|
|
1733
1752
|
spg_id_BigDecimal = rb_intern("BigDecimal");
|
1734
1753
|
spg_id_new = rb_intern("new");
|
@@ -1809,19 +1828,17 @@ void Init_sequel_pg(void) {
|
|
1809
1828
|
spg_sym_inet = ID2SYM(rb_intern("inet"));
|
1810
1829
|
spg_sym_cidr = ID2SYM(rb_intern("cidr"));
|
1811
1830
|
|
1812
|
-
spg_Blob =
|
1831
|
+
spg_Blob = rb_const_get(rb_const_get(spg_Sequel, rb_intern("SQL")), rb_intern("Blob"));
|
1813
1832
|
rb_global_variable(&spg_Blob);
|
1814
1833
|
spg_Blob_instance = rb_obj_freeze(rb_funcall(spg_Blob, spg_id_new, 0));
|
1815
1834
|
rb_global_variable(&spg_Blob_instance);
|
1816
|
-
spg_SQLTime=
|
1835
|
+
spg_SQLTime = rb_const_get(spg_Sequel, rb_intern("SQLTime"));
|
1817
1836
|
rb_global_variable(&spg_SQLTime);
|
1818
|
-
|
1819
|
-
rb_global_variable(&spg_Kernel);
|
1820
|
-
spg_Date = rb_funcall(rb_cObject, cg, 1, rb_str_new2("Date"));
|
1837
|
+
spg_Date = rb_const_get(rb_cObject, rb_intern("Date"));
|
1821
1838
|
rb_global_variable(&spg_Date);
|
1822
|
-
spg_DateTime =
|
1839
|
+
spg_DateTime = rb_const_get(rb_cObject, rb_intern("DateTime"));
|
1823
1840
|
rb_global_variable(&spg_DateTime);
|
1824
|
-
spg_PGError =
|
1841
|
+
spg_PGError = rb_const_get(rb_const_get(rb_cObject, rb_intern("PG")), rb_intern("Error"));
|
1825
1842
|
rb_global_variable(&spg_PGError);
|
1826
1843
|
|
1827
1844
|
spg_nan = rb_eval_string("0.0/0.0");
|
@@ -1834,7 +1851,7 @@ void Init_sequel_pg(void) {
|
|
1834
1851
|
rb_global_variable(&spg_usec_per_day);
|
1835
1852
|
|
1836
1853
|
rb_require("ipaddr");
|
1837
|
-
spg_IPAddr =
|
1854
|
+
spg_IPAddr = rb_const_get(rb_cObject, rb_intern("IPAddr"));
|
1838
1855
|
rb_global_variable(&spg_IPAddr);
|
1839
1856
|
spg_use_ipaddr_alloc = RTEST(rb_eval_string("IPAddr.new.instance_variables.sort == [:@addr, :@family, :@mask_addr]"));
|
1840
1857
|
spg_vmasks4 = rb_eval_string("a = [0]*33; a[0] = 0; a[32] = 0xffffffff; 31.downto(1){|i| a[i] = a[i+1] - (1 << (31 - i))}; a.freeze");
|
@@ -1842,7 +1859,7 @@ void Init_sequel_pg(void) {
|
|
1842
1859
|
spg_vmasks6 = rb_eval_string("a = [0]*129; a[0] = 0; a[128] = 0xffffffffffffffffffffffffffffffff; 127.downto(1){|i| a[i] = a[i+1] - (1 << (127 - i))}; a.freeze");
|
1843
1860
|
rb_global_variable(&spg_vmasks6);
|
1844
1861
|
|
1845
|
-
c =
|
1862
|
+
c = rb_const_get(spg_Postgres, rb_intern("Dataset"));
|
1846
1863
|
rb_undef_method(c, "yield_hash_rows");
|
1847
1864
|
rb_define_private_method(c, "yield_hash_rows", spg_yield_hash_rows, 2);
|
1848
1865
|
rb_undef_method(c, "fetch_rows_set_cols");
|
@@ -1856,7 +1873,7 @@ void Init_sequel_pg(void) {
|
|
1856
1873
|
spg_id_check = rb_intern("check");
|
1857
1874
|
|
1858
1875
|
rb_define_private_method(c, "yield_each_row", spg_yield_each_row, 1);
|
1859
|
-
c =
|
1876
|
+
c = rb_const_get(spg_Postgres, rb_intern("Adapter"));
|
1860
1877
|
rb_define_private_method(c, "set_single_row_mode", spg_set_single_row_mode, 0);
|
1861
1878
|
#endif
|
1862
1879
|
|
@@ -1865,6 +1882,6 @@ void Init_sequel_pg(void) {
|
|
1865
1882
|
rb_require("sequel_pg/sequel_pg");
|
1866
1883
|
|
1867
1884
|
rb_require("sequel/extensions/pg_array");
|
1868
|
-
spg_PGArray =
|
1885
|
+
spg_PGArray = rb_const_get(spg_Postgres, rb_intern("PGArray"));
|
1869
1886
|
rb_global_variable(&spg_PGArray);
|
1870
1887
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel_pg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Evans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|