pg 0.20.0-x86-mingw32 → 0.21.0-x86-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.
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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
- 4MAX2qqKX/FKXqmFO+AGsbwYTEds1mksBF3fGsFgsQWxftG8GfZQ9+Cyu2+l1eOw
23
- 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
- +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
- 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
- /D+K9JW9DDs3Yjgv9k4h7YMhW5gftosd+NkNC/+Y2CkCAwEAAaN1MHMwCQYDVR0T
27
- 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
- MBwGA1UdEQQVMBOBEWdlZEBGYWVyaWVNVUQub3JnMBwGA1UdEgQVMBOBEWdlZEBG
29
- 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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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
- p4vpx2kUSFSAGjtCbDGTNV2AH8w9OU4xEmNz8c5lyoA=
14
+ MIIDPDCCAiSgAwIBAgIBAzANBgkqhkiG9w0BAQUFADBEMQ0wCwYDVQQDDARsYXJz
15
+ MR8wHQYKCZImiZPyLGQBGRYPZ3JlaXotcmVpbnNkb3JmMRIwEAYKCZImiZPyLGQB
16
+ GRYCZGUwHhcNMTcwNDA0MTgyNDE1WhcNMTgwNDA0MTgyNDE1WjBEMQ0wCwYDVQQD
17
+ DARsYXJzMR8wHQYKCZImiZPyLGQBGRYPZ3JlaXotcmVpbnNkb3JmMRIwEAYKCZIm
18
+ iZPyLGQBGRYCZGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZb4Uv
19
+ RFJfRu/VEWiy3psh2jinETjiuBrL0NeRFGf8H7iU9+gx/DI/FFhfHGLrDeIskrJx
20
+ YIWDMmEjVO10UUdj7wu4ZhmU++0Cd7Kq9/TyP/shIP3IjqHjVLCnJ3P6f1cl5rxZ
21
+ gqo+d3BAoDrmPk0rtaf6QopwUw9RBiF8V4HqvpiY+ruJotP5UQDP4/lVOKvA8PI9
22
+ P0GmVbFBrbc7Zt5h78N3UyOK0u+nvOC23BvyHXzCtcFsXCoEkt+Wwh0RFqVZdnjM
23
+ LMO2vULHKKHDdX54K/sbVCj9pN9h1aotNzrEyo55zxn0G9PHg/G3P8nMvAXPkUTe
24
+ brhXrfCwWRvOXA4TAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0G
25
+ A1UdDgQWBBRAHK81igrXodaDj8a8/BIKsaZrETANBgkqhkiG9w0BAQUFAAOCAQEA
26
+ Wbp+grpaqUH+RiXNXmi/5xBfvSYLbxWj+DZpCSnQW+DMfx46RVVko3b7BtKDs2zs
27
+ EtKM6r6s7VbllPgcYUzaP92uzPqCw8FncvqG0+B+Nd4C2jKzPxAQyzYXv/3bQhv1
28
+ sXAzEqLQqKx5V63eBDh1TPvPTEMfJwmjcdcbvMwFSt5EcUkT63W13ZJXX23JYp1K
29
+ KRW+N1WIYz8RSBNaQIP2v5Inb9vUA+jPUOcdyLHoi205lyZ28hE4lcnh9Zs02aHs
30
+ Ao8FZozVJz8xVEuYNJsL2k70w0FiwXwoWyvKyekgPBvYNUj4JGDMtBBayJTOpDs7
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
-