pg_jruby 0.14.1.rc2-java → 0.17.1-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +2 -0
  4. data/BSDL +22 -0
  5. data/ChangeLog +0 -0
  6. data/Contributors.rdoc +45 -0
  7. data/History.rdoc +270 -0
  8. data/LICENSE +56 -0
  9. data/Manifest.txt +51 -5
  10. data/POSTGRES +23 -0
  11. data/README-OS_X.rdoc +68 -0
  12. data/README-Windows.rdoc +67 -0
  13. data/README.ja.rdoc +14 -0
  14. data/README.rdoc +52 -94
  15. data/Rakefile +181 -73
  16. data/Rakefile.cross +273 -0
  17. data/ext/errorcodes.def +931 -0
  18. data/ext/errorcodes.rb +99 -0
  19. data/ext/errorcodes.txt +463 -0
  20. data/ext/extconf.rb +97 -0
  21. data/ext/gvl_wrappers.c +13 -0
  22. data/ext/gvl_wrappers.h +253 -0
  23. data/ext/pg.c +545 -0
  24. data/ext/pg.h +156 -0
  25. data/ext/pg_connection.c +3643 -0
  26. data/ext/pg_errors.c +89 -0
  27. data/ext/pg_result.c +920 -0
  28. data/ext/vc/pg.sln +26 -0
  29. data/ext/vc/pg_18/pg.vcproj +216 -0
  30. data/ext/vc/pg_19/pg_19.vcproj +209 -0
  31. data/lib/pg.rb +12 -18
  32. data/lib/pg/connection.rb +117 -10
  33. data/lib/pg/exceptions.rb +2 -8
  34. data/lib/pg/result.rb +6 -1
  35. data/lib/pg_ext.jar +0 -0
  36. data/sample/array_insert.rb +20 -0
  37. data/sample/async_api.rb +106 -0
  38. data/sample/async_copyto.rb +39 -0
  39. data/sample/async_mixed.rb +56 -0
  40. data/sample/check_conn.rb +21 -0
  41. data/sample/copyfrom.rb +81 -0
  42. data/sample/copyto.rb +19 -0
  43. data/sample/cursor.rb +21 -0
  44. data/sample/disk_usage_report.rb +186 -0
  45. data/sample/issue-119.rb +94 -0
  46. data/sample/losample.rb +69 -0
  47. data/sample/minimal-testcase.rb +17 -0
  48. data/sample/notify_wait.rb +72 -0
  49. data/sample/pg_statistics.rb +294 -0
  50. data/sample/replication_monitor.rb +231 -0
  51. data/sample/test_binary_values.rb +33 -0
  52. data/sample/wal_shipper.rb +434 -0
  53. data/sample/warehouse_partitions.rb +320 -0
  54. data/spec/data/expected_trace.out +26 -0
  55. data/spec/data/random_binary_data +0 -0
  56. data/spec/lib/helpers.rb +350 -0
  57. data/spec/pg/connection_spec.rb +1276 -0
  58. data/spec/pg/result_spec.rb +345 -0
  59. data/spec/pg_spec.rb +44 -0
  60. metadata +136 -90
  61. metadata.gz.sig +0 -0
  62. data/CHANGELOG.rdoc +0 -7
  63. data/bin/pg +0 -3
@@ -0,0 +1,345 @@
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
+ result.error_field( PG::PG_DIAG_STATEMENT_POSITION ).should == '15'
77
+ result.error_field( PG::PG_DIAG_INTERNAL_POSITION ).should be_nil()
78
+ result.error_field( PG::PG_DIAG_INTERNAL_QUERY ).should be_nil()
79
+ result.error_field( PG::PG_DIAG_CONTEXT ).should be_nil()
80
+ result.error_field( PG::PG_DIAG_SOURCE_FILE ).should =~ /parse_relation\.c$|namespace\.c$/
81
+ result.error_field( PG::PG_DIAG_SOURCE_LINE ).should =~ /^\d+$/
82
+ result.error_field( PG::PG_DIAG_SOURCE_FUNCTION ).should =~ /^parserOpenTable$|^RangeVarGetRelid$/
83
+ end
84
+
85
+ it "encapsulates database object names for integrity constraint violations", :postgresql_93 do
86
+ @conn.exec( "CREATE TABLE integrity (id SERIAL PRIMARY KEY)" )
87
+ exception = nil
88
+ begin
89
+ @conn.exec( "INSERT INTO integrity VALUES (NULL)" )
90
+ rescue PGError => err
91
+ exception = err
92
+ end
93
+ result = exception.result
94
+
95
+ result.error_field( PG::PG_DIAG_SCHEMA_NAME ).should == 'public'
96
+ result.error_field( PG::PG_DIAG_TABLE_NAME ).should == 'integrity'
97
+ result.error_field( PG::PG_DIAG_COLUMN_NAME ).should == 'id'
98
+ result.error_field( PG::PG_DIAG_DATATYPE_NAME ).should be_nil
99
+ result.error_field( PG::PG_DIAG_CONSTRAINT_NAME ).should be_nil
100
+ end
101
+
102
+ it "should detect division by zero as SQLSTATE 22012" do
103
+ sqlstate = nil
104
+ begin
105
+ res = @conn.exec("SELECT 1/0")
106
+ rescue PGError => e
107
+ sqlstate = e.result.result_error_field( PG::PG_DIAG_SQLSTATE ).to_i
108
+ end
109
+ sqlstate.should == 22012
110
+ end
111
+
112
+ it "should return the same bytes in binary format that are sent in binary format" do
113
+ binary_file = File.join(Dir.pwd, 'spec/data', 'random_binary_data')
114
+ bytes = File.open(binary_file, 'rb').read
115
+ res = @conn.exec('VALUES ($1::bytea)',
116
+ [ { :value => bytes, :format => 1 } ], 1)
117
+ res[0]['column1'].should== bytes
118
+ res.getvalue(0,0).should == bytes
119
+ res.values[0][0].should == bytes
120
+ res.column_values(0)[0].should == bytes
121
+ end
122
+
123
+ it "should return the same bytes in binary format that are sent as inline text" do
124
+ binary_file = File.join(Dir.pwd, 'spec/data', 'random_binary_data')
125
+ bytes = File.open(binary_file, 'rb').read
126
+ @conn.exec("SET standard_conforming_strings=on")
127
+ res = @conn.exec("VALUES ('#{PG::Connection.escape_bytea(bytes)}'::bytea)", [], 1)
128
+ res[0]['column1'].should == bytes
129
+ res.getvalue(0,0).should == bytes
130
+ res.values[0][0].should == bytes
131
+ res.column_values(0)[0].should == bytes
132
+ end
133
+
134
+ it "should return the same bytes in text format that are sent in binary format" do
135
+ binary_file = File.join(Dir.pwd, 'spec/data', 'random_binary_data')
136
+ bytes = File.open(binary_file, 'rb').read
137
+ res = @conn.exec('VALUES ($1::bytea)',
138
+ [ { :value => bytes, :format => 1 } ])
139
+ PG::Connection.unescape_bytea(res[0]['column1']).should== bytes
140
+ end
141
+
142
+ it "should return the same bytes in text format that are sent as inline text" do
143
+ binary_file = File.join(Dir.pwd, 'spec/data', 'random_binary_data')
144
+ in_bytes = File.open(binary_file, 'rb').read
145
+
146
+ out_bytes = nil
147
+ @conn.exec("SET standard_conforming_strings=on")
148
+ res = @conn.exec("VALUES ('#{PG::Connection.escape_bytea(in_bytes)}'::bytea)", [], 0)
149
+ out_bytes = PG::Connection.unescape_bytea(res[0]['column1'])
150
+ out_bytes.should == in_bytes
151
+ end
152
+
153
+ it "should return the parameter type of the specified prepared statement parameter", :postgresql_92 do
154
+ query = 'SELECT * FROM pg_stat_activity WHERE user = $1::name AND query = $2::text'
155
+ @conn.prepare( 'queryfinder', query )
156
+ res = @conn.describe_prepared( 'queryfinder' )
157
+
158
+ @conn.exec( 'SELECT format_type($1, -1)', [res.paramtype(0)] ).getvalue( 0, 0 ).
159
+ should == 'name'
160
+ @conn.exec( 'SELECT format_type($1, -1)', [res.paramtype(1)] ).getvalue( 0, 0 ).
161
+ should == 'text'
162
+ end
163
+
164
+ it "should raise an exception when a negative index is given to #fformat" do
165
+ res = @conn.exec('SELECT * FROM pg_stat_activity')
166
+ expect {
167
+ res.fformat( -1 )
168
+ }.to raise_error( ArgumentError, /column number/i )
169
+ end
170
+
171
+ it "should raise an exception when a negative index is given to #fmod" do
172
+ res = @conn.exec('SELECT * FROM pg_stat_activity')
173
+ expect {
174
+ res.fmod( -1 )
175
+ }.to raise_error( ArgumentError, /column number/i )
176
+ end
177
+
178
+ it "should raise an exception when a negative index is given to #[]" do
179
+ res = @conn.exec('SELECT * FROM pg_stat_activity')
180
+ expect {
181
+ res[ -1 ]
182
+ }.to raise_error( IndexError, /-1 is out of range/i )
183
+ end
184
+
185
+ it "should raise allow for conversion to an array of arrays" do
186
+ @conn.exec( 'CREATE TABLE valuestest ( foo varchar(33) )' )
187
+ @conn.exec( 'INSERT INTO valuestest ("foo") values (\'bar\')' )
188
+ @conn.exec( 'INSERT INTO valuestest ("foo") values (\'bar2\')' )
189
+
190
+ res = @conn.exec( 'SELECT * FROM valuestest' )
191
+ res.values.should == [ ["bar"], ["bar2"] ]
192
+ end
193
+
194
+ # PQfmod
195
+ it "can return the type modifier for a result column" do
196
+ @conn.exec( 'CREATE TABLE fmodtest ( foo varchar(33) )' )
197
+ res = @conn.exec( 'SELECT * FROM fmodtest' )
198
+ res.fmod( 0 ).should == 33 + 4 # Column length + varlena size (4)
199
+ end
200
+
201
+ it "should raise an exception when an invalid index is passed to PG::Result#fmod" do
202
+ @conn.exec( 'CREATE TABLE fmodtest ( foo varchar(33) )' )
203
+ res = @conn.exec( 'SELECT * FROM fmodtest' )
204
+ expect { res.fmod(1) }.to raise_error( ArgumentError )
205
+ end
206
+
207
+ it "should raise an exception when an invalid (negative) index is passed to PG::Result#fmod" do
208
+ @conn.exec( 'CREATE TABLE fmodtest ( foo varchar(33) )' )
209
+ res = @conn.exec( 'SELECT * FROM fmodtest' )
210
+ expect { res.fmod(-11) }.to raise_error( ArgumentError )
211
+ end
212
+
213
+ it "shouldn't raise an exception when a valid index is passed to PG::Result#fmod for a column with no typemod" do
214
+ @conn.exec( 'CREATE TABLE fmodtest ( foo text )' )
215
+ res = @conn.exec( 'SELECT * FROM fmodtest' )
216
+ res.fmod( 0 ).should == -1 # and it shouldn't raise an exception, either
217
+ end
218
+
219
+ # PQftable
220
+ it "can return the oid of the table from which a result column was fetched" do
221
+ @conn.exec( 'CREATE TABLE ftabletest ( foo text )' )
222
+ res = @conn.exec( 'SELECT * FROM ftabletest' )
223
+
224
+ res.ftable( 0 ).should == be_nonzero()
225
+ end
226
+
227
+ it "should raise an exception when an invalid index is passed to PG::Result#ftable" do
228
+ @conn.exec( 'CREATE TABLE ftabletest ( foo text )' )
229
+ res = @conn.exec( 'SELECT * FROM ftabletest' )
230
+
231
+ expect { res.ftable(18) }.to raise_error( ArgumentError )
232
+ end
233
+
234
+ it "should raise an exception when an invalid (negative) index is passed to PG::Result#ftable" do
235
+ @conn.exec( 'CREATE TABLE ftabletest ( foo text )' )
236
+ res = @conn.exec( 'SELECT * FROM ftabletest' )
237
+
238
+ expect { res.ftable(-2) }.to raise_error( ArgumentError )
239
+ end
240
+
241
+ it "shouldn't raise an exception when a valid index is passed to PG::Result#ftable for a " +
242
+ "column with no corresponding table" do
243
+ @conn.exec( 'CREATE TABLE ftabletest ( foo text )' )
244
+ res = @conn.exec( 'SELECT foo, LENGTH(foo) as length FROM ftabletest' )
245
+ res.ftable( 1 ).should == PG::INVALID_OID # and it shouldn't raise an exception, either
246
+ end
247
+
248
+ # PQftablecol
249
+ it "can return the column number (within its table) of a column in a result" do
250
+ @conn.exec( 'CREATE TABLE ftablecoltest ( foo text, bar numeric )' )
251
+ res = @conn.exec( 'SELECT * FROM ftablecoltest' )
252
+
253
+ res.ftablecol( 0 ).should == 1
254
+ res.ftablecol( 1 ).should == 2
255
+ end
256
+
257
+ it "should raise an exception when an invalid index is passed to PG::Result#ftablecol" do
258
+ @conn.exec( 'CREATE TABLE ftablecoltest ( foo text, bar numeric )' )
259
+ res = @conn.exec( 'SELECT * FROM ftablecoltest' )
260
+
261
+ expect { res.ftablecol(32) }.to raise_error( ArgumentError )
262
+ end
263
+
264
+ it "should raise an exception when an invalid (negative) index is passed to PG::Result#ftablecol" do
265
+ @conn.exec( 'CREATE TABLE ftablecoltest ( foo text, bar numeric )' )
266
+ res = @conn.exec( 'SELECT * FROM ftablecoltest' )
267
+
268
+ expect { res.ftablecol(-1) }.to raise_error( ArgumentError )
269
+ end
270
+
271
+ it "shouldn't raise an exception when a valid index is passed to PG::Result#ftablecol for a " +
272
+ "column with no corresponding table" do
273
+ @conn.exec( 'CREATE TABLE ftablecoltest ( foo text )' )
274
+ res = @conn.exec( 'SELECT foo, LENGTH(foo) as length FROM ftablecoltest' )
275
+ res.ftablecol(1).should == 0 # and it shouldn't raise an exception, either
276
+ end
277
+
278
+ it "can be manually checked for failed result status (async API)" do
279
+ @conn.send_query( "SELECT * FROM nonexistant_table" )
280
+ res = @conn.get_result
281
+ expect {
282
+ res.check
283
+ }.to raise_error( PG::Error, /relation "nonexistant_table" does not exist/ )
284
+ end
285
+
286
+ it "can return the values of a single field" do
287
+ res = @conn.exec( "SELECT 1 AS x, 'a' AS y UNION ALL SELECT 2, 'b'" )
288
+ res.field_values( 'x' ).should == ['1', '2']
289
+ res.field_values( 'y' ).should == ['a', 'b']
290
+ expect{ res.field_values( '' ) }.to raise_error(IndexError)
291
+ expect{ res.field_values( :x ) }.to raise_error(TypeError)
292
+ end
293
+
294
+ it "should raise a proper exception for a nonexistant table" do
295
+ expect {
296
+ @conn.exec( "SELECT * FROM nonexistant_table" )
297
+ }.to raise_error( PG::UndefinedTable, /relation "nonexistant_table" does not exist/ )
298
+ end
299
+
300
+ it "should raise a more generic exception for an unknown SQLSTATE" do
301
+ old_error = PG::ERROR_CLASSES.delete('42P01')
302
+ begin
303
+ expect {
304
+ @conn.exec( "SELECT * FROM nonexistant_table" )
305
+ }.to raise_error{|error|
306
+ error.should be_an_instance_of(PG::SyntaxErrorOrAccessRuleViolation)
307
+ error.to_s.should match(/relation "nonexistant_table" does not exist/)
308
+ }
309
+ ensure
310
+ PG::ERROR_CLASSES['42P01'] = old_error
311
+ end
312
+ end
313
+
314
+ it "should raise a ServerError for an unknown SQLSTATE class" do
315
+ old_error1 = PG::ERROR_CLASSES.delete('42P01')
316
+ old_error2 = PG::ERROR_CLASSES.delete('42')
317
+ begin
318
+ expect {
319
+ @conn.exec( "SELECT * FROM nonexistant_table" )
320
+ }.to raise_error{|error|
321
+ error.should be_an_instance_of(PG::ServerError)
322
+ error.to_s.should match(/relation "nonexistant_table" does not exist/)
323
+ }
324
+ ensure
325
+ PG::ERROR_CLASSES['42P01'] = old_error1
326
+ PG::ERROR_CLASSES['42'] = old_error2
327
+ end
328
+ end
329
+
330
+ it "should raise a proper exception for a nonexistant schema" do
331
+ expect {
332
+ @conn.exec( "DROP SCHEMA nonexistant_schema" )
333
+ }.to raise_error( PG::InvalidSchemaName, /schema "nonexistant_schema" does not exist/ )
334
+ end
335
+
336
+ it "the raised result should be nil in case of a connection error" do
337
+ c = PGconn.connect_start( '127.0.0.1', 54320, "", "", "me", "xxxx", "somedb" )
338
+ expect {
339
+ c.exec "select 1"
340
+ }.to raise_error{|error|
341
+ error.should be_an_instance_of(PG::UnableToSend)
342
+ error.result.should == nil
343
+ }
344
+ end
345
+ end
@@ -0,0 +1,44 @@
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
+ it "does have hierarchical error classes" do
31
+ PG::UndefinedTable.ancestors[0,4].should == [
32
+ PG::UndefinedTable,
33
+ PG::SyntaxErrorOrAccessRuleViolation,
34
+ PG::ServerError,
35
+ PG::Error]
36
+
37
+ PG::InvalidSchemaName.ancestors[0,3].should == [
38
+ PG::InvalidSchemaName,
39
+ PG::ServerError,
40
+ PG::Error]
41
+ end
42
+
43
+ end
44
+
metadata CHANGED
@@ -1,186 +1,232 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_jruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.1.rc2
4
+ version: 0.17.1
5
5
  platform: java
6
6
  authors:
7
- - Charles Nutter
8
7
  - John Shahid
9
8
  autorequire:
10
9
  bindir: bin
11
- cert_chain: []
12
- date: 2013-11-17 00:00:00.000000000 Z
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MREwDwYDVQQDDAhqdnNo
14
+ YWhpZDEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
15
+ MB4XDTE1MDIxODA0MzE1N1oXDTE2MDIxODA0MzE1N1owPzERMA8GA1UEAwwIanZz
16
+ aGFoaWQxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
17
+ bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKp9U3NeEqkS9JKCqnd3
18
+ djg+qRTG+HRjN413rLUiGBleBysdimaOmabD8onDQmIDgIw3ufYQk9m4XulA/N5y
19
+ 4LlC7aNMsI04vGWkPQGO+KnWTZl+YkeTYxYgC72/gI8LsTcIEy/vd+VV65f2jEgC
20
+ 9jFvcLWykm6TtJBxW+SZc862ZMCwYiZWVVE78EENsasXJUdleyK3hyMFIftE3IId
21
+ ves3MD/X6ApyRNKZyNRHdjaQE2hg3vtpqrN1WSuNfgxzIQz2cSfNNmzCA12gOQp1
22
+ emDLxK/2fPJIfS55coC/ogLfmdEwVtBbgs9C5/ZagjgkOjthTOz3DoiWI6aVDhqf
23
+ YdsCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFFO8
24
+ oTWH/XLOGzTn+X/ADdNr0kLhMB0GA1UdEQQWMBSBEmp2c2hhaGlkQGdtYWlsLmNv
25
+ bTAdBgNVHRIEFjAUgRJqdnNoYWhpZEBnbWFpbC5jb20wDQYJKoZIhvcNAQEFBQAD
26
+ ggEBAGHsstPfe5yMSpYtPQRoQ/i30d59cH8tNFkLjMxiZrpSro4OslO9q8ZC63L9
27
+ 7wpZDHYvrSCTjYBwo2kKgbHOEP0+jkz69X9WxEfLeUqdiFbgRv7WptzMRf7GizpV
28
+ 2z0qxtY4YlpNrSm4V4v6GaE5NQ8DuBP6Hg3yFJl2dKnzEZHZG9B4gQCntiNAlieY
29
+ 5OYqqXi6D6L46GGcTmieG0xln0ApG6UewJ7VWub+1dvuyoNAS2sdFinGvekivSXe
30
+ BtwvpQUP6ZxizBsRRliNP4kzx6Oz7mJFcrZoBdZpRUx+lld6H4Yzp1n0OWQHN4z/
31
+ ylD2EYTVPFxjZ3GYthhV27zUL2w=
32
+ -----END CERTIFICATE-----
33
+ date: 2015-07-22 00:00:00.000000000 Z
13
34
  dependencies:
14
35
  - !ruby/object:Gem::Dependency
15
- name: rdoc
36
+ name: hoe-mercurial
16
37
  version_requirements: !ruby/object:Gem::Requirement
17
38
  requirements:
18
39
  - - ~>
19
40
  - !ruby/object:Gem::Version
20
- version: '3.10'
41
+ version: 1.4.0
21
42
  requirement: !ruby/object:Gem::Requirement
22
43
  requirements:
23
44
  - - ~>
24
45
  - !ruby/object:Gem::Version
25
- version: '3.10'
46
+ version: 1.4.0
26
47
  prerelease: false
27
48
  type: :development
28
49
  - !ruby/object:Gem::Dependency
29
- name: hoe-bundler
50
+ name: hoe-highline
30
51
  version_requirements: !ruby/object:Gem::Requirement
31
52
  requirements:
32
- - - '>='
53
+ - - ~>
33
54
  - !ruby/object:Gem::Version
34
- version: '1.1'
55
+ version: 0.1.0
35
56
  requirement: !ruby/object:Gem::Requirement
36
57
  requirements:
37
- - - '>='
58
+ - - ~>
38
59
  - !ruby/object:Gem::Version
39
- version: '1.1'
60
+ version: 0.1.0
40
61
  prerelease: false
41
62
  type: :development
42
63
  - !ruby/object:Gem::Dependency
43
- name: hoe-gemspec
64
+ name: rdoc
44
65
  version_requirements: !ruby/object:Gem::Requirement
45
66
  requirements:
46
- - - '>='
67
+ - - ~>
47
68
  - !ruby/object:Gem::Version
48
- version: '1.0'
69
+ version: '4.0'
49
70
  requirement: !ruby/object:Gem::Requirement
50
71
  requirements:
51
- - - '>='
72
+ - - ~>
52
73
  - !ruby/object:Gem::Version
53
- version: '1.0'
74
+ version: '4.0'
54
75
  prerelease: false
55
76
  type: :development
56
77
  - !ruby/object:Gem::Dependency
57
- name: rake
78
+ name: rake-compiler
58
79
  version_requirements: !ruby/object:Gem::Requirement
59
80
  requirements:
60
- - - '>='
81
+ - - ~>
61
82
  - !ruby/object:Gem::Version
62
83
  version: '0.9'
63
84
  requirement: !ruby/object:Gem::Requirement
64
85
  requirements:
65
- - - '>='
86
+ - - ~>
66
87
  - !ruby/object:Gem::Version
67
88
  version: '0.9'
68
89
  prerelease: false
69
90
  type: :development
70
91
  - !ruby/object:Gem::Dependency
71
- name: rake-compiler
72
- version_requirements: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - '='
75
- - !ruby/object:Gem::Version
76
- version: 0.8.0
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - '='
80
- - !ruby/object:Gem::Version
81
- version: 0.8.0
82
- prerelease: false
83
- type: :development
84
- - !ruby/object:Gem::Dependency
85
- name: git
86
- version_requirements: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - '>='
89
- - !ruby/object:Gem::Version
90
- version: '0'
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - '>='
94
- - !ruby/object:Gem::Version
95
- version: '0'
96
- prerelease: false
97
- type: :development
98
- - !ruby/object:Gem::Dependency
99
- name: logger
92
+ name: hoe
100
93
  version_requirements: !ruby/object:Gem::Requirement
101
94
  requirements:
102
- - - '>='
95
+ - - ~>
103
96
  - !ruby/object:Gem::Version
104
- version: '0'
97
+ version: 3.5.1
105
98
  requirement: !ruby/object:Gem::Requirement
106
99
  requirements:
107
- - - '>='
100
+ - - ~>
108
101
  - !ruby/object:Gem::Version
109
- version: '0'
102
+ version: 3.5.1
110
103
  prerelease: false
111
104
  type: :development
112
105
  - !ruby/object:Gem::Dependency
113
- name: rspec
106
+ name: hoe-deveiate
114
107
  version_requirements: !ruby/object:Gem::Requirement
115
108
  requirements:
116
- - - '>='
109
+ - - ~>
117
110
  - !ruby/object:Gem::Version
118
- version: '0'
111
+ version: '0.2'
119
112
  requirement: !ruby/object:Gem::Requirement
120
113
  requirements:
121
- - - '>='
114
+ - - ~>
122
115
  - !ruby/object:Gem::Version
123
- version: '0'
116
+ version: '0.2'
124
117
  prerelease: false
125
118
  type: :development
126
119
  - !ruby/object:Gem::Dependency
127
- name: hoe
120
+ name: hoe-bundler
128
121
  version_requirements: !ruby/object:Gem::Requirement
129
122
  requirements:
130
123
  - - ~>
131
124
  - !ruby/object:Gem::Version
132
- version: '3.1'
125
+ version: '1.0'
133
126
  requirement: !ruby/object:Gem::Requirement
134
127
  requirements:
135
128
  - - ~>
136
129
  - !ruby/object:Gem::Version
137
- version: '3.1'
130
+ version: '1.0'
138
131
  prerelease: false
139
132
  type: :development
140
133
  description: |-
141
- This is a native implementation of the Postsgres protocol written
142
- entirely in Java. The project was started by @headius as a ruby-pg
143
- replacement for JRuby that uses the JDBC driver and private API of
144
- Postgres. Unfortunately ruby-pg (which uses libpq under the hood)
145
- exposed a lot of features of Postgres that were impossible to
146
- implement or were complicated given the nature of the JDBC and the
147
- encapsulation of many features that are exposed in ruby-pg.
134
+ This file needs a translation of the English README. Pull requests, patches, or
135
+ volunteers gladly accepted.
148
136
 
149
- *WARNING* this gem is not production ready yet. There are many
150
- bugs that needs to be fixed and more testing. So please checkout
151
- the code and submit pull requests with some fixes. If your Java-Fu
152
- isn't that great you can still contribute by submitting test cases
153
- and We'll be happy to fix them.
137
+ Until such time, please accept my sincere apologies for not knowing Japanese.
154
138
  email:
155
- - headius@headius.com
156
139
  - jvshahid@gmail.com
157
- executables:
158
- - pg
140
+ executables: []
159
141
  extensions: []
160
142
  extra_rdoc_files:
161
- - CHANGELOG.rdoc
143
+ - Contributors.rdoc
144
+ - History.rdoc
162
145
  - Manifest.txt
146
+ - README-OS_X.rdoc
147
+ - README-Windows.rdoc
148
+ - README.ja.rdoc
163
149
  - README.rdoc
150
+ - ext/errorcodes.txt
151
+ - POSTGRES
152
+ - LICENSE
153
+ - ext/gvl_wrappers.c
154
+ - ext/pg.c
155
+ - ext/pg_connection.c
156
+ - ext/pg_errors.c
157
+ - ext/pg_result.c
164
158
  files:
165
- - CHANGELOG.rdoc
159
+ - .gemtest
160
+ - BSDL
161
+ - ChangeLog
162
+ - Contributors.rdoc
163
+ - History.rdoc
164
+ - LICENSE
166
165
  - Manifest.txt
166
+ - POSTGRES
167
+ - README-OS_X.rdoc
168
+ - README-Windows.rdoc
169
+ - README.ja.rdoc
167
170
  - README.rdoc
168
171
  - Rakefile
169
- - bin/pg
172
+ - Rakefile.cross
173
+ - ext/errorcodes.def
174
+ - ext/errorcodes.rb
175
+ - ext/errorcodes.txt
176
+ - ext/extconf.rb
177
+ - ext/gvl_wrappers.c
178
+ - ext/gvl_wrappers.h
179
+ - ext/pg.c
180
+ - ext/pg.h
181
+ - ext/pg_connection.c
182
+ - ext/pg_errors.c
183
+ - ext/pg_result.c
184
+ - ext/vc/pg.sln
185
+ - ext/vc/pg_18/pg.vcproj
186
+ - ext/vc/pg_19/pg_19.vcproj
170
187
  - lib/pg.rb
171
- - lib/pg/result.rb
172
- - lib/pg/constants.rb
173
188
  - lib/pg/connection.rb
189
+ - lib/pg/constants.rb
174
190
  - lib/pg/exceptions.rb
191
+ - lib/pg/result.rb
175
192
  - lib/pg_ext.jar
176
- - .gemtest
177
- homepage: https://github.com/headius/jruby-pg
193
+ - sample/array_insert.rb
194
+ - sample/async_api.rb
195
+ - sample/async_copyto.rb
196
+ - sample/async_mixed.rb
197
+ - sample/check_conn.rb
198
+ - sample/copyfrom.rb
199
+ - sample/copyto.rb
200
+ - sample/cursor.rb
201
+ - sample/disk_usage_report.rb
202
+ - sample/issue-119.rb
203
+ - sample/losample.rb
204
+ - sample/minimal-testcase.rb
205
+ - sample/notify_wait.rb
206
+ - sample/pg_statistics.rb
207
+ - sample/replication_monitor.rb
208
+ - sample/test_binary_values.rb
209
+ - sample/wal_shipper.rb
210
+ - sample/warehouse_partitions.rb
211
+ - spec/data/expected_trace.out
212
+ - spec/data/random_binary_data
213
+ - spec/lib/helpers.rb
214
+ - spec/pg/connection_spec.rb
215
+ - spec/pg/result_spec.rb
216
+ - spec/pg_spec.rb
217
+ homepage: https://bitbucket.org/ged/ruby-pg
178
218
  licenses:
179
- - MIT
219
+ - BSD
220
+ - Ruby
221
+ - GPL
180
222
  metadata: {}
181
223
  post_install_message:
182
224
  rdoc_options:
183
- - --main
225
+ - -f
226
+ - fivefish
227
+ - -t
228
+ - 'pg: The Ruby Interface to PostgreSQL'
229
+ - -m
184
230
  - README.rdoc
185
231
  require_paths:
186
232
  - lib
@@ -188,16 +234,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
188
234
  requirements:
189
235
  - - '>='
190
236
  - !ruby/object:Gem::Version
191
- version: '0'
237
+ version: 1.8.7
192
238
  required_rubygems_version: !ruby/object:Gem::Requirement
193
239
  requirements:
194
- - - '>'
240
+ - - '>='
195
241
  - !ruby/object:Gem::Version
196
- version: 1.3.1
242
+ version: '0'
197
243
  requirements: []
198
244
  rubyforge_project: pg_jruby
199
- rubygems_version: 2.1.9
245
+ rubygems_version: 2.4.5
200
246
  signing_key:
201
247
  specification_version: 4
202
- summary: This is a native implementation of the Postsgres protocol written entirely in Java
248
+ summary: This file needs a translation of the English README
203
249
  test_files: []