pg 1.1.3 → 1.1.4

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: 3339718d25beca7eef4d5961b44dddceb03bcaab93d0b5b27af1e56845345513
4
- data.tar.gz: 95c026d833f3e45beb4bebf1089d8d2dfe398fffa4f7353e2b42daf572384c5c
3
+ metadata.gz: a66c426de7c3035db5c8412a38b7f551bc50f7e6563b0b0de78515fd3ae7e825
4
+ data.tar.gz: 5c528696d8ebd74de4e53dec34efede57cbf06c62defe35b25b37f7986e746e1
5
5
  SHA512:
6
- metadata.gz: c2bdb07724af0bda7f094b6060f3653cb98d4484e9de3e03856415dd7fb357c42a93205c477491d94d6d352f5d6a97cdb66c3f437da8376d666f276aa03c5753
7
- data.tar.gz: 5765400174741c48119c146ec5b7e0111b3329fb6f08f5b6cd5abab4af6beb42a06c97876a48a872a92dab23aa80bf8fce2a1ca7c3f621927deb40df0b20813a
6
+ metadata.gz: a4d8f2671a07a483efab8dd62701eea5a327eba332c5d9dce9f670d3db0b968e335e630d04f7f68b2f74ce9fb0c9da0f936a6ed839040fffbaf5710467f6e2c3
7
+ data.tar.gz: 482f9f0bc7f3cb6645897debb05d7e1258790b7c63cd275ee7f9e29f47b82f2f9f78fb4b49a2f7c629a0494663c98aee198e4788931074164ec9e9f9e09b0f43
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,10 @@
1
+ == v1.1.4 [2019-01-08] Michael Granger <ged@FaerieMUD.org>
2
+
3
+ - Fix PG::BinaryDecoder::Timestamp on 32 bit systems. # 284
4
+ - Add new error-codes of PostgreSQL-11.
5
+ - Add ruby-2.6 support for Windows fat binary gems and remove ruby-2.0 and 2.1.
6
+
7
+
1
8
  == v1.1.3 [2018-09-06] Michael Granger <ged@FaerieMUD.org>
2
9
 
3
10
  - Revert opimization that was sometimes causing EBADF in rb_wait_for_single_fd().
data/Rakefile CHANGED
@@ -61,7 +61,7 @@ $hoespec = Hoe.spec 'pg' do
61
61
  self.developer 'Lars Kanis', 'lars@greiz-reinsdorf.de'
62
62
 
63
63
  self.dependency 'rake-compiler', '~> 1.0', :developer
64
- self.dependency 'rake-compiler-dock', ['~> 0.6', '>= 0.6.2'], :developer
64
+ self.dependency 'rake-compiler-dock', ['~> 0.7.0'], :developer
65
65
  self.dependency 'hoe-deveiate', '~> 0.9', :developer
66
66
  self.dependency 'hoe-bundler', '~> 1.0', :developer
67
67
  self.dependency 'rspec', '~> 3.5', :developer
@@ -184,7 +184,7 @@ end
184
184
 
185
185
  desc "Update list of server error codes"
186
186
  task :update_error_codes do
187
- URL_ERRORCODES_TXT = "http://git.postgresql.org/gitweb/?p=postgresql.git;a=blob_plain;f=src/backend/utils/errcodes.txt;hb=refs/tags/REL_10_4"
187
+ URL_ERRORCODES_TXT = "http://git.postgresql.org/gitweb/?p=postgresql.git;a=blob_plain;f=src/backend/utils/errcodes.txt;hb=refs/tags/REL_11_1"
188
188
 
189
189
  ERRORCODES_TXT = "ext/errorcodes.txt"
190
190
  sh "wget #{URL_ERRORCODES_TXT.inspect} -O #{ERRORCODES_TXT.inspect} || curl #{URL_ERRORCODES_TXT.inspect} -o #{ERRORCODES_TXT.inspect}"
@@ -29,8 +29,8 @@ class CrossLibrary < OpenStruct
29
29
  self.host_platform = toolchain
30
30
 
31
31
  # Cross-compilation constants
32
- self.openssl_version = ENV['OPENSSL_VERSION'] || '1.1.0h'
33
- self.postgresql_version = ENV['POSTGRESQL_VERSION'] || '10.4'
32
+ self.openssl_version = ENV['OPENSSL_VERSION'] || '1.1.1a'
33
+ self.postgresql_version = ENV['POSTGRESQL_VERSION'] || '11.1'
34
34
 
35
35
  # Check if symlinks work in the current working directory.
36
36
  # This fails, if rake-compiler-dock is running on a Windows box.
@@ -293,6 +293,6 @@ task 'gem:windows' => ['ChangeLog'] do
293
293
  mkdir ~/.gem &&
294
294
  (cp build/gem/gem-*.pem ~/.gem/ || true) &&
295
295
  bundle install --local &&
296
- rake cross native gem RUBY_CC_VERSION=2.5.0:2.4.0:2.3.0:2.2.2:2.1.6:2.0.0 MAKE="make -j`nproc`"
296
+ rake cross native gem MAKE="make -j`nproc`"
297
297
  EOT
298
298
  end
@@ -186,6 +186,10 @@
186
186
  VALUE klass = define_error_class( "InvalidParameterValue", "22" );
187
187
  register_error_class( "22023", klass );
188
188
  }
189
+ {
190
+ VALUE klass = define_error_class( "InvalidPrecedingOrFollowingSize", "22" );
191
+ register_error_class( "22013", klass );
192
+ }
189
193
  {
190
194
  VALUE klass = define_error_class( "InvalidRegularExpression", "22" );
191
195
  register_error_class( "2201B", klass );
@@ -2,7 +2,7 @@
2
2
  # errcodes.txt
3
3
  # PostgreSQL error codes
4
4
  #
5
- # Copyright (c) 2003-2017, PostgreSQL Global Development Group
5
+ # Copyright (c) 2003-2018, PostgreSQL Global Development Group
6
6
  #
7
7
  # This list serves as the basis for generating source files containing error
8
8
  # codes. It is kept in a common format to make sure all these source files have
@@ -177,6 +177,7 @@ Section: Class 22 - Data Exception
177
177
  22P06 E ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER nonstandard_use_of_escape_character
178
178
  22010 E ERRCODE_INVALID_INDICATOR_PARAMETER_VALUE invalid_indicator_parameter_value
179
179
  22023 E ERRCODE_INVALID_PARAMETER_VALUE invalid_parameter_value
180
+ 22013 E ERRCODE_INVALID_PRECEDING_OR_FOLLOWING_SIZE invalid_preceding_or_following_size
180
181
  2201B E ERRCODE_INVALID_REGULAR_EXPRESSION invalid_regular_expression
181
182
  2201W E ERRCODE_INVALID_ROW_COUNT_IN_LIMIT_CLAUSE invalid_row_count_in_limit_clause
182
183
  2201X E ERRCODE_INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE invalid_row_count_in_result_offset_clause
data/ext/pg.h CHANGED
@@ -103,6 +103,11 @@ typedef struct {
103
103
 
104
104
  /* enable/disable guessing size of PGresult's allocated memory */
105
105
  int guess_result_memsize;
106
+
107
+ #if defined(_WIN32)
108
+ /* File descriptor to be used for rb_w32_unwrap_io_handle() */
109
+ int ruby_sd;
110
+ #endif
106
111
  } t_pg_connection;
107
112
 
108
113
  typedef struct pg_coder t_pg_coder;
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * pg_column_map.c - PG::ColumnMap class extension
3
- * $Id: pg_binary_decoder.c,v 5d166a4d0441 2018/07/29 12:03:00 lars $
3
+ * $Id$
4
4
  *
5
5
  */
6
6
 
@@ -154,7 +154,8 @@ static VALUE
154
154
  pg_bin_dec_timestamp(t_pg_coder *conv, const char *val, int len, int tuple, int field, int enc_idx)
155
155
  {
156
156
  int64_t timestamp;
157
- struct timespec ts;
157
+ int64_t sec;
158
+ int64_t nsec;
158
159
  VALUE t;
159
160
 
160
161
  if( len != sizeof(timestamp) ){
@@ -171,14 +172,17 @@ pg_bin_dec_timestamp(t_pg_coder *conv, const char *val, int len, int tuple, int
171
172
  default:
172
173
  /* PostgreSQL's timestamp is based on year 2000 and Ruby's time is based on 1970.
173
174
  * Adjust the 30 years difference. */
174
- ts.tv_sec = (timestamp / 1000000) + 10957L * 24L * 3600L;
175
- ts.tv_nsec = (timestamp % 1000000) * 1000;
175
+ sec = (timestamp / 1000000) + 10957L * 24L * 3600L;
176
+ nsec = (timestamp % 1000000) * 1000;
176
177
 
177
- #if (RUBY_API_VERSION_MAJOR > 2 || (RUBY_API_VERSION_MAJOR == 2 && RUBY_API_VERSION_MINOR >= 3)) && defined(NEGATIVE_TIME_T)
178
+ #if (RUBY_API_VERSION_MAJOR > 2 || (RUBY_API_VERSION_MAJOR == 2 && RUBY_API_VERSION_MINOR >= 3)) && defined(NEGATIVE_TIME_T) && defined(SIZEOF_TIME_T) && SIZEOF_TIME_T >= 8
178
179
  /* Fast path for time conversion */
179
- t = rb_time_timespec_new(&ts, conv->flags & PG_CODER_TIMESTAMP_APP_LOCAL ? INT_MAX : INT_MAX-1);
180
+ {
181
+ struct timespec ts = {sec, nsec};
182
+ t = rb_time_timespec_new(&ts, conv->flags & PG_CODER_TIMESTAMP_APP_LOCAL ? INT_MAX : INT_MAX-1);
183
+ }
180
184
  #else
181
- t = rb_funcall(rb_cTime, rb_intern("at"), 2, LL2NUM(ts.tv_sec), LL2NUM(ts.tv_nsec / 1000));
185
+ t = rb_funcall(rb_cTime, rb_intern("at"), 2, LL2NUM(sec), LL2NUM(nsec / 1000));
182
186
  if( !(conv->flags & PG_CODER_TIMESTAMP_APP_LOCAL) ) {
183
187
  t = rb_funcall(t, rb_intern("utc"), 0);
184
188
  }
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * pg_connection.c - PG::Connection class extension
3
- * $Id: pg_connection.c,v b49f54dc755b 2018/09/01 12:52:41 lars $
3
+ * $Id$
4
4
  *
5
5
  */
6
6
 
@@ -85,8 +85,7 @@ pgconn_close_socket_io( VALUE self )
85
85
 
86
86
  if ( RTEST(socket_io) ) {
87
87
  #if defined(_WIN32)
88
- int ruby_sd = NUM2INT(rb_funcall( socket_io, rb_intern("fileno"), 0 ));
89
- if( rb_w32_unwrap_io_handle(ruby_sd) ){
88
+ if( rb_w32_unwrap_io_handle(this->ruby_sd) ){
90
89
  rb_raise(rb_eConnectionBad, "Could not unwrap win32 socket handle");
91
90
  }
92
91
  #endif
@@ -165,6 +164,10 @@ pgconn_gc_mark( t_pg_connection *this )
165
164
  static void
166
165
  pgconn_gc_free( t_pg_connection *this )
167
166
  {
167
+ #if defined(_WIN32)
168
+ if ( RTEST(this->socket_io) )
169
+ rb_w32_unwrap_io_handle( this->ruby_sd );
170
+ #endif
168
171
  if (this->pgconn != NULL)
169
172
  PQfinish( this->pgconn );
170
173
 
@@ -894,6 +897,7 @@ pgconn_socket_io(VALUE self)
894
897
 
895
898
  #ifdef _WIN32
896
899
  ruby_sd = rb_w32_wrap_io_handle((HANDLE)(intptr_t)sd, O_RDWR|O_BINARY|O_NOINHERIT);
900
+ this->ruby_sd = ruby_sd;
897
901
  #else
898
902
  ruby_sd = sd;
899
903
  #endif
@@ -961,7 +965,7 @@ static VALUE pgconn_exec_params( int, VALUE *, VALUE );
961
965
  * conn.exec(sql) {|pg_result| block }
962
966
  *
963
967
  * Sends SQL query request specified by _sql_ to PostgreSQL.
964
- * Returns a PG::Result instance on success.
968
+ * On success, it returns a PG::Result instance with all result rows and columns.
965
969
  * On failure, it raises a PG::Error.
966
970
  *
967
971
  * For backward compatibility, if you pass more than one parameter to this method,
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * pg_result.c - PG::Result class extension
3
- * $Id: pg_result.c,v a8b70c42b3e8 2018/07/30 14:09:38 kanis $
3
+ * $Id$
4
4
  *
5
5
  */
6
6
 
@@ -419,6 +419,8 @@ static void pgresult_init_fnames(VALUE self)
419
419
  *
420
420
  * The class to represent the query result tuples (rows).
421
421
  * An instance of this class is created as the result of every query.
422
+ * All result rows and columns are stored in a memory block attached to the PG::Result object.
423
+ * Whenever a value is accessed it is casted to a Ruby object by the assigned #type_map .
422
424
  *
423
425
  * Since pg-1.1 the amount of memory in use by a PG::Result object is estimated and passed to ruby's garbage collector.
424
426
  * You can invoke the #clear method to force deallocation of memory of the instance when finished with the result for better memory performance.
data/lib/pg.rb CHANGED
@@ -35,7 +35,7 @@ end
35
35
  module PG
36
36
 
37
37
  # Library version
38
- VERSION = '1.1.3'
38
+ VERSION = '1.1.4'
39
39
 
40
40
  # VCS revision
41
41
  REVISION = %q$Revision: 6f611e78845a $
@@ -198,8 +198,8 @@ module PG::TestingHelpers
198
198
  @test_pgdata = TEST_DIRECTORY + 'data'
199
199
  @test_pgdata.mkpath
200
200
 
201
- @port = 54321
202
- ENV['PGPORT'] = @port.to_s
201
+ ENV['PGPORT'] ||= "54321"
202
+ @port = ENV['PGPORT'].to_i
203
203
  ENV['PGHOST'] = 'localhost'
204
204
  @conninfo = "host=localhost port=#{@port} dbname=test"
205
205
 
@@ -319,20 +319,19 @@ module PG::TestingHelpers
319
319
  return ConnStillUsableMatcher.new
320
320
  end
321
321
 
322
- def wait_for_polling_ok(conn)
323
- socket = conn.socket_io
324
- status = conn.connect_poll
322
+ def wait_for_polling_ok(conn, meth = :connect_poll)
323
+ status = conn.send(meth)
325
324
 
326
325
  while status != PG::PGRES_POLLING_OK
327
326
  if status == PG::PGRES_POLLING_READING
328
- select( [socket], [], [], 5.0 ) or
327
+ select( [conn.socket_io], [], [], 5.0 ) or
329
328
  raise "Asynchronous connection timed out!"
330
329
 
331
330
  elsif status == PG::PGRES_POLLING_WRITING
332
- select( [], [socket], [], 5.0 ) or
331
+ select( [], [conn.socket_io], [], 5.0 ) or
333
332
  raise "Asynchronous connection timed out!"
334
333
  end
335
- status = conn.connect_poll
334
+ status = conn.send(meth)
336
335
  end
337
336
  end
338
337
 
@@ -62,7 +62,7 @@ describe 'Basic type mapping' do
62
62
  it "should do bigdecimal param encoding" do
63
63
  large = ('123456790'*10) << '.' << ('012345679')
64
64
  res = @conn.exec_params( "SELECT $1::numeric,$2::numeric",
65
- [BigDecimal.new('1'), BigDecimal.new(large)], nil, basic_type_mapping )
65
+ [BigDecimal('1'), BigDecimal(large)], nil, basic_type_mapping )
66
66
 
67
67
  expect( res.values ).to eq( [
68
68
  [ "1.0", large ],
@@ -238,12 +238,27 @@ describe PG::Connection do
238
238
  # newly established connection is probably distinct from the previous one.
239
239
  ios.each(&:close)
240
240
  conn.reset_start
241
- wait_for_polling_ok(conn)
241
+ wait_for_polling_ok(conn, :reset_poll)
242
242
 
243
243
  # The new connection should work even when the file descriptor has changed.
244
- expect( conn.exec("SELECT 1").values ).to eq([["1"]])
244
+ conn.send_query("SELECT 1")
245
+ res = wait_for_query_result(conn)
246
+ expect( res.values ).to eq([["1"]])
247
+
245
248
  conn.close
246
249
  end
250
+
251
+ it "should properly close a socket IO when GC'ed" do
252
+ # This results in
253
+ # Errno::ENOTSOCK: An operation was attempted on something that is not a socket.
254
+ # on Windows when rb_w32_unwrap_io_handle() isn't called in pgconn_gc_free().
255
+ 5.times do
256
+ conn = described_class.connect( @conninfo )
257
+ conn.socket_io.close
258
+ end
259
+ GC.start
260
+ IO.pipe.each(&:close)
261
+ end
247
262
  end
248
263
 
249
264
  it "raises proper error when sending fails" do
@@ -264,7 +279,7 @@ describe PG::Connection do
264
279
  expect( @conn.db ).to eq( "test" )
265
280
  expect( @conn.user ).to be_a_kind_of( String )
266
281
  expect( @conn.pass ).to eq( "" )
267
- expect( @conn.port ).to eq( 54321 )
282
+ expect( @conn.port ).to eq( @port )
268
283
  expect( @conn.tty ).to eq( "" )
269
284
  expect( @conn.options ).to eq( "" )
270
285
  end
@@ -750,7 +765,7 @@ describe PG::Connection do
750
765
  it "can return the default connection options as a Hash" do
751
766
  expect( described_class.conndefaults_hash ).to be_a( Hash )
752
767
  expect( described_class.conndefaults_hash ).to include( :user, :password, :dbname, :host, :port )
753
- expect( ['5432', '54321'] ).to include( described_class.conndefaults_hash[:port] )
768
+ expect( ['5432', '54321', @port.to_s] ).to include( described_class.conndefaults_hash[:port] )
754
769
  expect( @conn.conndefaults_hash ).to eq( described_class.conndefaults_hash )
755
770
  end
756
771
 
@@ -1140,8 +1155,16 @@ describe PG::Connection do
1140
1155
  expect( ping ).to eq( PG::PQPING_NO_RESPONSE )
1141
1156
  end
1142
1157
 
1143
- it "returns correct response when ping connection arguments are wrong" do
1158
+ it "returns error when ping connection arguments are wrong" do
1144
1159
  ping = described_class.ping('localhost', 'localhost', nil, nil, :test, nil, nil)
1160
+ expect( ping ).to_not eq( PG::PQPING_OK )
1161
+ end
1162
+
1163
+ it "returns correct response when ping connection arguments are wrong" do
1164
+ ping = described_class.ping(
1165
+ :host => 'localhost',
1166
+ :invalid_option => 9999,
1167
+ :dbname => :test)
1145
1168
  expect( ping ).to eq( PG::PQPING_NO_ATTEMPT )
1146
1169
  end
1147
1170
 
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.1.3
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Granger
@@ -11,32 +11,31 @@ bindir: bin
11
11
  cert_chain:
12
12
  - |
13
13
  -----BEGIN CERTIFICATE-----
14
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
36
+ JnC4lpJfCP6aCXa5h2XAQfPSH636cQap
38
37
  -----END CERTIFICATE-----
39
- date: 2018-09-07 00:00:00.000000000 Z
38
+ date: 2019-01-09 00:00:00.000000000 Z
40
39
  dependencies:
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: hoe-mercurial
@@ -58,14 +57,14 @@ dependencies:
58
57
  requirements:
59
58
  - - "~>"
60
59
  - !ruby/object:Gem::Version
61
- version: '0.9'
60
+ version: '0.10'
62
61
  type: :development
63
62
  prerelease: false
64
63
  version_requirements: !ruby/object:Gem::Requirement
65
64
  requirements:
66
65
  - - "~>"
67
66
  - !ruby/object:Gem::Version
68
- version: '0.9'
67
+ version: '0.10'
69
68
  - !ruby/object:Gem::Dependency
70
69
  name: hoe-highline
71
70
  requirement: !ruby/object:Gem::Requirement
@@ -100,20 +99,14 @@ dependencies:
100
99
  requirements:
101
100
  - - "~>"
102
101
  - !ruby/object:Gem::Version
103
- version: '0.6'
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- version: 0.6.2
102
+ version: 0.7.0
107
103
  type: :development
108
104
  prerelease: false
109
105
  version_requirements: !ruby/object:Gem::Requirement
110
106
  requirements:
111
107
  - - "~>"
112
108
  - !ruby/object:Gem::Version
113
- version: '0.6'
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: 0.6.2
109
+ version: 0.7.0
117
110
  - !ruby/object:Gem::Dependency
118
111
  name: hoe-bundler
119
112
  requirement: !ruby/object:Gem::Requirement
@@ -322,7 +315,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
322
315
  version: '0'
323
316
  requirements: []
324
317
  rubyforge_project:
325
- rubygems_version: 2.7.6
318
+ rubygems_version: 2.7.8
326
319
  signing_key:
327
320
  specification_version: 4
328
321
  summary: Pg is the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/]
metadata.gz.sig CHANGED
Binary file