pg 0.15.0.pre.454-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.gemtest +0 -0
  3. data/BSDL +22 -0
  4. data/ChangeLog +2945 -0
  5. data/Contributors.rdoc +46 -0
  6. data/History.rdoc +205 -0
  7. data/LICENSE +56 -0
  8. data/Manifest.txt +53 -0
  9. data/POSTGRES +23 -0
  10. data/README-OS_X.rdoc +68 -0
  11. data/README-Windows.rdoc +67 -0
  12. data/README.ja.rdoc +14 -0
  13. data/README.rdoc +111 -0
  14. data/Rakefile +156 -0
  15. data/Rakefile.cross +271 -0
  16. data/ext/extconf.rb +91 -0
  17. data/ext/gvl_wrappers.c +13 -0
  18. data/ext/gvl_wrappers.h +185 -0
  19. data/ext/pg.c +525 -0
  20. data/ext/pg.h +126 -0
  21. data/ext/pg_connection.c +3600 -0
  22. data/ext/pg_result.c +939 -0
  23. data/ext/vc/pg.sln +26 -0
  24. data/ext/vc/pg_18/pg.vcproj +216 -0
  25. data/ext/vc/pg_19/pg_19.vcproj +209 -0
  26. data/lib/2.0/pg_ext.so +0 -0
  27. data/lib/pg.rb +52 -0
  28. data/lib/pg/connection.rb +71 -0
  29. data/lib/pg/constants.rb +11 -0
  30. data/lib/pg/exceptions.rb +11 -0
  31. data/lib/pg/result.rb +16 -0
  32. data/sample/array_insert.rb +20 -0
  33. data/sample/async_api.rb +106 -0
  34. data/sample/async_copyto.rb +39 -0
  35. data/sample/async_mixed.rb +56 -0
  36. data/sample/check_conn.rb +21 -0
  37. data/sample/copyfrom.rb +81 -0
  38. data/sample/copyto.rb +19 -0
  39. data/sample/cursor.rb +21 -0
  40. data/sample/disk_usage_report.rb +186 -0
  41. data/sample/issue-119.rb +94 -0
  42. data/sample/losample.rb +69 -0
  43. data/sample/minimal-testcase.rb +17 -0
  44. data/sample/notify_wait.rb +72 -0
  45. data/sample/pg_statistics.rb +294 -0
  46. data/sample/replication_monitor.rb +231 -0
  47. data/sample/test_binary_values.rb +33 -0
  48. data/sample/wal_shipper.rb +434 -0
  49. data/sample/warehouse_partitions.rb +320 -0
  50. data/spec/data/expected_trace.out +26 -0
  51. data/spec/data/random_binary_data +0 -0
  52. data/spec/lib/helpers.rb +279 -0
  53. data/spec/pg/connection_spec.rb +1013 -0
  54. data/spec/pg/result_spec.rb +278 -0
  55. data/spec/pg_spec.rb +31 -0
  56. metadata +275 -0
  57. metadata.gz.sig +0 -0
@@ -0,0 +1,278 @@
1
+ #!/usr/bin/env rspec
2
+ # encoding: utf-8
3
+
4
+ BEGIN {
5
+ require 'pathname'
6
+
7
+ basedir = Pathname( __FILE__ ).dirname.parent.parent
8
+ libdir = basedir + 'lib'
9
+
10
+ $LOAD_PATH.unshift( basedir.to_s ) unless $LOAD_PATH.include?( basedir.to_s )
11
+ $LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
12
+ }
13
+
14
+ require 'rspec'
15
+ require 'spec/lib/helpers'
16
+ require 'pg'
17
+
18
+ describe PG::Result do
19
+
20
+ before( :all ) do
21
+ @conn = setup_testing_db( "PG_Result" )
22
+ end
23
+
24
+ before( :each ) do
25
+ @conn.exec( 'BEGIN' )
26
+ end
27
+
28
+ after( :each ) do
29
+ @conn.exec( 'ROLLBACK' )
30
+ end
31
+
32
+ after( :all ) do
33
+ teardown_testing_db( @conn )
34
+ end
35
+
36
+
37
+ #
38
+ # Examples
39
+ #
40
+
41
+ it "should act as an array of hashes" do
42
+ res = @conn.exec("SELECT 1 AS a, 2 AS b")
43
+ res[0]['a'].should== '1'
44
+ res[0]['b'].should== '2'
45
+ end
46
+
47
+ it "should yield a row as an array" do
48
+ res = @conn.exec("SELECT 1 AS a, 2 AS b")
49
+ list = []
50
+ res.each_row { |r| list << r }
51
+ list.should eq [['1', '2']]
52
+ end
53
+
54
+ it "should insert nil AS NULL and return NULL as nil" do
55
+ res = @conn.exec("SELECT $1::int AS n", [nil])
56
+ res[0]['n'].should be_nil()
57
+ end
58
+
59
+ it "encapsulates errors in a PGError object" do
60
+ exception = nil
61
+ begin
62
+ @conn.exec( "SELECT * FROM nonexistant_table" )
63
+ rescue PGError => err
64
+ exception = err
65
+ end
66
+
67
+ result = exception.result
68
+
69
+ result.should be_a( described_class() )
70
+ result.error_field( PG::PG_DIAG_SEVERITY ).should == 'ERROR'
71
+ result.error_field( PG::PG_DIAG_SQLSTATE ).should == '42P01'
72
+ result.error_field( PG::PG_DIAG_MESSAGE_PRIMARY ).
73
+ should == 'relation "nonexistant_table" does not exist'
74
+ result.error_field( PG::PG_DIAG_MESSAGE_DETAIL ).should be_nil()
75
+ result.error_field( PG::PG_DIAG_MESSAGE_HINT ).should be_nil()
76
+ statement_pos = RSpec.configuration.exclusion_filter[:postgresql_90] ? nil : '15'
77
+ result.error_field( PG::PG_DIAG_STATEMENT_POSITION ).should == statement_pos
78
+ result.error_field( PG::PG_DIAG_INTERNAL_POSITION ).should be_nil()
79
+ result.error_field( PG::PG_DIAG_INTERNAL_QUERY ).should be_nil()
80
+ result.error_field( PG::PG_DIAG_CONTEXT ).should be_nil()
81
+ result.error_field( PG::PG_DIAG_SOURCE_FILE ).should =~ /parse_relation\.c$|namespace\.c$/
82
+ result.error_field( PG::PG_DIAG_SOURCE_LINE ).should =~ /^\d+$/
83
+ result.error_field( PG::PG_DIAG_SOURCE_FUNCTION ).should =~ /^parserOpenTable$|^RangeVarGetRelid$/
84
+
85
+ end
86
+
87
+ it "should detect division by zero as SQLSTATE 22012" do
88
+ sqlstate = nil
89
+ begin
90
+ res = @conn.exec("SELECT 1/0")
91
+ rescue PGError => e
92
+ sqlstate = e.result.result_error_field( PG::PG_DIAG_SQLSTATE ).to_i
93
+ end
94
+ sqlstate.should == 22012
95
+ end
96
+
97
+ it "should return the same bytes in binary format that are sent in binary format" do
98
+ binary_file = File.join(Dir.pwd, 'spec/data', 'random_binary_data')
99
+ bytes = File.open(binary_file, 'rb').read
100
+ res = @conn.exec('VALUES ($1::bytea)',
101
+ [ { :value => bytes, :format => 1 } ], 1)
102
+ res[0]['column1'].should== bytes
103
+ res.getvalue(0,0).should == bytes
104
+ res.values[0][0].should == bytes
105
+ res.column_values(0)[0].should == bytes
106
+ end
107
+
108
+ it "should return the same bytes in binary format that are sent as inline text" do
109
+ binary_file = File.join(Dir.pwd, 'spec/data', 'random_binary_data')
110
+ bytes = File.open(binary_file, 'rb').read
111
+ @conn.exec("SET standard_conforming_strings=on")
112
+ res = @conn.exec("VALUES ('#{PG::Connection.escape_bytea(bytes)}'::bytea)", [], 1)
113
+ res[0]['column1'].should == bytes
114
+ res.getvalue(0,0).should == bytes
115
+ res.values[0][0].should == bytes
116
+ res.column_values(0)[0].should == bytes
117
+ end
118
+
119
+ it "should return the same bytes in text format that are sent in binary format" do
120
+ binary_file = File.join(Dir.pwd, 'spec/data', 'random_binary_data')
121
+ bytes = File.open(binary_file, 'rb').read
122
+ res = @conn.exec('VALUES ($1::bytea)',
123
+ [ { :value => bytes, :format => 1 } ])
124
+ PG::Connection.unescape_bytea(res[0]['column1']).should== bytes
125
+ end
126
+
127
+ it "should return the same bytes in text format that are sent as inline text" do
128
+ binary_file = File.join(Dir.pwd, 'spec/data', 'random_binary_data')
129
+ in_bytes = File.open(binary_file, 'rb').read
130
+
131
+ out_bytes = nil
132
+ @conn.exec("SET standard_conforming_strings=on")
133
+ res = @conn.exec("VALUES ('#{PG::Connection.escape_bytea(in_bytes)}'::bytea)", [], 0)
134
+ out_bytes = PG::Connection.unescape_bytea(res[0]['column1'])
135
+ out_bytes.should == in_bytes
136
+ end
137
+
138
+ it "should return the parameter type of the specified prepared statement parameter", :postgresql_92 do
139
+ query = 'SELECT * FROM pg_stat_activity WHERE user = $1::name AND query = $2::text'
140
+ @conn.prepare( 'queryfinder', query )
141
+ res = @conn.describe_prepared( 'queryfinder' )
142
+
143
+ @conn.exec( 'SELECT format_type($1, -1)', [res.paramtype(0)] ).getvalue( 0, 0 ).
144
+ should == 'name'
145
+ @conn.exec( 'SELECT format_type($1, -1)', [res.paramtype(1)] ).getvalue( 0, 0 ).
146
+ should == 'text'
147
+ end
148
+
149
+ it "should raise an exception when a negative index is given to #fformat" do
150
+ res = @conn.exec('SELECT * FROM pg_stat_activity')
151
+ expect {
152
+ res.fformat( -1 )
153
+ }.to raise_error( ArgumentError, /column number/i )
154
+ end
155
+
156
+ it "should raise an exception when a negative index is given to #fmod" do
157
+ res = @conn.exec('SELECT * FROM pg_stat_activity')
158
+ expect {
159
+ res.fmod( -1 )
160
+ }.to raise_error( ArgumentError, /column number/i )
161
+ end
162
+
163
+ it "should raise an exception when a negative index is given to #[]" do
164
+ res = @conn.exec('SELECT * FROM pg_stat_activity')
165
+ expect {
166
+ res[ -1 ]
167
+ }.to raise_error( IndexError, /-1 is out of range/i )
168
+ end
169
+
170
+ it "should raise allow for conversion to an array of arrays" do
171
+ @conn.exec( 'CREATE TABLE valuestest ( foo varchar(33) )' )
172
+ @conn.exec( 'INSERT INTO valuestest ("foo") values (\'bar\')' )
173
+ @conn.exec( 'INSERT INTO valuestest ("foo") values (\'bar2\')' )
174
+
175
+ res = @conn.exec( 'SELECT * FROM valuestest' )
176
+ res.values.should == [ ["bar"], ["bar2"] ]
177
+ end
178
+
179
+ # PQfmod
180
+ it "can return the type modifier for a result column" do
181
+ @conn.exec( 'CREATE TABLE fmodtest ( foo varchar(33) )' )
182
+ res = @conn.exec( 'SELECT * FROM fmodtest' )
183
+ res.fmod( 0 ).should == 33 + 4 # Column length + varlena size (4)
184
+ end
185
+
186
+ it "should raise an exception when an invalid index is passed to PG::Result#fmod" do
187
+ @conn.exec( 'CREATE TABLE fmodtest ( foo varchar(33) )' )
188
+ res = @conn.exec( 'SELECT * FROM fmodtest' )
189
+ expect { res.fmod(1) }.to raise_error( ArgumentError )
190
+ end
191
+
192
+ it "should raise an exception when an invalid (negative) index is passed to PG::Result#fmod" do
193
+ @conn.exec( 'CREATE TABLE fmodtest ( foo varchar(33) )' )
194
+ res = @conn.exec( 'SELECT * FROM fmodtest' )
195
+ expect { res.fmod(-11) }.to raise_error( ArgumentError )
196
+ end
197
+
198
+ it "shouldn't raise an exception when a valid index is passed to PG::Result#fmod for a column with no typemod" do
199
+ @conn.exec( 'CREATE TABLE fmodtest ( foo text )' )
200
+ res = @conn.exec( 'SELECT * FROM fmodtest' )
201
+ res.fmod( 0 ).should == -1 # and it shouldn't raise an exception, either
202
+ end
203
+
204
+ # PQftable
205
+ it "can return the oid of the table from which a result column was fetched" do
206
+ @conn.exec( 'CREATE TABLE ftabletest ( foo text )' )
207
+ res = @conn.exec( 'SELECT * FROM ftabletest' )
208
+
209
+ res.ftable( 0 ).should == be_nonzero()
210
+ end
211
+
212
+ it "should raise an exception when an invalid index is passed to PG::Result#ftable" do
213
+ @conn.exec( 'CREATE TABLE ftabletest ( foo text )' )
214
+ res = @conn.exec( 'SELECT * FROM ftabletest' )
215
+
216
+ expect { res.ftable(18) }.to raise_error( ArgumentError )
217
+ end
218
+
219
+ it "should raise an exception when an invalid (negative) index is passed to PG::Result#ftable" do
220
+ @conn.exec( 'CREATE TABLE ftabletest ( foo text )' )
221
+ res = @conn.exec( 'SELECT * FROM ftabletest' )
222
+
223
+ expect { res.ftable(-2) }.to raise_error( ArgumentError )
224
+ end
225
+
226
+ it "shouldn't raise an exception when a valid index is passed to PG::Result#ftable for a " +
227
+ "column with no corresponding table" do
228
+ @conn.exec( 'CREATE TABLE ftabletest ( foo text )' )
229
+ res = @conn.exec( 'SELECT foo, LENGTH(foo) as length FROM ftabletest' )
230
+ res.ftable( 1 ).should == PG::INVALID_OID # and it shouldn't raise an exception, either
231
+ end
232
+
233
+ # PQftablecol
234
+ it "can return the column number (within its table) of a column in a result" do
235
+ @conn.exec( 'CREATE TABLE ftablecoltest ( foo text, bar numeric )' )
236
+ res = @conn.exec( 'SELECT * FROM ftablecoltest' )
237
+
238
+ res.ftablecol( 0 ).should == 1
239
+ res.ftablecol( 1 ).should == 2
240
+ end
241
+
242
+ it "should raise an exception when an invalid index is passed to PG::Result#ftablecol" do
243
+ @conn.exec( 'CREATE TABLE ftablecoltest ( foo text, bar numeric )' )
244
+ res = @conn.exec( 'SELECT * FROM ftablecoltest' )
245
+
246
+ expect { res.ftablecol(32) }.to raise_error( ArgumentError )
247
+ end
248
+
249
+ it "should raise an exception when an invalid (negative) index is passed to PG::Result#ftablecol" do
250
+ @conn.exec( 'CREATE TABLE ftablecoltest ( foo text, bar numeric )' )
251
+ res = @conn.exec( 'SELECT * FROM ftablecoltest' )
252
+
253
+ expect { res.ftablecol(-1) }.to raise_error( ArgumentError )
254
+ end
255
+
256
+ it "shouldn't raise an exception when a valid index is passed to PG::Result#ftablecol for a " +
257
+ "column with no corresponding table" do
258
+ @conn.exec( 'CREATE TABLE ftablecoltest ( foo text )' )
259
+ res = @conn.exec( 'SELECT foo, LENGTH(foo) as length FROM ftablecoltest' )
260
+ res.ftablecol(1).should == 0 # and it shouldn't raise an exception, either
261
+ end
262
+
263
+ it "can be manually checked for failed result status (async API)" do
264
+ @conn.send_query( "SELECT * FROM nonexistant_table" )
265
+ res = @conn.get_result
266
+ expect {
267
+ res.check
268
+ }.to raise_error( PG::Error, /relation "nonexistant_table" does not exist/ )
269
+ end
270
+
271
+ it "can return the values of a single field" do
272
+ res = @conn.exec( "SELECT 1 AS x, 'a' AS y UNION ALL SELECT 2, 'b'" )
273
+ res.field_values( 'x' ).should == ['1', '2']
274
+ res.field_values( 'y' ).should == ['a', 'b']
275
+ expect{ res.field_values( '' ) }.to raise_error(IndexError)
276
+ expect{ res.field_values( :x ) }.to raise_error(TypeError)
277
+ end
278
+ end
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env rspec
2
+ # encoding: utf-8
3
+
4
+ BEGIN {
5
+ require 'pathname'
6
+
7
+ basedir = Pathname( __FILE__ ).dirname.parent
8
+ libdir = basedir + 'lib'
9
+
10
+ $LOAD_PATH.unshift( basedir.to_s ) unless $LOAD_PATH.include?( basedir.to_s )
11
+ $LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
12
+ }
13
+
14
+ require 'rspec'
15
+ require 'spec/lib/helpers'
16
+ require 'pg'
17
+
18
+ describe PG do
19
+
20
+ it "knows what version of the libpq library is loaded", :postgresql_91 do
21
+ PG.library_version.should be_an( Integer )
22
+ PG.library_version.should >= 90100
23
+ end
24
+
25
+
26
+ it "knows whether or not the library is threadsafe" do
27
+ PG.should be_threadsafe()
28
+ end
29
+
30
+ end
31
+
metadata ADDED
@@ -0,0 +1,275 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pg
3
+ version: !ruby/object:Gem::Version
4
+ hash: 3700714167
5
+ prerelease: 7
6
+ segments:
7
+ - 0
8
+ - 15
9
+ - 0
10
+ - pre
11
+ - 454
12
+ version: 0.15.0.pre.454
13
+ platform: x64-mingw32
14
+ authors:
15
+ - Michael Granger
16
+ autorequire:
17
+ bindir: bin
18
+ cert_chain:
19
+ - |
20
+ -----BEGIN CERTIFICATE-----
21
+ MIIDPDCCAiSgAwIBAgIBADANBgkqhkiG9w0BAQUFADBEMQ0wCwYDVQQDDARsYXJz
22
+ MR8wHQYKCZImiZPyLGQBGRYPZ3JlaXotcmVpbnNkb3JmMRIwEAYKCZImiZPyLGQB
23
+ GRYCZGUwHhcNMTMwMzExMjAyMjIyWhcNMTQwMzExMjAyMjIyWjBEMQ0wCwYDVQQD
24
+ DARsYXJzMR8wHQYKCZImiZPyLGQBGRYPZ3JlaXotcmVpbnNkb3JmMRIwEAYKCZIm
25
+ iZPyLGQBGRYCZGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZb4Uv
26
+ RFJfRu/VEWiy3psh2jinETjiuBrL0NeRFGf8H7iU9+gx/DI/FFhfHGLrDeIskrJx
27
+ YIWDMmEjVO10UUdj7wu4ZhmU++0Cd7Kq9/TyP/shIP3IjqHjVLCnJ3P6f1cl5rxZ
28
+ gqo+d3BAoDrmPk0rtaf6QopwUw9RBiF8V4HqvpiY+ruJotP5UQDP4/lVOKvA8PI9
29
+ P0GmVbFBrbc7Zt5h78N3UyOK0u+nvOC23BvyHXzCtcFsXCoEkt+Wwh0RFqVZdnjM
30
+ LMO2vULHKKHDdX54K/sbVCj9pN9h1aotNzrEyo55zxn0G9PHg/G3P8nMvAXPkUTe
31
+ brhXrfCwWRvOXA4TAgMBAAGjOTA3MAsGA1UdDwQEAwIEsDAJBgNVHRMEAjAAMB0G
32
+ A1UdDgQWBBRAHK81igrXodaDj8a8/BIKsaZrETANBgkqhkiG9w0BAQUFAAOCAQEA
33
+ Iswhcol3ytXthaUH3k5LopZ09viZrZHzAw0QleI3Opl/9QEGJ2BPV9+93iC0OrNL
34
+ hmnxig6vKK1EeJ5PHXJ8hOI3nTZBrOmQcEXNBqyToP1FHMWZqwZ8wiBPXtiCqDBR
35
+ ePQ25J9xFNzQ1ItgzNSpx5cs67QNKrx5woocoBHD6kStFbshZPJx4axl3GbUFQd5
36
+ H//3YdPQOH3jaVeUXhS+pz/gfbx8fhFAtsQ+855A3HO7g2ZRIg/atAp/0MFyn5s5
37
+ 0rq+VHOIPyvxF5khT0mYAcNmZTC8z1yPsqdgwfYNDjsSWwiIRSPUSmJRvfjM8hsW
38
+ mMFp4kPUHbWOqCp2mz9gCA==
39
+ -----END CERTIFICATE-----
40
+
41
+ date: 2013-03-15 00:00:00 Z
42
+ dependencies:
43
+ - !ruby/object:Gem::Dependency
44
+ name: hoe-mercurial
45
+ prerelease: false
46
+ requirement: &id001 !ruby/object:Gem::Requirement
47
+ none: false
48
+ requirements:
49
+ - - ~>
50
+ - !ruby/object:Gem::Version
51
+ hash: 7
52
+ segments:
53
+ - 1
54
+ - 4
55
+ - 0
56
+ version: 1.4.0
57
+ type: :development
58
+ version_requirements: *id001
59
+ - !ruby/object:Gem::Dependency
60
+ name: hoe-highline
61
+ prerelease: false
62
+ requirement: &id002 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ hash: 27
68
+ segments:
69
+ - 0
70
+ - 1
71
+ - 0
72
+ version: 0.1.0
73
+ type: :development
74
+ version_requirements: *id002
75
+ - !ruby/object:Gem::Dependency
76
+ name: rdoc
77
+ prerelease: false
78
+ requirement: &id003 !ruby/object:Gem::Requirement
79
+ none: false
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ hash: 19
84
+ segments:
85
+ - 3
86
+ - 10
87
+ version: "3.10"
88
+ type: :development
89
+ version_requirements: *id003
90
+ - !ruby/object:Gem::Dependency
91
+ name: rake-compiler
92
+ prerelease: false
93
+ requirement: &id004 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ~>
97
+ - !ruby/object:Gem::Version
98
+ hash: 27
99
+ segments:
100
+ - 0
101
+ - 8
102
+ version: "0.8"
103
+ type: :development
104
+ version_requirements: *id004
105
+ - !ruby/object:Gem::Dependency
106
+ name: hoe-deveiate
107
+ prerelease: false
108
+ requirement: &id005 !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ~>
112
+ - !ruby/object:Gem::Version
113
+ hash: 15
114
+ segments:
115
+ - 0
116
+ - 2
117
+ version: "0.2"
118
+ type: :development
119
+ version_requirements: *id005
120
+ - !ruby/object:Gem::Dependency
121
+ name: hoe
122
+ prerelease: false
123
+ requirement: &id006 !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - ~>
127
+ - !ruby/object:Gem::Version
128
+ hash: 7
129
+ segments:
130
+ - 3
131
+ - 0
132
+ version: "3.0"
133
+ type: :development
134
+ version_requirements: *id006
135
+ description: |-
136
+ Pg is the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/].
137
+
138
+ It works with {PostgreSQL 8.3 and later}[http://bit.ly/6AfPhm].
139
+
140
+ A small example usage:
141
+
142
+ #!/usr/bin/env ruby
143
+
144
+ require 'pg'
145
+
146
+ # Output a table of current connections to the DB
147
+ conn = PG.connect( dbname: 'sales' )
148
+ conn.exec( "SELECT * FROM pg_stat_activity" ) do |result|
149
+ puts " PID | User | Query"
150
+ result.each do |row|
151
+ puts " %7d | %-16s | %s " %
152
+ row.values_at('procpid', 'usename', 'current_query')
153
+ end
154
+ end
155
+ email:
156
+ - ged@FaerieMUD.org
157
+ executables: []
158
+
159
+ extensions: []
160
+
161
+ extra_rdoc_files:
162
+ - Contributors.rdoc
163
+ - History.rdoc
164
+ - Manifest.txt
165
+ - README-OS_X.rdoc
166
+ - README-Windows.rdoc
167
+ - README.ja.rdoc
168
+ - README.rdoc
169
+ - POSTGRES
170
+ - LICENSE
171
+ - ext/pg_connection.c
172
+ - ext/pg.c
173
+ - ext/gvl_wrappers.c
174
+ - ext/pg_result.c
175
+ files:
176
+ - .gemtest
177
+ - BSDL
178
+ - ChangeLog
179
+ - Contributors.rdoc
180
+ - History.rdoc
181
+ - LICENSE
182
+ - Manifest.txt
183
+ - POSTGRES
184
+ - README-OS_X.rdoc
185
+ - README-Windows.rdoc
186
+ - README.ja.rdoc
187
+ - README.rdoc
188
+ - Rakefile
189
+ - Rakefile.cross
190
+ - ext/extconf.rb
191
+ - ext/gvl_wrappers.c
192
+ - ext/gvl_wrappers.h
193
+ - ext/pg.c
194
+ - ext/pg.h
195
+ - ext/pg_connection.c
196
+ - ext/pg_result.c
197
+ - ext/vc/pg.sln
198
+ - ext/vc/pg_18/pg.vcproj
199
+ - ext/vc/pg_19/pg_19.vcproj
200
+ - lib/pg.rb
201
+ - lib/pg/connection.rb
202
+ - lib/pg/constants.rb
203
+ - lib/pg/exceptions.rb
204
+ - lib/pg/result.rb
205
+ - sample/array_insert.rb
206
+ - sample/async_api.rb
207
+ - sample/async_copyto.rb
208
+ - sample/async_mixed.rb
209
+ - sample/check_conn.rb
210
+ - sample/copyfrom.rb
211
+ - sample/copyto.rb
212
+ - sample/cursor.rb
213
+ - sample/disk_usage_report.rb
214
+ - sample/issue-119.rb
215
+ - sample/losample.rb
216
+ - sample/minimal-testcase.rb
217
+ - sample/notify_wait.rb
218
+ - sample/pg_statistics.rb
219
+ - sample/replication_monitor.rb
220
+ - sample/test_binary_values.rb
221
+ - sample/wal_shipper.rb
222
+ - sample/warehouse_partitions.rb
223
+ - spec/data/expected_trace.out
224
+ - spec/data/random_binary_data
225
+ - spec/lib/helpers.rb
226
+ - spec/pg/connection_spec.rb
227
+ - spec/pg/result_spec.rb
228
+ - spec/pg_spec.rb
229
+ - lib/2.0/pg_ext.so
230
+ homepage: https://bitbucket.org/ged/ruby-pg
231
+ licenses:
232
+ - BSD
233
+ - Ruby
234
+ - GPL
235
+ post_install_message:
236
+ rdoc_options:
237
+ - -f
238
+ - fivefish
239
+ - -t
240
+ - "pg: The Ruby Interface to PostgreSQL"
241
+ - -m
242
+ - README.rdoc
243
+ require_paths:
244
+ - lib
245
+ required_ruby_version: !ruby/object:Gem::Requirement
246
+ none: false
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ hash: 57
251
+ segments:
252
+ - 1
253
+ - 8
254
+ - 7
255
+ version: 1.8.7
256
+ required_rubygems_version: !ruby/object:Gem::Requirement
257
+ none: false
258
+ requirements:
259
+ - - ">"
260
+ - !ruby/object:Gem::Version
261
+ hash: 25
262
+ segments:
263
+ - 1
264
+ - 3
265
+ - 1
266
+ version: 1.3.1
267
+ requirements: []
268
+
269
+ rubyforge_project: pg
270
+ rubygems_version: 1.8.17
271
+ signing_key:
272
+ specification_version: 3
273
+ summary: Pg is the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/]
274
+ test_files: []
275
+