pgsql 1.9.2 → 1.9.3

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: '09bfda9c735da18dfbd986a66e29ad0fb7d7a89257e47fe2696094e6deb6d012'
4
- data.tar.gz: ffb57400fdf3a67e777a76f8070d85c785bd3a588679da9316e620c96460ff84
3
+ metadata.gz: cc0106f3924d41c61e9f64a26231d1cd464a1e989ee06b8282805387dc244fe0
4
+ data.tar.gz: 90c900d16b8b8d97c0357a04f1fc3ad6235932e626b591126c0d57b6f7b234b5
5
5
  SHA512:
6
- metadata.gz: eda3796cb0d7604b3e2119d08f6cea4cee5d1a1455ceee2fa018fbbc5a9426f88d97ffd1714e9d01879fd6b5fadbafe2eb23b4b60b959f85d7a85c73aa9311e1
7
- data.tar.gz: b9cd0c5e075530a708bca6956977dfd7482b3e478186fb1bc169633ce1d4fcbf8f02f88668a3dcca3552103c545f0c1a19d6d89190cfd5441ed7a7d4cbce51aa
6
+ metadata.gz: e20984f294736af96653d37a3fd855373b94b4911035e901d9ba97536fb600ae0fe99ede1c967e77c84ffb301b3a62f1a00643145cc4464567f0464f23fdee14
7
+ data.tar.gz: 6edd020112c1313e0a25f4a8c6186895193a609d91a0aee893a6828192a7c198c8368475fc2f001e8c04c79b545735272724728fb689b778cef9e62f8ff7f51c
data/lib/conn.c CHANGED
@@ -16,8 +16,9 @@
16
16
  extern void pg_check_conninvalid( struct pgconn_data *c);
17
17
  static VALUE pgconnfailederror_new( struct pgconn_data *c, VALUE params);
18
18
 
19
- static void pgconn_mark( struct pgconn_data *ptr);
20
- static void pgconn_free( struct pgconn_data *ptr);
19
+ static void pgconn_mark( void *ptr);
20
+ static void pgconn_free( void *ptr);
21
+ static size_t pgconn_memsize( const void *ptr);
21
22
  extern struct pgconn_data *get_pgconn( VALUE obj);
22
23
  static VALUE pgconn_encode_in4out( struct pgconn_data *ptr, VALUE str);
23
24
  extern const char *pgconn_destring( struct pgconn_data *ptr, VALUE str, int *len);
@@ -76,6 +77,12 @@ static VALUE sym_password = Qundef;
76
77
 
77
78
  static ID id_to_s;
78
79
 
80
+ static const rb_data_type_t pgconn_data_data_type = {
81
+ "pgsql:pgconn_data",
82
+ { &pgconn_mark, &pgconn_free, &pgconn_memsize,},
83
+ 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
84
+ };
85
+
79
86
 
80
87
  void
81
88
  pg_check_conninvalid( struct pgconn_data *c)
@@ -99,21 +106,29 @@ pgconnfailederror_new( struct pgconn_data *c, VALUE params)
99
106
 
100
107
 
101
108
  void
102
- pgconn_mark( struct pgconn_data *ptr)
109
+ pgconn_mark( void *ptr)
103
110
  {
104
- rb_gc_mark( ptr->notice);
111
+ struct pgconn_data *pd = ptr;
105
112
  #ifdef RUBY_ENCODING
106
- rb_gc_mark( ptr->external);
107
- rb_gc_mark( ptr->internal);
113
+ rb_gc_mark( pd->external);
114
+ rb_gc_mark( pd->internal);
108
115
  #endif
116
+ rb_gc_mark( pd->notice);
109
117
  }
110
118
 
111
119
  void
112
- pgconn_free( struct pgconn_data *ptr)
120
+ pgconn_free( void *ptr)
121
+ {
122
+ struct pgconn_data *pd = ptr;
123
+ if (pd->conn != NULL)
124
+ PQfinish( pd->conn);
125
+ ruby_xfree( ptr);
126
+ }
127
+
128
+ static size_t
129
+ pgconn_memsize( const void *ptr)
113
130
  {
114
- if (ptr->conn != NULL)
115
- PQfinish( ptr->conn);
116
- free( ptr);
131
+ return sizeof (struct pgconn_data);
117
132
  }
118
133
 
119
134
  struct pgconn_data *
@@ -121,7 +136,7 @@ get_pgconn( VALUE obj)
121
136
  {
122
137
  struct pgconn_data *c;
123
138
 
124
- Data_Get_Struct( obj, struct pgconn_data, c);
139
+ TypedData_Get_Struct( obj, struct pgconn_data, &pgconn_data_data_type, c);
125
140
  pg_check_conninvalid( c);
126
141
  return c;
127
142
  }
@@ -190,17 +205,16 @@ VALUE
190
205
  pgconn_alloc( VALUE cls)
191
206
  {
192
207
  struct pgconn_data *c;
193
- VALUE r;
208
+ VALUE obj;
194
209
 
195
- r = Data_Make_Struct( cls, struct pgconn_data,
196
- &pgconn_mark, &pgconn_free, c);
210
+ obj = TypedData_Make_Struct( cls, struct pgconn_data, &pgconn_data_data_type, c);
197
211
  c->conn = NULL;
198
212
  #ifdef RUBY_ENCODING
199
213
  c->external = rb_enc_from_encoding( rb_default_external_encoding());
200
214
  c->internal = rb_enc_from_encoding( rb_default_internal_encoding());
201
215
  #endif
202
216
  c->notice = Qnil;
203
- return r;
217
+ return obj;
204
218
  }
205
219
 
206
220
  /*
@@ -287,7 +301,7 @@ pgconn_init( int argc, VALUE *argv, VALUE self)
287
301
  str = Qnil;
288
302
  }
289
303
 
290
- Data_Get_Struct( self, struct pgconn_data, c);
304
+ TypedData_Get_Struct( self, struct pgconn_data, &pgconn_data_data_type, c);
291
305
 
292
306
  if (NIL_P( params)) {
293
307
  c->conn = PQconnectdb( RSTRING_PTR( rb_funcall( str, id_to_s, 0)));
@@ -405,7 +419,7 @@ pgconn_close( VALUE self)
405
419
  {
406
420
  struct pgconn_data *c;
407
421
 
408
- Data_Get_Struct( self, struct pgconn_data, c);
422
+ TypedData_Get_Struct( self, struct pgconn_data, &pgconn_data_data_type, c);
409
423
  PQfinish( c->conn);
410
424
  c->conn = NULL;
411
425
  return Qnil;
@@ -470,7 +484,7 @@ pgconn_externalenc( VALUE self)
470
484
  {
471
485
  struct pgconn_data *c;
472
486
 
473
- Data_Get_Struct( self, struct pgconn_data, c);
487
+ TypedData_Get_Struct( self, struct pgconn_data, &pgconn_data_data_type, c);
474
488
  return c->external;
475
489
  }
476
490
 
@@ -487,7 +501,7 @@ pgconn_set_externalenc( VALUE self, VALUE enc)
487
501
  rb_encoding *e;
488
502
 
489
503
  e = NIL_P( enc) ? rb_to_encoding( enc) : rb_default_external_encoding();
490
- Data_Get_Struct( self, struct pgconn_data, c);
504
+ TypedData_Get_Struct( self, struct pgconn_data, &pgconn_data_data_type, c);
491
505
  c->external = rb_enc_from_encoding( e);
492
506
 
493
507
  return Qnil;
@@ -504,7 +518,7 @@ pgconn_internalenc( VALUE self)
504
518
  {
505
519
  struct pgconn_data *c;
506
520
 
507
- Data_Get_Struct( self, struct pgconn_data, c);
521
+ TypedData_Get_Struct( self, struct pgconn_data, &pgconn_data_data_type, c);
508
522
  return c->internal;
509
523
  }
510
524
 
@@ -521,7 +535,7 @@ pgconn_set_internalenc( VALUE self, VALUE enc)
521
535
  rb_encoding *e;
522
536
 
523
537
  e = NIL_P( enc) ? rb_to_encoding( enc) : rb_default_internal_encoding();
524
- Data_Get_Struct( self, struct pgconn_data, c);
538
+ TypedData_Get_Struct( self, struct pgconn_data, &pgconn_data_data_type, c);
525
539
  c->internal = rb_enc_from_encoding( e);
526
540
 
527
541
  return Qnil;
@@ -785,7 +799,7 @@ pgconn_on_notice( VALUE self)
785
799
  {
786
800
  struct pgconn_data *c;
787
801
 
788
- Data_Get_Struct( self, struct pgconn_data, c);
802
+ TypedData_Get_Struct( self, struct pgconn_data, &pgconn_data_data_type, c);
789
803
  if (PQsetNoticeReceiver( c->conn, NULL, NULL) != &notice_receiver) {
790
804
  PQsetNoticeReceiver( c->conn, &notice_receiver, (void *) c);
791
805
  }
data/lib/conn_exec.c CHANGED
@@ -93,7 +93,7 @@ pg_statement_exec( VALUE conn, VALUE cmd, VALUE par)
93
93
  }
94
94
  if (result == NULL)
95
95
  pg_raise_connexec( c);
96
- return pgresult_new( result, c, cmd, par);
96
+ return pgresult_new( result, conn, cmd, par);
97
97
  }
98
98
 
99
99
 
@@ -268,7 +268,7 @@ pgconn_fetch( int argc, VALUE *argv, VALUE conn)
268
268
  while ((result = PQgetResult( c->conn)) != NULL) {
269
269
  VALUE res;
270
270
 
271
- res = pgresult_new( result, c, Qnil, Qnil);
271
+ res = pgresult_new( result, conn, Qnil, Qnil);
272
272
  rb_ensure( rb_yield, res, pgresult_clear, res);
273
273
  }
274
274
  return Qnil;
@@ -430,7 +430,7 @@ pgconn_select_row( int argc, VALUE *argv, VALUE self)
430
430
  pg_parse_parameters( argc, argv, &cmd, &par);
431
431
  res = pg_statement_exec( self, cmd, par);
432
432
 
433
- Data_Get_Struct( res, struct pgresult_data, r);
433
+ TypedData_Get_Struct( res, struct pgresult_data, &pgresult_data_data_type, r);
434
434
  return pg_fetchrow( r, 0);
435
435
  }
436
436
 
@@ -451,7 +451,7 @@ pgconn_select_value( int argc, VALUE *argv, VALUE self)
451
451
  pg_parse_parameters( argc, argv, &cmd, &par);
452
452
  res = pg_statement_exec( self, cmd, par);
453
453
 
454
- Data_Get_Struct( res, struct pgresult_data, r);
454
+ TypedData_Get_Struct( res, struct pgresult_data, &pgresult_data_data_type, r);
455
455
  return PQntuples( r->res) > 0 && PQnfields( r->res) > 0 ?
456
456
  pg_fetchresult( r, 0, 0) : Qnil;
457
457
  }
@@ -476,7 +476,7 @@ pgconn_select_values( int argc, VALUE *argv, VALUE self)
476
476
  pg_parse_parameters( argc, argv, &cmd, &par);
477
477
  res = pg_statement_exec( self, cmd, par);
478
478
 
479
- Data_Get_Struct( res, struct pgresult_data, r);
479
+ TypedData_Get_Struct( res, struct pgresult_data, &pgresult_data_data_type, r);
480
480
  m = PQntuples( r->res), n = PQnfields( r->res);
481
481
  l = m * n;
482
482
  if (l == 0)
@@ -735,7 +735,7 @@ put_end( VALUE self)
735
735
  if (r < 0)
736
736
  rb_raise( rb_ePgConnCopy, "Copy from stdin failed to finish.");
737
737
  while ((res = PQgetResult( c->conn)) != NULL)
738
- pgresult_new( res, c, Qnil, Qnil);
738
+ pgresult_new( res, self, Qnil, Qnil);
739
739
  return Qnil;
740
740
  }
741
741
 
@@ -836,7 +836,7 @@ get_end( VALUE self)
836
836
 
837
837
  c = get_pgconn( self);
838
838
  if ((res = PQgetResult( c->conn)) != NULL)
839
- pgresult_new( res, c, Qnil, Qnil);
839
+ pgresult_new( res, self, Qnil, Qnil);
840
840
  return Qnil;
841
841
  }
842
842
 
data/lib/module.c CHANGED
@@ -8,7 +8,7 @@
8
8
  #include "result.h"
9
9
 
10
10
 
11
- #define PGSQL_VERSION "1.9.2"
11
+ #define PGSQL_VERSION "1.9.3"
12
12
 
13
13
 
14
14
  VALUE rb_mPg;
data/lib/result.c CHANGED
@@ -8,7 +8,6 @@
8
8
  #include "conn_quote.h"
9
9
 
10
10
 
11
- static void pgresult_init( struct pgresult_data *r, PGresult *result, struct pgconn_data *conn);
12
11
  static VALUE pgreserror_new( VALUE result, VALUE cmd, VALUE par);
13
12
 
14
13
  static struct pgresult_data *pgreserror_result( VALUE self);
@@ -22,8 +21,11 @@ static VALUE pgreserror_diag( VALUE self, VALUE field);
22
21
 
23
22
  static VALUE pgresult_s_translate_results_set( VALUE cls, VALUE fact);
24
23
 
25
- static void pgresult_free( struct pgresult_data *ptr);
26
- extern VALUE pgresult_new( PGresult *result, struct pgconn_data *conn, VALUE cmd, VALUE par);
24
+ static void pgresult_mark( void *ptr);
25
+ static void pgresult_free( void *ptr);
26
+ static size_t pgresult_memsize( const void *ptr);
27
+ static VALUE pgresult_alloc( VALUE cls);
28
+ extern VALUE pgresult_new( PGresult *result, VALUE conn, VALUE cmd, VALUE par);
27
29
 
28
30
  extern VALUE pgresult_clear( VALUE self);
29
31
 
@@ -64,6 +66,14 @@ static int translate_results = 1;
64
66
 
65
67
 
66
68
 
69
+ const rb_data_type_t pgresult_data_data_type = {
70
+ "mydata",
71
+ { &pgresult_mark, &pgresult_free, &pgresult_memsize,},
72
+ 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
73
+ };
74
+
75
+
76
+
67
77
 
68
78
  VALUE
69
79
  pgreserror_new( VALUE result, VALUE cmd, VALUE par)
@@ -71,8 +81,8 @@ pgreserror_new( VALUE result, VALUE cmd, VALUE par)
71
81
  struct pgresult_data *r;
72
82
  VALUE rse, msg;
73
83
 
74
- Data_Get_Struct( result, struct pgresult_data, r);
75
- msg = pgconn_mkstring( r->conn, PQresultErrorMessage( r->res));
84
+ TypedData_Get_Struct( result, struct pgresult_data, &pgresult_data_data_type, r);
85
+ msg = pgconn_mkstring( get_pgconn( r->conn), PQresultErrorMessage( r->res));
76
86
  rse = rb_class_new_instance( 1, &msg, rb_ePgResError);
77
87
  rb_ivar_set( rse, id_result, result);
78
88
  rb_ivar_set( rse, rb_intern( "@command"), cmd);
@@ -87,7 +97,7 @@ pgreserror_result( VALUE self)
87
97
  {
88
98
  struct pgresult_data *r;
89
99
 
90
- Data_Get_Struct( rb_ivar_get( self, id_result), struct pgresult_data, r);
100
+ TypedData_Get_Struct( rb_ivar_get( self, id_result), struct pgresult_data, &pgresult_data_data_type, r);
91
101
  return r;
92
102
  }
93
103
 
@@ -120,7 +130,7 @@ pgreserror_sqlst( VALUE self)
120
130
  struct pgresult_data *r;
121
131
 
122
132
  r = pgreserror_result( self);
123
- return pgconn_mkstring( r->conn, PQresultErrorField( r->res, PG_DIAG_SQLSTATE));
133
+ return pgconn_mkstring( get_pgconn( r->conn), PQresultErrorField( r->res, PG_DIAG_SQLSTATE));
124
134
  }
125
135
 
126
136
  /*
@@ -136,7 +146,7 @@ pgreserror_primary( VALUE self)
136
146
  struct pgresult_data *r;
137
147
 
138
148
  r = pgreserror_result( self);
139
- return pgconn_mkstring( r->conn, PQresultErrorField( r->res, PG_DIAG_MESSAGE_PRIMARY));
149
+ return pgconn_mkstring( get_pgconn( r->conn), PQresultErrorField( r->res, PG_DIAG_MESSAGE_PRIMARY));
140
150
  }
141
151
 
142
152
 
@@ -153,7 +163,7 @@ pgreserror_detail( VALUE self)
153
163
  struct pgresult_data *r;
154
164
 
155
165
  r = pgreserror_result( self);
156
- return pgconn_mkstring( r->conn, PQresultErrorField( r->res, PG_DIAG_MESSAGE_DETAIL));
166
+ return pgconn_mkstring( get_pgconn( r->conn), PQresultErrorField( r->res, PG_DIAG_MESSAGE_DETAIL));
157
167
  }
158
168
 
159
169
 
@@ -170,7 +180,7 @@ pgreserror_hint( VALUE self)
170
180
  struct pgresult_data *r;
171
181
 
172
182
  r = pgreserror_result( self);
173
- return pgconn_mkstring( r->conn, PQresultErrorField( r->res, PG_DIAG_MESSAGE_HINT));
183
+ return pgconn_mkstring( get_pgconn( r->conn), PQresultErrorField( r->res, PG_DIAG_MESSAGE_HINT));
174
184
  }
175
185
 
176
186
 
@@ -188,7 +198,7 @@ pgreserror_diag( VALUE self, VALUE field)
188
198
  struct pgresult_data *r;
189
199
 
190
200
  r = pgreserror_result( self);
191
- return pgconn_mkstring( r->conn, PQresultErrorField( r->res, NUM2INT( field)));
201
+ return pgconn_mkstring( get_pgconn( r->conn), PQresultErrorField( r->res, NUM2INT( field)));
192
202
  }
193
203
 
194
204
 
@@ -211,30 +221,57 @@ pgresult_s_translate_results_set( VALUE cls, VALUE fact)
211
221
 
212
222
 
213
223
  void
214
- pgresult_free( struct pgresult_data *ptr)
224
+ pgresult_mark( void *ptr)
215
225
  {
216
- if (ptr->res != NULL)
217
- PQclear( ptr->res);
218
- free( ptr);
226
+ struct pgresult_data *rd = ptr;
227
+ rb_gc_mark( rd->conn);
228
+ rb_gc_mark( rd->fields);
229
+ rb_gc_mark( rd->indices);
219
230
  }
220
231
 
221
232
  void
222
- pgresult_init( struct pgresult_data *r, PGresult *result, struct pgconn_data *conn)
233
+ pgresult_free( void *ptr)
223
234
  {
224
- r->res = result;
225
- r->conn = conn;
235
+ struct pgresult_data *rd = ptr;
236
+ if (rd->res != NULL)
237
+ PQclear( rd->res);
238
+ ruby_xfree( ptr);
239
+ }
240
+
241
+ size_t
242
+ pgresult_memsize( const void *ptr)
243
+ {
244
+ return sizeof (struct pgresult_data);
245
+ }
246
+
247
+
248
+
249
+ VALUE
250
+ pgresult_alloc( VALUE cls)
251
+ {
252
+ struct pgresult_data *r;
253
+ VALUE obj;
254
+
255
+ obj = TypedData_Make_Struct( cls, struct pgresult_data, &pgresult_data_data_type, r);
256
+ r->res = NULL;
257
+ r->conn = Qnil;
226
258
  r->fields = Qnil;
227
259
  r->indices = Qnil;
260
+ return obj;
228
261
  }
229
262
 
230
263
  VALUE
231
- pgresult_new( PGresult *result, struct pgconn_data *conn, VALUE cmd, VALUE par)
264
+ pgresult_new( PGresult *result, VALUE conn, VALUE cmd, VALUE par)
232
265
  {
233
266
  struct pgresult_data *r;
234
267
  VALUE res;
235
268
 
236
- res = Data_Make_Struct( rb_cPgResult, struct pgresult_data, 0, &pgresult_free, r);
237
- pgresult_init( r, result, conn);
269
+ res = rb_class_new_instance( 0, NULL, rb_cPgResult);
270
+ TypedData_Get_Struct( res, struct pgresult_data, &pgresult_data_data_type, r);
271
+ r->res = result;
272
+ r->conn = conn;
273
+ r->fields = Qnil;
274
+ r->indices = Qnil;
238
275
  switch (PQresultStatus( result)) {
239
276
  case PGRES_EMPTY_QUERY:
240
277
  case PGRES_COMMAND_OK:
@@ -267,7 +304,7 @@ pgresult_clear( VALUE self)
267
304
  {
268
305
  struct pgresult_data *r;
269
306
 
270
- Data_Get_Struct( self, struct pgresult_data, r);
307
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
271
308
  if (r->res != NULL) {
272
309
  PQclear( r->res);
273
310
  r->res = NULL;
@@ -292,7 +329,7 @@ pgresult_status( VALUE self)
292
329
  {
293
330
  struct pgresult_data *r;
294
331
 
295
- Data_Get_Struct( self, struct pgresult_data, r);
332
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
296
333
  return INT2FIX( PQresultStatus( r->res));
297
334
  }
298
335
 
@@ -313,7 +350,7 @@ pgresult_fields( VALUE self)
313
350
  {
314
351
  struct pgresult_data *r;
315
352
 
316
- Data_Get_Struct( self, struct pgresult_data, r);
353
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
317
354
  if (NIL_P( r->fields)) {
318
355
  VALUE ary;
319
356
  int n, i;
@@ -322,7 +359,7 @@ pgresult_fields( VALUE self)
322
359
  n = PQnfields( r->res);
323
360
  ary = rb_ary_new2( n);
324
361
  for (i = 0; n; i++, n--) {
325
- str = pgconn_mkstring( r->conn, PQfname( r->res, i));
362
+ str = pgconn_mkstring( get_pgconn( r->conn), PQfname( r->res, i));
326
363
  rb_str_freeze( str);
327
364
  rb_ary_push( ary, str);
328
365
  }
@@ -347,7 +384,7 @@ pgresult_field_indices( VALUE self)
347
384
  {
348
385
  struct pgresult_data *r;
349
386
 
350
- Data_Get_Struct( self, struct pgresult_data, r);
387
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
351
388
  if (NIL_P( r->indices)) {
352
389
  VALUE hsh;
353
390
  int n, i;
@@ -356,7 +393,7 @@ pgresult_field_indices( VALUE self)
356
393
  n = PQnfields( r->res);
357
394
  hsh = rb_hash_new();
358
395
  for (i = 0; n; i++, n--) {
359
- str = pgconn_mkstring( r->conn, PQfname( r->res, i));
396
+ str = pgconn_mkstring( get_pgconn( r->conn), PQfname( r->res, i));
360
397
  rb_str_freeze( str);
361
398
  rb_hash_aset( hsh, str, INT2FIX( i));
362
399
  }
@@ -379,7 +416,7 @@ pgresult_num_fields( VALUE self)
379
416
  {
380
417
  struct pgresult_data *r;
381
418
 
382
- Data_Get_Struct( self, struct pgresult_data, r);
419
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
383
420
  return INT2FIX( PQnfields( r->res));
384
421
  }
385
422
 
@@ -400,8 +437,8 @@ pgresult_fieldname( VALUE self, VALUE index)
400
437
  {
401
438
  struct pgresult_data *r;
402
439
 
403
- Data_Get_Struct( self, struct pgresult_data, r);
404
- return pgconn_mkstring( r->conn, PQfname( r->res, NUM2INT( index)));
440
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
441
+ return pgconn_mkstring( get_pgconn( r->conn), PQfname( r->res, NUM2INT( index)));
405
442
  }
406
443
 
407
444
  /*
@@ -423,8 +460,8 @@ pgresult_fieldnum( VALUE self, VALUE name)
423
460
  int n;
424
461
 
425
462
  StringValue( name);
426
- Data_Get_Struct( self, struct pgresult_data, r);
427
- n = PQfnumber( r->res, pgconn_destring( r->conn, name, NULL));
463
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
464
+ n = PQfnumber( r->res, pgconn_destring( get_pgconn( r->conn), name, NULL));
428
465
  if (n == -1)
429
466
  rb_raise( rb_eArgError, "Unknown field: %s", RSTRING_PTR( name));
430
467
  return INT2FIX( n);
@@ -448,7 +485,7 @@ pgresult_each( VALUE self)
448
485
  struct pgresult_data *r;
449
486
  int m, j;
450
487
 
451
- Data_Get_Struct( self, struct pgresult_data, r);
488
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
452
489
  for (j = 0, m = PQntuples( r->res); m; j++, m--)
453
490
  rb_yield( pg_fetchrow( r, j));
454
491
  return m ? INT2FIX( m) : Qnil;
@@ -472,7 +509,7 @@ pgresult_aref( int argc, VALUE *argv, VALUE self)
472
509
  VALUE aj, ai;
473
510
  int j, i;
474
511
 
475
- Data_Get_Struct( self, struct pgresult_data, r);
512
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
476
513
  a = rb_scan_args( argc, argv, "11", &aj, &ai);
477
514
  j = NUM2INT( aj);
478
515
  if (j < PQntuples( r->res)) {
@@ -524,7 +561,7 @@ pg_fetchresult( struct pgresult_data *r, int row, int col)
524
561
  return Qnil;
525
562
 
526
563
  if (!translate_results)
527
- return pgconn_mkstring( r->conn, string);
564
+ return pgconn_mkstring( get_pgconn( r->conn), string);
528
565
 
529
566
  typ = PQftype( r->res, col);
530
567
  cls = Qnil;
@@ -575,7 +612,7 @@ pg_fetchresult( struct pgresult_data *r, int row, int col)
575
612
  break;
576
613
  }
577
614
  if (NIL_P( ret)) {
578
- ret = pgconn_mkstring( r->conn, string);
615
+ ret = pgconn_mkstring( get_pgconn( r->conn), string);
579
616
  if (RTEST( cls))
580
617
  ret = rb_funcall( cls, id_parse, 1, ret);
581
618
  }
@@ -595,7 +632,7 @@ pgresult_num_tuples( VALUE self)
595
632
  {
596
633
  struct pgresult_data *r;
597
634
 
598
- Data_Get_Struct( self, struct pgresult_data, r);
635
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
599
636
  return INT2FIX( PQntuples( r->res));
600
637
  }
601
638
 
@@ -617,7 +654,7 @@ pgresult_type( VALUE self, VALUE index)
617
654
  struct pgresult_data *r;
618
655
  int n;
619
656
 
620
- Data_Get_Struct( self, struct pgresult_data, r);
657
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
621
658
  n = PQftype( r->res, NUM2INT( index));
622
659
  return n ? INT2FIX( n) : Qnil;
623
660
  }
@@ -639,7 +676,7 @@ pgresult_size( VALUE self, VALUE index)
639
676
  struct pgresult_data *r;
640
677
  int n;
641
678
 
642
- Data_Get_Struct( self, struct pgresult_data, r);
679
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
643
680
  n = PQfsize( r->res, NUM2INT( index));
644
681
  return n ? INT2FIX( n) : Qnil;
645
682
  }
@@ -659,7 +696,7 @@ pgresult_getvalue( VALUE self, VALUE row, VALUE col)
659
696
  {
660
697
  struct pgresult_data *r;
661
698
 
662
- Data_Get_Struct( self, struct pgresult_data, r);
699
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
663
700
  return pg_fetchresult( r, NUM2INT( row), NUM2INT( col));
664
701
  }
665
702
 
@@ -678,7 +715,7 @@ pgresult_getlength( VALUE self, VALUE row, VALUE col)
678
715
  {
679
716
  struct pgresult_data *r;
680
717
 
681
- Data_Get_Struct( self, struct pgresult_data, r);
718
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
682
719
  return INT2FIX( PQgetlength( r->res, NUM2INT( row), NUM2INT( col)));
683
720
  }
684
721
 
@@ -696,7 +733,7 @@ pgresult_getisnull( VALUE self, VALUE row, VALUE col)
696
733
  {
697
734
  struct pgresult_data *r;
698
735
 
699
- Data_Get_Struct( self, struct pgresult_data, r);
736
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
700
737
  return PQgetisnull( r->res, NUM2INT( row), NUM2INT( col)) ? Qtrue : Qfalse;
701
738
  }
702
739
 
@@ -739,7 +776,7 @@ pgresult_cmdtuples( VALUE self)
739
776
  struct pgresult_data *r;
740
777
  char *n;
741
778
 
742
- Data_Get_Struct( self, struct pgresult_data, r);
779
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
743
780
  n = PQcmdTuples( r->res);
744
781
  return *n ? rb_cstr_to_inum( n, 10, 0) : Qnil;
745
782
  }
@@ -756,9 +793,9 @@ pgresult_cmdstatus( VALUE self)
756
793
  struct pgresult_data *r;
757
794
  char *n;
758
795
 
759
- Data_Get_Struct( self, struct pgresult_data, r);
796
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
760
797
  n = PQcmdStatus( r->res);
761
- return n ? pgconn_mkstring( r->conn, n) : Qnil;
798
+ return n ? pgconn_mkstring( get_pgconn( r->conn), n) : Qnil;
762
799
  }
763
800
 
764
801
  /*
@@ -773,7 +810,7 @@ pgresult_oid( VALUE self)
773
810
  struct pgresult_data *r;
774
811
  Oid n;
775
812
 
776
- Data_Get_Struct( self, struct pgresult_data, r);
813
+ TypedData_Get_Struct( self, struct pgresult_data, &pgresult_data_data_type, r);
777
814
  n = PQoidValue( r->res);
778
815
  return n == InvalidOid ? Qnil : INT2FIX( n);
779
816
  }
@@ -836,7 +873,7 @@ Init_pgsql_result( void)
836
873
 
837
874
  rb_define_singleton_method( rb_cPgResult, "translate_results=", pgresult_s_translate_results_set, 1);
838
875
 
839
- rb_undef_method( CLASS_OF( rb_cPgResult), "new");
876
+ rb_define_alloc_func( rb_cPgResult, pgresult_alloc);
840
877
  rb_define_method( rb_cPgResult, "clear", &pgresult_clear, 0);
841
878
  rb_define_alias( rb_cPgResult, "close", "clear");
842
879
 
data/lib/result.h CHANGED
@@ -10,15 +10,18 @@
10
10
 
11
11
 
12
12
  struct pgresult_data {
13
- PGresult *res;
14
- struct pgconn_data *conn;
15
- VALUE fields;
16
- VALUE indices;
13
+ PGresult *res;
14
+ VALUE conn;
15
+ VALUE fields;
16
+ VALUE indices;
17
17
  };
18
18
 
19
19
 
20
20
 
21
- extern VALUE pgresult_new( PGresult *result, struct pgconn_data *conn, VALUE cmd, VALUE par);
21
+ extern const rb_data_type_t pgresult_data_data_type;
22
+
23
+
24
+ extern VALUE pgresult_new( PGresult *result, VALUE conn, VALUE cmd, VALUE par);
22
25
  extern VALUE pgresult_clear( VALUE self);
23
26
  extern VALUE pgresult_each( VALUE self);
24
27
  extern VALUE pg_fetchrow( struct pgresult_data *r, int num);
data/lib/undef.h CHANGED
@@ -8,4 +8,4 @@
8
8
  #undef PACKAGE_TARNAME
9
9
  #undef PACKAGE_VERSION
10
10
  #undef _
11
-
11
+ #undef restrict
metadata CHANGED
@@ -1,29 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pgsql
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.2
4
+ version: 1.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bertram Scharpf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-08 00:00:00.000000000 Z
11
+ date: 2023-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: autorake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '13.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '13.0'
27
41
  description: |
28
42
  This is not the official PostgreSQL library that was originally written by Guy
29
43
  Decoux. As the project wasn't maintained a long time after Guy's decease, I
@@ -73,7 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
87
  version: '0'
74
88
  requirements:
75
89
  - PostgreSQL
76
- rubygems_version: 3.4.17
90
+ rubygems_version: 3.4.19
77
91
  signing_key:
78
92
  specification_version: 4
79
93
  summary: PostgreSQL-API for Ruby