pg 0.20.0-x86-mingw32 → 0.21.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/ChangeLog +145 -44
  5. data/History.rdoc +13 -0
  6. data/Manifest.txt +1 -18
  7. data/README.rdoc +1 -1
  8. data/Rakefile +5 -5
  9. data/ext/pg.c +1 -1
  10. data/ext/pg_binary_decoder.c +1 -1
  11. data/ext/pg_binary_encoder.c +1 -1
  12. data/ext/pg_connection.c +1 -1
  13. data/ext/pg_result.c +12 -6
  14. data/ext/pg_text_decoder.c +1 -1
  15. data/ext/pg_text_encoder.c +1 -1
  16. data/ext/pg_type_map.c +1 -1
  17. data/ext/pg_type_map_all_strings.c +1 -1
  18. data/ext/pg_type_map_by_class.c +1 -1
  19. data/ext/pg_type_map_by_column.c +1 -1
  20. data/ext/pg_type_map_by_mri_type.c +1 -1
  21. data/ext/pg_type_map_by_oid.c +1 -1
  22. data/ext/pg_type_map_in_ruby.c +1 -1
  23. data/ext/util.c +1 -1
  24. data/lib/2.0/pg_ext.so +0 -0
  25. data/lib/2.1/pg_ext.so +0 -0
  26. data/lib/2.2/pg_ext.so +0 -0
  27. data/lib/2.3/pg_ext.so +0 -0
  28. data/lib/2.4/pg_ext.so +0 -0
  29. data/lib/libpq.dll +0 -0
  30. data/lib/pg.rb +8 -6
  31. data/lib/pg/connection.rb +0 -4
  32. data/lib/pg/deprecated_constants.rb +21 -0
  33. data/lib/pg/result.rb +0 -3
  34. data/spec/pg/result_spec.rb +4 -4
  35. metadata +40 -63
  36. metadata.gz.sig +0 -0
  37. data/sample/array_insert.rb +0 -20
  38. data/sample/async_api.rb +0 -106
  39. data/sample/async_copyto.rb +0 -39
  40. data/sample/async_mixed.rb +0 -56
  41. data/sample/check_conn.rb +0 -21
  42. data/sample/copyfrom.rb +0 -81
  43. data/sample/copyto.rb +0 -19
  44. data/sample/cursor.rb +0 -21
  45. data/sample/disk_usage_report.rb +0 -186
  46. data/sample/issue-119.rb +0 -94
  47. data/sample/losample.rb +0 -69
  48. data/sample/minimal-testcase.rb +0 -17
  49. data/sample/notify_wait.rb +0 -72
  50. data/sample/pg_statistics.rb +0 -294
  51. data/sample/replication_monitor.rb +0 -231
  52. data/sample/test_binary_values.rb +0 -33
  53. data/sample/wal_shipper.rb +0 -434
  54. data/sample/warehouse_partitions.rb +0 -320
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * pg_column_map.c - PG::ColumnMap class extension
3
- * $Id: pg_type_map_by_column.c,v fcf731d3dff7 2015/09/08 12:25:06 jfali $
3
+ * $Id$
4
4
  *
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * pg_type_map_by_mri_type.c - PG::TypeMapByMriType class extension
3
- * $Id: pg_type_map_by_mri_type.c,v 1269b8ad77b8 2015/02/06 16:38:23 lars $
3
+ * $Id$
4
4
  *
5
5
  * This type map can be used to select value encoders based on the MRI-internal
6
6
  * value type code.
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * pg_type_map_by_oid.c - PG::TypeMapByOid class extension
3
- * $Id: pg_type_map_by_oid.c,v c99d26015e3c 2014/12/12 20:58:25 lars $
3
+ * $Id$
4
4
  *
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * pg_type_map_in_ruby.c - PG::TypeMapInRuby class extension
3
- * $Id: pg_type_map_in_ruby.c,v 3d89d3aae4fd 2015/01/05 16:19:41 kanis $
3
+ * $Id$
4
4
  *
5
5
  */
6
6
 
data/ext/util.c CHANGED
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * util.c - Utils for ruby-pg
3
- * $Id: util.c,v 5fb9170f6a7d 2015/06/29 11:15:12 kanis $
3
+ * $Id$
4
4
  *
5
5
  */
6
6
 
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/lib/pg.rb CHANGED
@@ -10,8 +10,8 @@ rescue LoadError
10
10
 
11
11
  add_dll_path = proc do |path, &block|
12
12
  begin
13
- require 'ruby_installer'
14
- RubyInstaller.add_dll_directory(path, &block)
13
+ require 'ruby_installer/runtime'
14
+ RubyInstaller::Runtime.add_dll_directory(path, &block)
15
15
  rescue LoadError
16
16
  old_path = ENV['PATH']
17
17
  ENV['PATH'] = "#{path};#{old_path}"
@@ -35,10 +35,10 @@ end
35
35
  module PG
36
36
 
37
37
  # Library version
38
- VERSION = '0.20.0'
38
+ VERSION = '0.21.0'
39
39
 
40
40
  # VCS revision
41
- REVISION = %q$Revision: 838985377b48 $
41
+ REVISION = %q$Revision$
42
42
 
43
43
  class NotAllCopyDataRetrieved < PG::Error
44
44
  end
@@ -70,5 +70,7 @@ module PG
70
70
  end # module PG
71
71
 
72
72
 
73
- # Backward-compatible aliase
74
- PGError = PG::Error
73
+ autoload :PGError, 'pg/deprecated_constants'
74
+ autoload :PGconn, 'pg/deprecated_constants'
75
+ autoload :PGresult, 'pg/deprecated_constants'
76
+
@@ -265,7 +265,3 @@ class PG::Connection
265
265
 
266
266
  end # class PG::Connection
267
267
 
268
- # :stopdoc:
269
- # Backward-compatible alias
270
- PGconn = PG::Connection
271
-
@@ -0,0 +1,21 @@
1
+ # -*- ruby -*-
2
+ #encoding: utf-8
3
+
4
+ # Warn about use of deprecated constants when this is autoloaded
5
+ callsite = caller(3).first
6
+
7
+ warn <<END_OF_WARNING
8
+ The PGconn, PGresult, and PGError constants are deprecated, and will be
9
+ removed as of version 1.0.
10
+
11
+ You should use PG::Connection, PG::Result, and PG::Error instead, respectively.
12
+
13
+ Called from #{callsite}
14
+ END_OF_WARNING
15
+
16
+
17
+
18
+ PGconn = PG::Connection
19
+ PGresult = PG::Result
20
+ PGError = PG::Error
21
+
@@ -29,6 +29,3 @@ class PG::Result
29
29
 
30
30
  end # class PG::Result
31
31
 
32
- # :stopdoc:
33
- # Backward-compatible alias
34
- PGresult = PG::Result
@@ -100,11 +100,11 @@ describe PG::Result do
100
100
  expect( res[0]['n'] ).to be_nil()
101
101
  end
102
102
 
103
- it "encapsulates errors in a PGError object" do
103
+ it "encapsulates errors in a PG::Error object" do
104
104
  exception = nil
105
105
  begin
106
106
  @conn.exec( "SELECT * FROM nonexistant_table" )
107
- rescue PGError => err
107
+ rescue PG::Error => err
108
108
  exception = err
109
109
  end
110
110
 
@@ -136,7 +136,7 @@ describe PG::Result do
136
136
  exception = nil
137
137
  begin
138
138
  @conn.exec( "INSERT INTO integrity VALUES (NULL)" )
139
- rescue PGError => err
139
+ rescue PG::Error => err
140
140
  exception = err
141
141
  end
142
142
  result = exception.result
@@ -152,7 +152,7 @@ describe PG::Result do
152
152
  sqlstate = nil
153
153
  begin
154
154
  res = @conn.exec("SELECT 1/0")
155
- rescue PGError => e
155
+ rescue PG::Error => e
156
156
  sqlstate = e.result.result_error_field( PG::PG_DIAG_SQLSTATE ).to_i
157
157
  end
158
158
  expect( sqlstate ).to eq( 22012 )
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: 0.20.0
4
+ version: 0.21.0
5
5
  platform: x86-mingw32
6
6
  authors:
7
7
  - Michael Granger
@@ -11,32 +11,26 @@ 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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
- BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFHKN/nkRusdqCJEuq3lgB3fJvyTg
28
- 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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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
31
+ 3EVmCm5IRuqZ1UcDFouQ9w==
38
32
  -----END CERTIFICATE-----
39
- date: 2017-03-10 00:00:00.000000000 Z
33
+ date: 2017-06-13 00:00:00.000000000 Z
40
34
  dependencies:
41
35
  - !ruby/object:Gem::Dependency
42
36
  name: hoe-mercurial
@@ -58,14 +52,14 @@ dependencies:
58
52
  requirements:
59
53
  - - "~>"
60
54
  - !ruby/object:Gem::Version
61
- version: '0.8'
55
+ version: '0.9'
62
56
  type: :development
63
57
  prerelease: false
64
58
  version_requirements: !ruby/object:Gem::Requirement
65
59
  requirements:
66
60
  - - "~>"
67
61
  - !ruby/object:Gem::Version
68
- version: '0.8'
62
+ version: '0.9'
69
63
  - !ruby/object:Gem::Dependency
70
64
  name: hoe-highline
71
65
  requirement: !ruby/object:Gem::Requirement
@@ -86,84 +80,84 @@ dependencies:
86
80
  requirements:
87
81
  - - "~>"
88
82
  - !ruby/object:Gem::Version
89
- version: 1.0.3
83
+ version: '1.0'
90
84
  type: :development
91
85
  prerelease: false
92
86
  version_requirements: !ruby/object:Gem::Requirement
93
87
  requirements:
94
88
  - - "~>"
95
89
  - !ruby/object:Gem::Version
96
- version: 1.0.3
90
+ version: '1.0'
97
91
  - !ruby/object:Gem::Dependency
98
92
  name: rake-compiler-dock
99
93
  requirement: !ruby/object:Gem::Requirement
100
94
  requirements:
101
95
  - - "~>"
102
96
  - !ruby/object:Gem::Version
103
- version: 0.6.0
97
+ version: '0.6'
104
98
  type: :development
105
99
  prerelease: false
106
100
  version_requirements: !ruby/object:Gem::Requirement
107
101
  requirements:
108
102
  - - "~>"
109
103
  - !ruby/object:Gem::Version
110
- version: 0.6.0
104
+ version: '0.6'
111
105
  - !ruby/object:Gem::Dependency
112
- name: hoe
106
+ name: hoe-bundler
113
107
  requirement: !ruby/object:Gem::Requirement
114
108
  requirements:
115
109
  - - "~>"
116
110
  - !ruby/object:Gem::Version
117
- version: '3.12'
111
+ version: '1.0'
118
112
  type: :development
119
113
  prerelease: false
120
114
  version_requirements: !ruby/object:Gem::Requirement
121
115
  requirements:
122
116
  - - "~>"
123
117
  - !ruby/object:Gem::Version
124
- version: '3.12'
118
+ version: '1.0'
125
119
  - !ruby/object:Gem::Dependency
126
- name: hoe-bundler
120
+ name: rspec
127
121
  requirement: !ruby/object:Gem::Requirement
128
122
  requirements:
129
123
  - - "~>"
130
124
  - !ruby/object:Gem::Version
131
- version: '1.0'
125
+ version: '3.5'
132
126
  type: :development
133
127
  prerelease: false
134
128
  version_requirements: !ruby/object:Gem::Requirement
135
129
  requirements:
136
130
  - - "~>"
137
131
  - !ruby/object:Gem::Version
138
- version: '1.0'
132
+ version: '3.5'
139
133
  - !ruby/object:Gem::Dependency
140
- name: rspec
134
+ name: rdoc
141
135
  requirement: !ruby/object:Gem::Requirement
142
136
  requirements:
143
137
  - - "~>"
144
138
  - !ruby/object:Gem::Version
145
- version: '3.0'
139
+ version: '5.1'
146
140
  type: :development
147
141
  prerelease: false
148
142
  version_requirements: !ruby/object:Gem::Requirement
149
143
  requirements:
150
144
  - - "~>"
151
145
  - !ruby/object:Gem::Version
152
- version: '3.0'
146
+ version: '5.1'
153
147
  - !ruby/object:Gem::Dependency
154
- name: rdoc
148
+ name: hoe
155
149
  requirement: !ruby/object:Gem::Requirement
156
150
  requirements:
157
151
  - - "~>"
158
152
  - !ruby/object:Gem::Version
159
- version: '4.0'
153
+ version: '3.16'
160
154
  type: :development
161
155
  prerelease: false
162
156
  version_requirements: !ruby/object:Gem::Requirement
163
157
  requirements:
164
158
  - - "~>"
165
159
  - !ruby/object:Gem::Version
166
- version: '4.0'
160
+ version: '3.16'
167
161
  description: |-
168
162
  Pg is the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/].
169
163
 
@@ -274,29 +268,12 @@ files:
274
268
  - lib/pg/coder.rb
275
269
  - lib/pg/connection.rb
276
270
  - lib/pg/constants.rb
271
+ - lib/pg/deprecated_constants.rb
277
272
  - lib/pg/exceptions.rb
278
273
  - lib/pg/result.rb
279
274
  - lib/pg/text_decoder.rb
280
275
  - lib/pg/text_encoder.rb
281
276
  - lib/pg/type_map_by_column.rb
282
- - sample/array_insert.rb
283
- - sample/async_api.rb
284
- - sample/async_copyto.rb
285
- - sample/async_mixed.rb
286
- - sample/check_conn.rb
287
- - sample/copyfrom.rb
288
- - sample/copyto.rb
289
- - sample/cursor.rb
290
- - sample/disk_usage_report.rb
291
- - sample/issue-119.rb
292
- - sample/losample.rb
293
- - sample/minimal-testcase.rb
294
- - sample/notify_wait.rb
295
- - sample/pg_statistics.rb
296
- - sample/replication_monitor.rb
297
- - sample/test_binary_values.rb
298
- - sample/wal_shipper.rb
299
- - sample/warehouse_partitions.rb
300
277
  - spec/data/expected_trace.out
301
278
  - spec/data/random_binary_data
302
279
  - spec/helpers.rb
@@ -336,7 +313,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
336
313
  version: '0'
337
314
  requirements: []
338
315
  rubyforge_project:
339
- rubygems_version: 2.6.8
316
+ rubygems_version: 2.6.12
340
317
  signing_key:
341
318
  specification_version: 4
342
319
  summary: Pg is the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/]
metadata.gz.sig CHANGED
Binary file
@@ -1,20 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'pg'
4
-
5
- c = PG.connect( dbname: 'test' )
6
-
7
- # this one works:
8
- c.exec( "DROP TABLE IF EXISTS foo" )
9
- c.exec( "CREATE TABLE foo (strings character varying[]);" )
10
-
11
- # But using a prepared statement works:
12
- c.set_error_verbosity( PG::PQERRORS_VERBOSE )
13
- c.prepare( 'stmt', "INSERT INTO foo VALUES ($1);" )
14
-
15
- # This won't work
16
- #c.exec_prepared( 'stmt', ["ARRAY['this','that']"] )
17
-
18
- # but this will:
19
- c.exec_prepared( 'stmt', ["{'this','that'}"] )
20
-
@@ -1,106 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'pg'
4
-
5
- # This is a example of how to use the asynchronous API to query the
6
- # server without blocking other threads. It's intentionally low-level;
7
- # if you hooked up the PG::Connection#socket to some kind of reactor, you
8
- # could make this much nicer.
9
-
10
- TIMEOUT = 5.0 # seconds to wait for an async operation to complete
11
-
12
- # Print 'x' continuously to demonstrate that other threads aren't
13
- # blocked while waiting for the connection, for the query to be sent,
14
- # for results, etc. You might want to sleep inside the loop or
15
- # comment this out entirely for cleaner output.
16
- progress_thread = Thread.new { loop { print 'x' } }
17
-
18
- # Output progress messages
19
- def output_progress( msg )
20
- puts "\n>>> #{msg}\n"
21
- end
22
-
23
- # Start the connection
24
- output_progress "Starting connection..."
25
- conn = PG::Connection.connect_start( :dbname => 'test' ) or
26
- abort "Unable to create a new connection!"
27
- abort "Connection failed: %s" % [ conn.error_message ] if
28
- conn.status == PG::CONNECTION_BAD
29
-
30
- # Now grab a reference to the underlying socket so we know when the
31
- # connection is established
32
- socket = conn.socket_io
33
-
34
- # Track the progress of the connection, waiting for the socket to become readable/writable
35
- # before polling it
36
- poll_status = PG::PGRES_POLLING_WRITING
37
- until poll_status == PG::PGRES_POLLING_OK ||
38
- poll_status == PG::PGRES_POLLING_FAILED
39
-
40
- # If the socket needs to read, wait 'til it becomes readable to poll again
41
- case poll_status
42
- when PG::PGRES_POLLING_READING
43
- output_progress " waiting for socket to become readable"
44
- select( [socket], nil, nil, TIMEOUT ) or
45
- raise "Asynchronous connection timed out!"
46
-
47
- # ...and the same for when the socket needs to write
48
- when PG::PGRES_POLLING_WRITING
49
- output_progress " waiting for socket to become writable"
50
- select( nil, [socket], nil, TIMEOUT ) or
51
- raise "Asynchronous connection timed out!"
52
- end
53
-
54
- # Output a status message about the progress
55
- case conn.status
56
- when PG::CONNECTION_STARTED
57
- output_progress " waiting for connection to be made."
58
- when PG::CONNECTION_MADE
59
- output_progress " connection OK; waiting to send."
60
- when PG::CONNECTION_AWAITING_RESPONSE
61
- output_progress " waiting for a response from the server."
62
- when PG::CONNECTION_AUTH_OK
63
- output_progress " received authentication; waiting for backend start-up to finish."
64
- when PG::CONNECTION_SSL_STARTUP
65
- output_progress " negotiating SSL encryption."
66
- when PG::CONNECTION_SETENV
67
- output_progress " negotiating environment-driven parameter settings."
68
- when PG::CONNECTION_NEEDED
69
- output_progress " internal state: connect() needed."
70
- end
71
-
72
- # Check to see if it's finished or failed yet
73
- poll_status = conn.connect_poll
74
- end
75
-
76
- abort "Connect failed: %s" % [ conn.error_message ] unless conn.status == PG::CONNECTION_OK
77
-
78
- output_progress "Sending query"
79
- conn.send_query( "SELECT * FROM pg_stat_activity" )
80
-
81
- # Fetch results until there aren't any more
82
- loop do
83
- output_progress " waiting for a response"
84
-
85
- # Buffer any incoming data on the socket until a full result is ready.
86
- conn.consume_input
87
- while conn.is_busy
88
- select( [socket], nil, nil, TIMEOUT ) or
89
- raise "Timeout waiting for query response."
90
- conn.consume_input
91
- end
92
-
93
- # Fetch the next result. If there isn't one, the query is finished
94
- result = conn.get_result or break
95
-
96
- puts "\n\nQuery result:\n%p\n" % [ result.values ]
97
- end
98
-
99
- output_progress "Done."
100
- conn.finish
101
-
102
- if defined?( progress_thread )
103
- progress_thread.kill
104
- progress_thread.join
105
- end
106
-