pg 1.4.2-x64-mingw32 → 1.4.3-x64-mingw32

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: 45485412182c53245f93ecd054d99492a1199f5aa010320b6257489e7a5327e0
4
- data.tar.gz: 64f5f01068d545b1dcfc900ecda7f564aff1bf7093be976457c85910d1674e89
3
+ metadata.gz: 52e08f22554d6e896f4d9520eb1156cd1c53bf488d0b53da3cdcc5ef01d94188
4
+ data.tar.gz: 9b29f4cbe7ff3d2dc22855c830d37a8a9f318f1f0247f855aee951c4b94300d2
5
5
  SHA512:
6
- metadata.gz: e8b467df56bb1be0234c870efd1b6781f21cd3f3a83b18c81379d5d50d9c053a32dc060cb639ea456ca1ada5525d3b99f6ce33757ac47aa97650cbaf8998ac2e
7
- data.tar.gz: ba5829d79ecd4b3d075b18ce8bc907d865eae06fe97de3dfc3df08182735d4b576552540957ee042af49a577a9ad2a7950ae33e2fd38d236c642bd5167541a92
6
+ metadata.gz: 1fdd8bdf52937839653a7af10d923e7f4af9f7a04e3318e0944137a8bb3da50f8cae64d9d082728a8d13ebc76b2651723c1cad6c5c0c600d57c70e5fba387ccc
7
+ data.tar.gz: b63f26d392939efacad1c2f76a40456668edeb729a1b26243558d5baf4d188eb46cbd80095573c467ff612cf8387164fbf018c8f769a5b54d4fa79e54a95f7f4
checksums.yaml.gz.sig CHANGED
Binary file
data/History.rdoc CHANGED
@@ -1,3 +1,9 @@
1
+ == v1.4.3 [2022-08-09] Lars Kanis <lars@greiz-reinsdorf.de>
2
+
3
+ - Avoid memory bloat possible in put_copy_data in pg-1.4.0 to 1.4.2. #473
4
+ - Use Encoding::BINARY for JOHAB, removing some useless code. #472
5
+
6
+
1
7
  == v1.4.2 [2022-07-27] Lars Kanis <lars@greiz-reinsdorf.de>
2
8
 
3
9
  Bugfixes:
data/ext/pg.c CHANGED
@@ -127,26 +127,6 @@ const char * const (pg_enc_pg2ruby_mapping[][2]) = {
127
127
  static struct st_table *enc_pg2ruby;
128
128
 
129
129
 
130
- /*
131
- * Look up the JOHAB encoding, creating it as a dummy encoding if it's not
132
- * already defined.
133
- */
134
- static rb_encoding *
135
- pg_find_or_create_johab(void)
136
- {
137
- static const char * const aliases[] = { "JOHAB", "Windows-1361", "CP1361" };
138
- int enc_index;
139
- size_t i;
140
-
141
- for (i = 0; i < sizeof(aliases)/sizeof(aliases[0]); ++i) {
142
- enc_index = rb_enc_find_index(aliases[i]);
143
- if (enc_index > 0) return rb_enc_from_index(enc_index);
144
- }
145
-
146
- enc_index = rb_define_dummy_encoding(aliases[0]);
147
- return rb_enc_from_index(enc_index);
148
- }
149
-
150
130
  /*
151
131
  * Return the given PostgreSQL encoding ID as an rb_encoding.
152
132
  *
@@ -187,10 +167,6 @@ pg_get_pg_encname_as_rb_encoding( const char *pg_encname )
187
167
  return rb_enc_find( pg_enc_pg2ruby_mapping[i][1] );
188
168
  }
189
169
 
190
- /* JOHAB isn't a builtin encoding, so make up a dummy encoding if it's seen */
191
- if ( strncmp(pg_encname, "JOHAB", 5) == 0 )
192
- return pg_find_or_create_johab();
193
-
194
170
  /* Fallthrough to ASCII-8BIT */
195
171
  return rb_ascii8bit_encoding();
196
172
  }
data/ext/pg_connection.c CHANGED
@@ -266,6 +266,7 @@ pgconn_s_allocate( VALUE klass )
266
266
  this->encoder_for_put_copy_data = Qnil;
267
267
  this->decoder_for_get_copy_data = Qnil;
268
268
  this->trace_stream = Qnil;
269
+ rb_ivar_set(self, rb_intern("@calls_to_put_copy_data"), INT2FIX(0));
269
270
 
270
271
  return self;
271
272
  }
data/lib/2.5/pg_ext.so CHANGED
Binary file
data/lib/2.6/pg_ext.so CHANGED
Binary file
data/lib/2.7/pg_ext.so CHANGED
Binary file
data/lib/3.0/pg_ext.so CHANGED
Binary file
data/lib/pg/connection.rb CHANGED
@@ -408,7 +408,17 @@ class PG::Connection
408
408
  # See also #copy_data.
409
409
  #
410
410
  def put_copy_data(buffer, encoder=nil)
411
+ # sync_put_copy_data does a non-blocking attept to flush data.
411
412
  until res=sync_put_copy_data(buffer, encoder)
413
+ # It didn't flush immediately and allocation of more buffering memory failed.
414
+ # Wait for all data sent by doing a blocking flush.
415
+ res = flush
416
+ end
417
+
418
+ # And do a blocking flush every 100 calls.
419
+ # This is to avoid memory bloat, when sending the data is slower than calls to put_copy_data happen.
420
+ if (@calls_to_put_copy_data += 1) > 100
421
+ @calls_to_put_copy_data = 0
412
422
  res = flush
413
423
  end
414
424
  res
@@ -431,6 +441,7 @@ class PG::Connection
431
441
  until sync_put_copy_end(*args)
432
442
  flush
433
443
  end
444
+ @calls_to_put_copy_data = 0
434
445
  flush
435
446
  end
436
447
  alias async_put_copy_end put_copy_end
data/lib/pg/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module PG
2
2
  # Library version
3
- VERSION = '1.4.2'
3
+ VERSION = '1.4.3'
4
4
  end
Binary file
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 1.4.3
5
5
  platform: x64-mingw32
6
6
  authors:
7
7
  - Michael Granger
@@ -36,7 +36,7 @@ cert_chain:
36
36
  oL1mUdzB8KrZL4/WbG5YNX6UTtJbIOu9qEFbBAy4/jtIkJX+dlNoFwd4GXQW1YNO
37
37
  nA==
38
38
  -----END CERTIFICATE-----
39
- date: 2022-07-27 00:00:00.000000000 Z
39
+ date: 2022-08-09 00:00:00.000000000 Z
40
40
  dependencies: []
41
41
  description: Pg is the Ruby interface to the PostgreSQL RDBMS. It works with PostgreSQL
42
42
  9.3 and later.
metadata.gz.sig CHANGED
Binary file