sequel_pg 1.6.0 → 1.6.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +4 -0
- data/README.rdoc +7 -4
- data/ext/sequel_pg/sequel_pg.c +27 -10
- metadata +2 -2
data/CHANGELOG
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
=== 1.6.1 (2012-10-25)
|
2
|
+
|
3
|
+
* Make PostgreSQL array parser handle string encodings correctly on ruby 1.9 (jeremyevans)
|
4
|
+
|
1
5
|
=== 1.6.0 (2012-09-04)
|
2
6
|
|
3
7
|
* Replace PQsetRowProcessor streaming with PQsetSingleRowMode streaming introduced in PostgreSQL 9.2beta3 (jeremyevans)
|
data/README.rdoc
CHANGED
@@ -65,7 +65,7 @@ enable the model optimization via:
|
|
65
65
|
|
66
66
|
== Streaming
|
67
67
|
|
68
|
-
If you are using PostgreSQL 9.
|
68
|
+
If you are using PostgreSQL 9.2beta3 or higher on the client, then sequel_pg
|
69
69
|
should enable streaming support. This allows you to stream returned
|
70
70
|
rows one at a time, instead of collecting the entire result set in
|
71
71
|
memory (which is how PostgreSQL works by default). You can check
|
@@ -76,8 +76,7 @@ if streaming is supported by:
|
|
76
76
|
If streaming is supported, you can load the streaming support into the
|
77
77
|
database:
|
78
78
|
|
79
|
-
|
80
|
-
DB.extend Sequel::Postgres::Streaming
|
79
|
+
DB.extension(:pg_streaming)
|
81
80
|
|
82
81
|
Then you can call the Dataset#stream method to have the dataset use
|
83
82
|
the streaming support:
|
@@ -87,7 +86,11 @@ the streaming support:
|
|
87
86
|
If you want to enable streaming for all of a database's datasets, you
|
88
87
|
can do the following:
|
89
88
|
|
90
|
-
DB.
|
89
|
+
DB.stream_all_queries = true
|
90
|
+
|
91
|
+
Note that pg 0.14.1+ is required for streaming to work. This is not
|
92
|
+
required by the gem, as it is only a requirement for streaming, not
|
93
|
+
for general use.
|
91
94
|
|
92
95
|
== Installing the gem
|
93
96
|
|
data/ext/sequel_pg/sequel_pg.c
CHANGED
@@ -120,7 +120,11 @@ static int enc_get_index(VALUE val)
|
|
120
120
|
}
|
121
121
|
#endif
|
122
122
|
|
123
|
-
static VALUE read_array(int *index, char *c_pg_array_string, int array_string_length, char *word, VALUE converter
|
123
|
+
static VALUE read_array(int *index, char *c_pg_array_string, int array_string_length, char *word, VALUE converter
|
124
|
+
#ifdef SPG_ENCODING
|
125
|
+
, int enc_index
|
126
|
+
#endif
|
127
|
+
)
|
124
128
|
{
|
125
129
|
int word_index = 0;
|
126
130
|
|
@@ -161,15 +165,20 @@ static VALUE read_array(int *index, char *c_pg_array_string, int array_string_le
|
|
161
165
|
{
|
162
166
|
rb_ary_push(array, Qnil);
|
163
167
|
}
|
164
|
-
else
|
168
|
+
else
|
165
169
|
{
|
166
|
-
VALUE rword =
|
170
|
+
VALUE rword = rb_tainted_str_new(word, word_index);
|
167
171
|
RB_GC_GUARD(rword);
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
172
|
+
|
173
|
+
#ifdef SPG_ENCODING
|
174
|
+
rb_enc_associate_index(rword, enc_index);
|
175
|
+
#endif
|
176
|
+
|
177
|
+
if (RTEST(converter)) {
|
178
|
+
rword = rb_funcall(converter, spg_id_call, 1, rword);
|
179
|
+
}
|
180
|
+
|
181
|
+
rb_ary_push(array, rword);
|
173
182
|
}
|
174
183
|
}
|
175
184
|
if(c == '}')
|
@@ -187,7 +196,11 @@ static VALUE read_array(int *index, char *c_pg_array_string, int array_string_le
|
|
187
196
|
else if(c == '{')
|
188
197
|
{
|
189
198
|
(*index)++;
|
190
|
-
rb_ary_push(array, read_array(index, c_pg_array_string, array_string_length, word, converter
|
199
|
+
rb_ary_push(array, read_array(index, c_pg_array_string, array_string_length, word, converter
|
200
|
+
#ifdef SPG_ENCODING
|
201
|
+
, enc_index
|
202
|
+
#endif
|
203
|
+
));
|
191
204
|
escapeNext = 1;
|
192
205
|
}
|
193
206
|
else
|
@@ -230,7 +243,11 @@ static VALUE parse_pg_array(VALUE self, VALUE pg_array_string, VALUE converter)
|
|
230
243
|
char *word = RSTRING_PTR(buf);
|
231
244
|
int index = 1;
|
232
245
|
|
233
|
-
return read_array(&index, c_pg_array_string, array_string_length, word, converter
|
246
|
+
return read_array(&index, c_pg_array_string, array_string_length, word, converter
|
247
|
+
#ifdef SPG_ENCODING
|
248
|
+
, enc_get_index(pg_array_string)
|
249
|
+
#endif
|
250
|
+
);
|
234
251
|
}
|
235
252
|
|
236
253
|
static VALUE spg_time(const char *s) {
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pg
|