pg 1.2.1-x64-mingw32 → 1.3.0.rc2-x64-mingw32
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
- checksums.yaml.gz.sig +0 -0
- data/.appveyor.yml +36 -0
- data/.gems +6 -0
- data/.github/workflows/binary-gems.yml +85 -0
- data/.github/workflows/source-gem.yml +130 -0
- data/.gitignore +13 -0
- data/.hgsigs +34 -0
- data/.hgtags +41 -0
- data/.irbrc +23 -0
- data/.pryrc +23 -0
- data/.tm_properties +21 -0
- data/.travis.yml +49 -0
- data/Gemfile +14 -0
- data/History.rdoc +93 -7
- data/Manifest.txt +0 -1
- data/README.rdoc +8 -7
- data/Rakefile +31 -140
- data/Rakefile.cross +55 -56
- data/certs/ged.pem +24 -0
- data/ext/errorcodes.def +8 -0
- data/ext/errorcodes.txt +3 -1
- data/ext/extconf.rb +90 -19
- data/ext/gvl_wrappers.c +4 -0
- data/ext/gvl_wrappers.h +23 -0
- data/ext/pg.c +59 -4
- data/ext/pg.h +18 -0
- data/ext/pg_coder.c +90 -24
- data/ext/pg_connection.c +606 -533
- data/ext/pg_copy_coder.c +45 -15
- data/ext/pg_record_coder.c +38 -9
- data/ext/pg_result.c +61 -31
- data/ext/pg_text_decoder.c +1 -1
- data/ext/pg_text_encoder.c +6 -6
- data/ext/pg_tuple.c +47 -21
- data/ext/pg_type_map.c +41 -8
- data/ext/pg_type_map_all_strings.c +14 -1
- data/ext/pg_type_map_by_class.c +50 -21
- data/ext/pg_type_map_by_column.c +64 -28
- data/ext/pg_type_map_by_mri_type.c +47 -18
- data/ext/pg_type_map_by_oid.c +52 -23
- data/ext/pg_type_map_in_ruby.c +50 -19
- data/ext/pg_util.c +2 -2
- data/lib/2.5/pg_ext.so +0 -0
- data/lib/2.6/pg_ext.so +0 -0
- data/lib/2.7/pg_ext.so +0 -0
- data/lib/3.0/pg_ext.so +0 -0
- data/lib/pg/basic_type_map_based_on_result.rb +47 -0
- data/lib/pg/basic_type_map_for_queries.rb +193 -0
- data/lib/pg/basic_type_map_for_results.rb +81 -0
- data/lib/pg/basic_type_registry.rb +296 -0
- data/lib/pg/coder.rb +1 -1
- data/lib/pg/connection.rb +579 -57
- data/lib/pg/version.rb +4 -0
- data/lib/pg.rb +38 -24
- data/lib/x64-mingw32/libpq.dll +0 -0
- data/misc/openssl-pg-segfault.rb +31 -0
- data/misc/postgres/History.txt +9 -0
- data/misc/postgres/Manifest.txt +5 -0
- data/misc/postgres/README.txt +21 -0
- data/misc/postgres/Rakefile +21 -0
- data/misc/postgres/lib/postgres.rb +16 -0
- data/misc/ruby-pg/History.txt +9 -0
- data/misc/ruby-pg/Manifest.txt +5 -0
- data/misc/ruby-pg/README.txt +21 -0
- data/misc/ruby-pg/Rakefile +21 -0
- data/misc/ruby-pg/lib/ruby/pg.rb +16 -0
- data/pg.gemspec +32 -0
- data/sample/array_insert.rb +20 -0
- data/sample/async_api.rb +106 -0
- data/sample/async_copyto.rb +39 -0
- data/sample/async_mixed.rb +56 -0
- data/sample/check_conn.rb +21 -0
- data/sample/copydata.rb +71 -0
- data/sample/copyfrom.rb +81 -0
- data/sample/copyto.rb +19 -0
- data/sample/cursor.rb +21 -0
- data/sample/disk_usage_report.rb +177 -0
- data/sample/issue-119.rb +94 -0
- data/sample/losample.rb +69 -0
- data/sample/minimal-testcase.rb +17 -0
- data/sample/notify_wait.rb +72 -0
- data/sample/pg_statistics.rb +285 -0
- data/sample/replication_monitor.rb +222 -0
- data/sample/test_binary_values.rb +33 -0
- data/sample/wal_shipper.rb +434 -0
- data/sample/warehouse_partitions.rb +311 -0
- data.tar.gz.sig +0 -0
- metadata +94 -235
- metadata.gz.sig +0 -0
- data/ChangeLog +0 -0
- data/lib/2.2/pg_ext.so +0 -0
- data/lib/2.3/pg_ext.so +0 -0
- data/lib/2.4/pg_ext.so +0 -0
- data/lib/libpq.dll +0 -0
- data/lib/pg/basic_type_mapping.rb +0 -522
- data/spec/data/expected_trace.out +0 -26
- data/spec/data/random_binary_data +0 -0
- data/spec/helpers.rb +0 -382
- data/spec/pg/basic_type_mapping_spec.rb +0 -645
- data/spec/pg/connection_spec.rb +0 -1911
- data/spec/pg/connection_sync_spec.rb +0 -41
- data/spec/pg/result_spec.rb +0 -681
- data/spec/pg/tuple_spec.rb +0 -333
- data/spec/pg/type_map_by_class_spec.rb +0 -138
- data/spec/pg/type_map_by_column_spec.rb +0 -226
- data/spec/pg/type_map_by_mri_type_spec.rb +0 -136
- data/spec/pg/type_map_by_oid_spec.rb +0 -149
- data/spec/pg/type_map_in_ruby_spec.rb +0 -164
- data/spec/pg/type_map_spec.rb +0 -22
- data/spec/pg/type_spec.rb +0 -1123
- data/spec/pg_spec.rb +0 -50
data/ext/pg_coder.c
CHANGED
@@ -26,11 +26,11 @@ pg_coder_allocate( VALUE klass )
|
|
26
26
|
void
|
27
27
|
pg_coder_init_encoder( VALUE self )
|
28
28
|
{
|
29
|
-
t_pg_coder *this =
|
29
|
+
t_pg_coder *this = RTYPEDDATA_DATA( self );
|
30
30
|
VALUE klass = rb_class_of(self);
|
31
31
|
if( rb_const_defined( klass, s_id_CFUNC ) ){
|
32
32
|
VALUE cfunc = rb_const_get( klass, s_id_CFUNC );
|
33
|
-
this->enc_func =
|
33
|
+
this->enc_func = RTYPEDDATA_DATA(cfunc);
|
34
34
|
} else {
|
35
35
|
this->enc_func = NULL;
|
36
36
|
}
|
@@ -45,12 +45,12 @@ pg_coder_init_encoder( VALUE self )
|
|
45
45
|
void
|
46
46
|
pg_coder_init_decoder( VALUE self )
|
47
47
|
{
|
48
|
-
t_pg_coder *this =
|
48
|
+
t_pg_coder *this = RTYPEDDATA_DATA( self );
|
49
49
|
VALUE klass = rb_class_of(self);
|
50
50
|
this->enc_func = NULL;
|
51
51
|
if( rb_const_defined( klass, s_id_CFUNC ) ){
|
52
52
|
VALUE cfunc = rb_const_get( klass, s_id_CFUNC );
|
53
|
-
this->dec_func =
|
53
|
+
this->dec_func = RTYPEDDATA_DATA(cfunc);
|
54
54
|
} else {
|
55
55
|
this->dec_func = NULL;
|
56
56
|
}
|
@@ -61,20 +61,74 @@ pg_coder_init_decoder( VALUE self )
|
|
61
61
|
rb_iv_set( self, "@name", Qnil );
|
62
62
|
}
|
63
63
|
|
64
|
+
static size_t
|
65
|
+
pg_coder_memsize(const void *_this)
|
66
|
+
{
|
67
|
+
const t_pg_coder *this = (const t_pg_coder *)_this;
|
68
|
+
return sizeof(*this);
|
69
|
+
}
|
70
|
+
|
71
|
+
static size_t
|
72
|
+
pg_composite_coder_memsize(const void *_this)
|
73
|
+
{
|
74
|
+
const t_pg_composite_coder *this = (const t_pg_composite_coder *)_this;
|
75
|
+
return sizeof(*this);
|
76
|
+
}
|
77
|
+
|
78
|
+
void
|
79
|
+
pg_coder_compact(void *_this)
|
80
|
+
{
|
81
|
+
t_pg_coder *this = (t_pg_coder *)_this;
|
82
|
+
pg_gc_location(this->coder_obj);
|
83
|
+
}
|
84
|
+
|
85
|
+
static void
|
86
|
+
pg_composite_coder_compact(void *_this)
|
87
|
+
{
|
88
|
+
t_pg_composite_coder *this = (t_pg_composite_coder *)_this;
|
89
|
+
pg_coder_compact(&this->comp);
|
90
|
+
}
|
91
|
+
|
92
|
+
const rb_data_type_t pg_coder_type = {
|
93
|
+
"PG::Coder",
|
94
|
+
{
|
95
|
+
(RUBY_DATA_FUNC) NULL,
|
96
|
+
RUBY_TYPED_DEFAULT_FREE,
|
97
|
+
pg_coder_memsize,
|
98
|
+
pg_compact_callback(pg_coder_compact),
|
99
|
+
},
|
100
|
+
0,
|
101
|
+
0,
|
102
|
+
RUBY_TYPED_FREE_IMMEDIATELY,
|
103
|
+
};
|
104
|
+
|
64
105
|
static VALUE
|
65
106
|
pg_simple_encoder_allocate( VALUE klass )
|
66
107
|
{
|
67
108
|
t_pg_coder *this;
|
68
|
-
VALUE self =
|
109
|
+
VALUE self = TypedData_Make_Struct( klass, t_pg_coder, &pg_coder_type, this );
|
69
110
|
pg_coder_init_encoder( self );
|
70
111
|
return self;
|
71
112
|
}
|
72
113
|
|
114
|
+
static const rb_data_type_t pg_composite_coder_type = {
|
115
|
+
"PG::CompositeCoder",
|
116
|
+
{
|
117
|
+
(RUBY_DATA_FUNC) NULL,
|
118
|
+
RUBY_TYPED_DEFAULT_FREE,
|
119
|
+
pg_composite_coder_memsize,
|
120
|
+
pg_compact_callback(pg_composite_coder_compact),
|
121
|
+
},
|
122
|
+
&pg_coder_type,
|
123
|
+
0,
|
124
|
+
RUBY_TYPED_FREE_IMMEDIATELY,
|
125
|
+
};
|
126
|
+
|
73
127
|
static VALUE
|
74
128
|
pg_composite_encoder_allocate( VALUE klass )
|
75
129
|
{
|
76
130
|
t_pg_composite_coder *this;
|
77
|
-
VALUE self =
|
131
|
+
VALUE self = TypedData_Make_Struct( klass, t_pg_composite_coder, &pg_composite_coder_type, this );
|
78
132
|
pg_coder_init_encoder( self );
|
79
133
|
this->elem = NULL;
|
80
134
|
this->needs_quotation = 1;
|
@@ -87,7 +141,7 @@ static VALUE
|
|
87
141
|
pg_simple_decoder_allocate( VALUE klass )
|
88
142
|
{
|
89
143
|
t_pg_coder *this;
|
90
|
-
VALUE self =
|
144
|
+
VALUE self = TypedData_Make_Struct( klass, t_pg_coder, &pg_coder_type, this );
|
91
145
|
pg_coder_init_decoder( self );
|
92
146
|
return self;
|
93
147
|
}
|
@@ -96,7 +150,7 @@ static VALUE
|
|
96
150
|
pg_composite_decoder_allocate( VALUE klass )
|
97
151
|
{
|
98
152
|
t_pg_composite_coder *this;
|
99
|
-
VALUE self =
|
153
|
+
VALUE self = TypedData_Make_Struct( klass, t_pg_composite_coder, &pg_composite_coder_type, this );
|
100
154
|
pg_coder_init_decoder( self );
|
101
155
|
this->elem = NULL;
|
102
156
|
this->needs_quotation = 1;
|
@@ -123,7 +177,7 @@ pg_coder_encode(int argc, VALUE *argv, VALUE self)
|
|
123
177
|
VALUE value;
|
124
178
|
int len, len2;
|
125
179
|
int enc_idx;
|
126
|
-
t_pg_coder *this =
|
180
|
+
t_pg_coder *this = RTYPEDDATA_DATA(self);
|
127
181
|
|
128
182
|
if(argc < 1 || argc > 2){
|
129
183
|
rb_raise(rb_eArgError, "wrong number of arguments (%i for 1..2)", argc);
|
@@ -180,7 +234,7 @@ pg_coder_decode(int argc, VALUE *argv, VALUE self)
|
|
180
234
|
int tuple = -1;
|
181
235
|
int field = -1;
|
182
236
|
VALUE res;
|
183
|
-
t_pg_coder *this =
|
237
|
+
t_pg_coder *this = RTYPEDDATA_DATA(self);
|
184
238
|
|
185
239
|
if(argc < 1 || argc > 3){
|
186
240
|
rb_raise(rb_eArgError, "wrong number of arguments (%i for 1..3)", argc);
|
@@ -201,7 +255,7 @@ pg_coder_decode(int argc, VALUE *argv, VALUE self)
|
|
201
255
|
rb_raise(rb_eRuntimeError, "no decoder function defined");
|
202
256
|
}
|
203
257
|
|
204
|
-
res = this->dec_func(this, val,
|
258
|
+
res = this->dec_func(this, val, RSTRING_LENINT(argv[0]), tuple, field, ENCODING_GET(argv[0]));
|
205
259
|
|
206
260
|
return res;
|
207
261
|
}
|
@@ -218,7 +272,7 @@ pg_coder_decode(int argc, VALUE *argv, VALUE self)
|
|
218
272
|
static VALUE
|
219
273
|
pg_coder_oid_set(VALUE self, VALUE oid)
|
220
274
|
{
|
221
|
-
t_pg_coder *this =
|
275
|
+
t_pg_coder *this = RTYPEDDATA_DATA(self);
|
222
276
|
this->oid = NUM2UINT(oid);
|
223
277
|
return oid;
|
224
278
|
}
|
@@ -233,7 +287,7 @@ pg_coder_oid_set(VALUE self, VALUE oid)
|
|
233
287
|
static VALUE
|
234
288
|
pg_coder_oid_get(VALUE self)
|
235
289
|
{
|
236
|
-
t_pg_coder *this =
|
290
|
+
t_pg_coder *this = RTYPEDDATA_DATA(self);
|
237
291
|
return UINT2NUM(this->oid);
|
238
292
|
}
|
239
293
|
|
@@ -249,7 +303,7 @@ pg_coder_oid_get(VALUE self)
|
|
249
303
|
static VALUE
|
250
304
|
pg_coder_format_set(VALUE self, VALUE format)
|
251
305
|
{
|
252
|
-
t_pg_coder *this =
|
306
|
+
t_pg_coder *this = RTYPEDDATA_DATA(self);
|
253
307
|
this->format = NUM2INT(format);
|
254
308
|
return format;
|
255
309
|
}
|
@@ -264,7 +318,7 @@ pg_coder_format_set(VALUE self, VALUE format)
|
|
264
318
|
static VALUE
|
265
319
|
pg_coder_format_get(VALUE self)
|
266
320
|
{
|
267
|
-
t_pg_coder *this =
|
321
|
+
t_pg_coder *this = RTYPEDDATA_DATA(self);
|
268
322
|
return INT2NUM(this->format);
|
269
323
|
}
|
270
324
|
|
@@ -280,7 +334,7 @@ pg_coder_format_get(VALUE self)
|
|
280
334
|
static VALUE
|
281
335
|
pg_coder_flags_set(VALUE self, VALUE flags)
|
282
336
|
{
|
283
|
-
t_pg_coder *this =
|
337
|
+
t_pg_coder *this = RTYPEDDATA_DATA(self);
|
284
338
|
this->flags = NUM2INT(flags);
|
285
339
|
return flags;
|
286
340
|
}
|
@@ -294,7 +348,7 @@ pg_coder_flags_set(VALUE self, VALUE flags)
|
|
294
348
|
static VALUE
|
295
349
|
pg_coder_flags_get(VALUE self)
|
296
350
|
{
|
297
|
-
t_pg_coder *this =
|
351
|
+
t_pg_coder *this = RTYPEDDATA_DATA(self);
|
298
352
|
return INT2NUM(this->flags);
|
299
353
|
}
|
300
354
|
|
@@ -311,7 +365,7 @@ pg_coder_flags_get(VALUE self)
|
|
311
365
|
static VALUE
|
312
366
|
pg_coder_needs_quotation_set(VALUE self, VALUE needs_quotation)
|
313
367
|
{
|
314
|
-
t_pg_composite_coder *this =
|
368
|
+
t_pg_composite_coder *this = RTYPEDDATA_DATA(self);
|
315
369
|
this->needs_quotation = RTEST(needs_quotation);
|
316
370
|
return needs_quotation;
|
317
371
|
}
|
@@ -326,7 +380,7 @@ pg_coder_needs_quotation_set(VALUE self, VALUE needs_quotation)
|
|
326
380
|
static VALUE
|
327
381
|
pg_coder_needs_quotation_get(VALUE self)
|
328
382
|
{
|
329
|
-
t_pg_composite_coder *this =
|
383
|
+
t_pg_composite_coder *this = RTYPEDDATA_DATA(self);
|
330
384
|
return this->needs_quotation ? Qtrue : Qfalse;
|
331
385
|
}
|
332
386
|
|
@@ -341,7 +395,7 @@ pg_coder_needs_quotation_get(VALUE self)
|
|
341
395
|
static VALUE
|
342
396
|
pg_coder_delimiter_set(VALUE self, VALUE delimiter)
|
343
397
|
{
|
344
|
-
t_pg_composite_coder *this =
|
398
|
+
t_pg_composite_coder *this = RTYPEDDATA_DATA(self);
|
345
399
|
StringValue(delimiter);
|
346
400
|
if(RSTRING_LEN(delimiter) != 1)
|
347
401
|
rb_raise( rb_eArgError, "delimiter size must be one byte");
|
@@ -358,7 +412,7 @@ pg_coder_delimiter_set(VALUE self, VALUE delimiter)
|
|
358
412
|
static VALUE
|
359
413
|
pg_coder_delimiter_get(VALUE self)
|
360
414
|
{
|
361
|
-
t_pg_composite_coder *this =
|
415
|
+
t_pg_composite_coder *this = RTYPEDDATA_DATA(self);
|
362
416
|
return rb_str_new(&this->delimiter, 1);
|
363
417
|
}
|
364
418
|
|
@@ -374,12 +428,12 @@ pg_coder_delimiter_get(VALUE self)
|
|
374
428
|
static VALUE
|
375
429
|
pg_coder_elements_type_set(VALUE self, VALUE elem_type)
|
376
430
|
{
|
377
|
-
t_pg_composite_coder *this =
|
431
|
+
t_pg_composite_coder *this = RTYPEDDATA_DATA( self );
|
378
432
|
|
379
433
|
if ( NIL_P(elem_type) ){
|
380
434
|
this->elem = NULL;
|
381
435
|
} else if ( rb_obj_is_kind_of(elem_type, rb_cPG_Coder) ){
|
382
|
-
this->elem =
|
436
|
+
this->elem = RTYPEDDATA_DATA( elem_type );
|
383
437
|
} else {
|
384
438
|
rb_raise( rb_eTypeError, "wrong elements type %s (expected some kind of PG::Coder)",
|
385
439
|
rb_obj_classname( elem_type ) );
|
@@ -389,10 +443,22 @@ pg_coder_elements_type_set(VALUE self, VALUE elem_type)
|
|
389
443
|
return elem_type;
|
390
444
|
}
|
391
445
|
|
446
|
+
static const rb_data_type_t pg_coder_cfunc_type = {
|
447
|
+
"PG::Coder::CFUNC",
|
448
|
+
{
|
449
|
+
(RUBY_DATA_FUNC)NULL,
|
450
|
+
(RUBY_DATA_FUNC)NULL,
|
451
|
+
(size_t (*)(const void *))NULL,
|
452
|
+
},
|
453
|
+
0,
|
454
|
+
0,
|
455
|
+
RUBY_TYPED_FREE_IMMEDIATELY,
|
456
|
+
};
|
457
|
+
|
392
458
|
void
|
393
459
|
pg_define_coder( const char *name, void *func, VALUE base_klass, VALUE nsp )
|
394
460
|
{
|
395
|
-
VALUE cfunc_obj =
|
461
|
+
VALUE cfunc_obj = TypedData_Wrap_Struct( rb_cObject, &pg_coder_cfunc_type, func );
|
396
462
|
VALUE coder_klass = rb_define_class_under( nsp, name, base_klass );
|
397
463
|
if( nsp==rb_mPG_BinaryEncoder || nsp==rb_mPG_BinaryDecoder )
|
398
464
|
rb_include_module( coder_klass, rb_mPG_BinaryFormatting );
|