sequel_pg 1.6.10 → 1.6.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +4 -0
- data/ext/sequel_pg/sequel_pg.c +21 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b51b8daa124c0b93c8210122caa04300bf38ede
|
4
|
+
data.tar.gz: 04aaec8db5cbf4ae2ac00fa345ef3ced573674cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c19df266a6b88ea412e68c0ce8d08eadaab22d7532ddc20d7c0794afd6a3f02cf35f418443425f5f3fdda734697a8d044c396a4b7afc97e9ad256a361742ea7
|
7
|
+
data.tar.gz: 12b88db37b2b1366098893dc87fe53b76dc081d5aa82671adfaac3002ef98c77c0ac2e3b4dd20f85a47ea9ca2cec19a6621afc200788fac48ae652c0e57b13bf
|
data/CHANGELOG
CHANGED
data/ext/sequel_pg/sequel_pg.c
CHANGED
@@ -43,6 +43,17 @@
|
|
43
43
|
#define SPG_YIELD_KMV_HASH_GROUPS 12
|
44
44
|
#define SPG_YIELD_MKMV_HASH_GROUPS 13
|
45
45
|
|
46
|
+
/* Whether the data objects are structs instead of just pointers */
|
47
|
+
static int unwrap_structs;
|
48
|
+
|
49
|
+
/* External functions defined by ruby-pg when data objects are structs */
|
50
|
+
PGconn* pg_get_pgconn(VALUE);
|
51
|
+
PGresult* pgresult_get(VALUE);
|
52
|
+
|
53
|
+
/* Normalize access to data objects for both old and new versions of pg gem */
|
54
|
+
#define GetPGconn(_val, _var) if (unwrap_structs) {_var = pg_get_pgconn(_val);} else {Data_Get_Struct(_val, PGconn, _var);}
|
55
|
+
#define GetPGresult(_val, _var) if (unwrap_structs) {_var = pgresult_get(_val);} else {Data_Get_Struct(_val, PGresult, _var);}
|
56
|
+
|
46
57
|
static VALUE spg_Sequel;
|
47
58
|
static VALUE spg_Blob;
|
48
59
|
static VALUE spg_BigDecimal;
|
@@ -614,11 +625,11 @@ static VALUE spg_yield_hash_rows(VALUE self, VALUE rres, VALUE ignore) {
|
|
614
625
|
enc_index = enc_get_index(rres);
|
615
626
|
#endif
|
616
627
|
|
617
|
-
|
628
|
+
GetPGresult(rres, res);
|
618
629
|
ntuples = PQntuples(res);
|
619
630
|
nfields = PQnfields(res);
|
620
631
|
if (nfields > SPG_MAX_FIELDS) {
|
621
|
-
rb_raise(rb_eRangeError, "more than %d columns in query", SPG_MAX_FIELDS);
|
632
|
+
rb_raise(rb_eRangeError, "more than %d columns in query (%ld columns detected)", SPG_MAX_FIELDS, nfields);
|
622
633
|
}
|
623
634
|
|
624
635
|
spg_set_column_info(self, res, colsyms, colconvert);
|
@@ -851,7 +862,7 @@ static VALUE spg_supports_streaming_p(VALUE self) {
|
|
851
862
|
#if HAVE_PQSETSINGLEROWMODE
|
852
863
|
static VALUE spg_set_single_row_mode(VALUE self) {
|
853
864
|
PGconn *conn;
|
854
|
-
|
865
|
+
GetPGconn(self, conn);
|
855
866
|
if (PQsetSingleRowMode(conn) != 1) {
|
856
867
|
rb_raise(spg_PGError, "cannot set single row mode");
|
857
868
|
}
|
@@ -875,11 +886,11 @@ static VALUE spg__yield_each_row(VALUE self) {
|
|
875
886
|
|
876
887
|
rconn = rb_ary_entry(self, 1);
|
877
888
|
self = rb_ary_entry(self, 0);
|
878
|
-
|
889
|
+
GetPGconn(rconn, conn);
|
879
890
|
|
880
891
|
rres = rb_funcall(rconn, spg_id_get_result, 0);
|
881
892
|
rb_funcall(rres, spg_id_check, 0);
|
882
|
-
|
893
|
+
GetPGresult(rres, res);
|
883
894
|
|
884
895
|
#ifdef SPG_ENCODING
|
885
896
|
int enc_index;
|
@@ -927,7 +938,7 @@ static VALUE spg__yield_each_row(VALUE self) {
|
|
927
938
|
|
928
939
|
rres = rb_funcall(rconn, spg_id_get_result, 0);
|
929
940
|
rb_funcall(rres, spg_id_check, 0);
|
930
|
-
|
941
|
+
GetPGresult(rres, res);
|
931
942
|
}
|
932
943
|
rb_funcall(rres, spg_id_clear, 0);
|
933
944
|
|
@@ -938,7 +949,7 @@ static VALUE spg__flush_results(VALUE rconn) {
|
|
938
949
|
PGconn *conn;
|
939
950
|
PGresult *res;
|
940
951
|
VALUE error = 0;
|
941
|
-
|
952
|
+
GetPGconn(rconn, conn);
|
942
953
|
|
943
954
|
while ((res = PQgetResult(conn)) != NULL) {
|
944
955
|
if (!error) {
|
@@ -1043,6 +1054,9 @@ void Init_sequel_pg(void) {
|
|
1043
1054
|
if (rb_eval_string("Date.today.instance_variable_get(:@ajd)") != Qnil) {
|
1044
1055
|
spg_id_Rational = rb_intern("Rational");
|
1045
1056
|
}
|
1057
|
+
if (rb_eval_string("defined?(PG::TypeMapAllStrings)") != Qnil) {
|
1058
|
+
unwrap_structs = 1;
|
1059
|
+
}
|
1046
1060
|
|
1047
1061
|
c = rb_funcall(spg_Postgres, cg, 1, rb_str_new2("Dataset"));
|
1048
1062
|
rb_define_private_method(c, "yield_hash_rows", spg_yield_hash_rows, 2);
|
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.6.
|
4
|
+
version: 1.6.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Evans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|