sequel_pg 1.10.0 → 1.11.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.
- 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
|