pgsql 1.9 → 1.9.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2519cf85dd607a31191b7992cc99a93c31fb0b1103a38462f28cd77081599f0c
4
- data.tar.gz: 026e108f08ffa63454f29504120c04f8fe8b3b1ffb664bd4626e7ca9f98f078a
3
+ metadata.gz: '09bfda9c735da18dfbd986a66e29ad0fb7d7a89257e47fe2696094e6deb6d012'
4
+ data.tar.gz: ffb57400fdf3a67e777a76f8070d85c785bd3a588679da9316e620c96460ff84
5
5
  SHA512:
6
- metadata.gz: 608f44789a6b5c009558c75b1d37f71fd2b86d283c2b78bf361d76bf3d7bb37065b6426a26f7ecb7d97829b3b31e4e7cf4a0f53453e11fc7327a914d2d65ca8c
7
- data.tar.gz: 5e4e1fe2084fb5ba67646128d145de12840ad66c3fd54e0b22e65ea150c0d16444fc157ff19f61864fe048dd1eca4b3d7731ca8411376708ac81a2c7114b9774
6
+ metadata.gz: eda3796cb0d7604b3e2119d08f6cea4cee5d1a1455ceee2fa018fbbc5a9426f88d97ffd1714e9d01879fd6b5fadbafe2eb23b4b60b959f85d7a85c73aa9311e1
7
+ data.tar.gz: b9cd0c5e075530a708bca6956977dfd7482b3e478186fb1bc169633ce1d4fcbf8f02f88668a3dcca3552103c545f0c1a19d6d89190cfd5441ed7a7d4cbce51aa
data/lib/conn.c CHANGED
@@ -166,7 +166,7 @@ pgconn_mkstring( struct pgconn_data *ptr, const char *str)
166
166
  VALUE r;
167
167
 
168
168
  if (str) {
169
- r = rb_tainted_str_new2( str);
169
+ r = rb_str_new2( str);
170
170
  pgconn_encode_out4in( ptr, r);
171
171
  } else
172
172
  r = Qnil;
@@ -179,7 +179,7 @@ pgconn_mkstringn( struct pgconn_data *ptr, const char *str, int len)
179
179
  VALUE r;
180
180
 
181
181
  if (str) {
182
- r = rb_tainted_str_new( str, len);
182
+ r = rb_str_new( str, len);
183
183
  pgconn_encode_out4in( ptr, r);
184
184
  } else
185
185
  r = Qnil;
@@ -438,7 +438,7 @@ pgconn_client_encoding( VALUE self)
438
438
  {
439
439
  char *encoding = (char *) pg_encoding_to_char(
440
440
  PQclientEncoding( get_pgconn( self)->conn));
441
- return rb_tainted_str_new2( encoding);
441
+ return rb_str_new2( encoding);
442
442
  }
443
443
 
444
444
  /*
data/lib/conn_exec.c CHANGED
@@ -20,11 +20,13 @@ static void free_strings( char **strs, int len);
20
20
  static void pg_parse_parameters( int argc, VALUE *argv, VALUE *cmd, VALUE *par);
21
21
 
22
22
  static VALUE pgconn_exec( int argc, VALUE *argv, VALUE obj);
23
+ static VALUE yield_or_return_result( VALUE res);
23
24
  static VALUE pgconn_send( int argc, VALUE *argv, VALUE obj);
24
25
  static VALUE pgconn_fetch( int argc, VALUE *argv, VALUE conn);
25
26
  static void wait_for_pgsocket( PGconn *c, VALUE to);
26
- static VALUE yield_or_return_result( VALUE res);
27
27
  static VALUE clear_resultqueue( VALUE self);
28
+ static VALUE pgconn_fetch_rows( int argc, VALUE *argv, VALUE conn);
29
+ static VALUE fetch_result_each( RB_BLOCK_CALL_FUNC_ARGLIST( res, arg));
28
30
 
29
31
  static VALUE pgconn_query( int argc, VALUE *argv, VALUE self);
30
32
  static VALUE pgconn_select_row( int argc, VALUE *argv, VALUE self);
@@ -61,6 +63,7 @@ static VALUE rb_ePgConnTrans;
61
63
  static VALUE rb_ePgConnCopy;
62
64
 
63
65
  static ID id_to_a;
66
+ static ID id_fetch;
64
67
 
65
68
 
66
69
  void
@@ -190,6 +193,13 @@ pgconn_exec( int argc, VALUE *argv, VALUE self)
190
193
  return yield_or_return_result( res);
191
194
  }
192
195
 
196
+ VALUE
197
+ yield_or_return_result( VALUE result)
198
+ {
199
+ return rb_block_given_p() ?
200
+ rb_ensure( rb_yield, result, pgresult_clear, result) : result;
201
+ }
202
+
193
203
 
194
204
  /*
195
205
  * call-seq:
@@ -213,8 +223,7 @@ pgconn_exec( int argc, VALUE *argv, VALUE self)
213
223
  * end
214
224
  * end
215
225
  *
216
- * Multiple select statements will not be separated by an empty result
217
- * or something similar. Query twice if you want to separate them.
226
+ * Multiple select statements will be separated by an empty result.
218
227
  *
219
228
  * Pg::Conn.connect do |conn|
220
229
  * conn.send "SELECT 33; SELECT 'foo';" do
@@ -241,7 +250,6 @@ pgconn_send( int argc, VALUE *argv, VALUE self)
241
250
  * Fetches the results of the previous Pg::Conn#send call.
242
251
  * See there for an example.
243
252
  *
244
- * The result will be +nil+ if there are no more results.
245
253
  */
246
254
  VALUE
247
255
  pgconn_fetch( int argc, VALUE *argv, VALUE conn)
@@ -258,10 +266,10 @@ pgconn_fetch( int argc, VALUE *argv, VALUE conn)
258
266
  pg_raise_connexec( c);
259
267
  if (PQisBusy( c->conn) == 0)
260
268
  while ((result = PQgetResult( c->conn)) != NULL) {
261
- if (PQntuples( result) == 0)
262
- PQclear( result);
263
- else
264
- rb_yield( pgresult_new( result, c, Qnil, Qnil));
269
+ VALUE res;
270
+
271
+ res = pgresult_new( result, c, Qnil, Qnil);
272
+ rb_ensure( rb_yield, res, pgresult_clear, res);
265
273
  }
266
274
  return Qnil;
267
275
  }
@@ -310,13 +318,6 @@ wait_for_pgsocket( PGconn *c, VALUE to)
310
318
  rb_raise( rb_ePgConnTimeout, "Wait for data timed out.");
311
319
  }
312
320
 
313
- VALUE
314
- yield_or_return_result( VALUE result)
315
- {
316
- return rb_block_given_p() ?
317
- rb_ensure( rb_yield, result, pgresult_clear, result) : result;
318
- }
319
-
320
321
  VALUE
321
322
  clear_resultqueue( VALUE conn)
322
323
  {
@@ -347,6 +348,37 @@ clear_resultqueue( VALUE conn)
347
348
  }
348
349
 
349
350
 
351
+ /*
352
+ * call-seq:
353
+ * conn.fetch_rows( timeout = nil) { |row| ... } -> obj
354
+ *
355
+ * Fetches the results of the previous Pg::Conn#send call as an array.
356
+ *
357
+ * Multiple select statements will _not_ be separated by an empty array or
358
+ * something similar. Query twice or call +#fetch+ if you want to separate
359
+ * them.
360
+ *
361
+ * Pg::Conn.connect do |conn|
362
+ * conn.send "SELECT 33; SELECT 'foo';" do
363
+ * conn.fetch { |row|
364
+ * puts row.inspect
365
+ * }
366
+ * end
367
+ * end
368
+ */
369
+ VALUE
370
+ pgconn_fetch_rows( int argc, VALUE *argv, VALUE conn)
371
+ {
372
+ if (!id_fetch)
373
+ id_fetch = rb_intern( "fetch");
374
+ return rb_block_call( conn, id_fetch, argc, argv, fetch_result_each, Qnil);
375
+ }
376
+
377
+ VALUE
378
+ fetch_result_each( RB_BLOCK_CALL_FUNC_ARGLIST( res, arg))
379
+ {
380
+ return pgresult_each( res);
381
+ }
350
382
 
351
383
 
352
384
  /*
@@ -945,6 +977,7 @@ Init_pgsql_conn_exec( void)
945
977
  rb_define_method( rb_cPgConn, "exec", &pgconn_exec, -1);
946
978
  rb_define_method( rb_cPgConn, "send", &pgconn_send, -1);
947
979
  rb_define_method( rb_cPgConn, "fetch", &pgconn_fetch, -1);
980
+ rb_define_method( rb_cPgConn, "fetch_rows", &pgconn_fetch_rows, -1);
948
981
 
949
982
  rb_define_method( rb_cPgConn, "query", &pgconn_query, -1);
950
983
  rb_define_method( rb_cPgConn, "select_row", &pgconn_select_row, -1);
@@ -977,6 +1010,7 @@ Init_pgsql_conn_exec( void)
977
1010
 
978
1011
  rb_define_method( rb_cPgConn, "backup", &pgconn_backup, 1);
979
1012
 
980
- id_to_a = 0;
1013
+ id_to_a = 0;
1014
+ id_fetch = 0;
981
1015
  }
982
1016
 
data/lib/conn_quote.c CHANGED
@@ -159,7 +159,6 @@ pgconn_escape_bytea( VALUE self, VALUE str)
159
159
  (unsigned char *) RSTRING_PTR( str), RSTRING_LEN( str), &l);
160
160
  ret = rb_str_new( (char *) s, l - 1);
161
161
  PQfreemem( s);
162
- OBJ_INFECT( ret, str);
163
162
  return ret;
164
163
  }
165
164
 
@@ -216,7 +215,6 @@ pgconn_unescape_bytea( VALUE self, VALUE obj)
216
215
  rb_enc_associate( ret, rb_to_encoding( enc));
217
216
  #endif
218
217
 
219
- OBJ_INFECT( ret, obj);
220
218
  return ret;
221
219
  }
222
220
 
@@ -285,10 +283,9 @@ pgconn_stringize( VALUE self, VALUE obj)
285
283
  VALUE co;
286
284
 
287
285
  co = CLASS_OF( obj);
288
- if (co == rb_cTime) {
286
+ if (co == rb_cTime)
289
287
  result = rb_funcall( obj, id_iso8601, 0);
290
- OBJ_INFECT( result, obj);
291
- } else if (co == rb_cDate)
288
+ else if (co == rb_cDate)
292
289
  result = rb_obj_as_string( obj);
293
290
  else if (co == rb_cDateTime)
294
291
  result = rb_obj_as_string( obj);
@@ -298,7 +295,6 @@ pgconn_stringize( VALUE self, VALUE obj)
298
295
  else if (rb_respond_to( obj, id_to_postgres)) {
299
296
  result = rb_funcall( obj, id_to_postgres, 0);
300
297
  StringValue( result);
301
- OBJ_INFECT( result, obj);
302
298
  } else
303
299
  result = rb_obj_as_string( obj);
304
300
  }
@@ -355,7 +351,7 @@ pgconn_for_copy( VALUE self, VALUE obj)
355
351
  rb_global_variable( &pg_escape_regex);
356
352
  }
357
353
  if (RTEST( rb_reg_match( pg_escape_regex, ret)))
358
- ret = rb_block_call( ret, id_gsub, 1, &pg_escape_regex, gsub_escape_i, Qnil);
354
+ ret = rb_block_call( ret, id_gsub, 1, &pg_escape_regex, &gsub_escape_i, Qnil);
359
355
  }
360
356
  return ret;
361
357
  }
@@ -428,10 +424,8 @@ stringize_array( VALUE self, VALUE result, VALUE ary)
428
424
  rb_str_buf_cat2( result, ",");
429
425
  }
430
426
  r = pgconn_stringize( self, *o);
431
- if (!NIL_P( *o)) {
427
+ if (!NIL_P( *o))
432
428
  r = dquote_string( r);
433
- OBJ_INFECT( result, *o);
434
- }
435
429
  rb_str_buf_append( result, r);
436
430
  }
437
431
  return result;
@@ -542,7 +536,6 @@ VALUE pgconn_quote( VALUE self, VALUE obj)
542
536
  rb_str_buf_cat2( res, "::");
543
537
  rb_str_buf_cat2( res, type);
544
538
  }
545
- OBJ_INFECT( res, obj);
546
539
  }
547
540
  break;
548
541
  }
@@ -578,7 +571,6 @@ quote_string( VALUE conn, VALUE str)
578
571
  res = rb_str_new2( p);
579
572
  PQfreemem( p);
580
573
  rb_enc_associate( res, rb_enc_get( str));
581
- OBJ_INFECT( res, str);
582
574
  return res;
583
575
  }
584
576
 
@@ -643,7 +635,6 @@ pgconn_quote_identifier( VALUE self, VALUE str)
643
635
  res = rb_str_new2( p);
644
636
  PQfreemem( p);
645
637
  rb_enc_associate( res, rb_enc_get( str));
646
- OBJ_INFECT( res, str);
647
638
  return res;
648
639
  }
649
640
 
data/lib/module.c CHANGED
@@ -8,7 +8,7 @@
8
8
  #include "result.h"
9
9
 
10
10
 
11
- #define PGSQL_VERSION "1.9"
11
+ #define PGSQL_VERSION "1.9.2"
12
12
 
13
13
 
14
14
  VALUE rb_mPg;
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pgsql
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.9'
4
+ version: 1.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bertram Scharpf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-08 00:00:00.000000000 Z
11
+ date: 2023-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: autorake
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
73
  version: '0'
74
74
  requirements:
75
75
  - PostgreSQL
76
- rubygems_version: 3.0.8
76
+ rubygems_version: 3.4.17
77
77
  signing_key:
78
78
  specification_version: 4
79
79
  summary: PostgreSQL-API for Ruby