pg 0.15.1-x86-mingw32 → 0.16.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
@@ -73,15 +73,30 @@ describe PG::Result do
73
73
  should == 'relation "nonexistant_table" does not exist'
74
74
  result.error_field( PG::PG_DIAG_MESSAGE_DETAIL ).should be_nil()
75
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
76
+ result.error_field( PG::PG_DIAG_STATEMENT_POSITION ).should == '15'
78
77
  result.error_field( PG::PG_DIAG_INTERNAL_POSITION ).should be_nil()
79
78
  result.error_field( PG::PG_DIAG_INTERNAL_QUERY ).should be_nil()
80
79
  result.error_field( PG::PG_DIAG_CONTEXT ).should be_nil()
81
80
  result.error_field( PG::PG_DIAG_SOURCE_FILE ).should =~ /parse_relation\.c$|namespace\.c$/
82
81
  result.error_field( PG::PG_DIAG_SOURCE_LINE ).should =~ /^\d+$/
83
82
  result.error_field( PG::PG_DIAG_SOURCE_FUNCTION ).should =~ /^parserOpenTable$|^RangeVarGetRelid$/
83
+ end
84
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
85
100
  end
86
101
 
87
102
  it "should detect division by zero as SQLSTATE 22012" do
@@ -275,4 +290,56 @@ describe PG::Result do
275
290
  expect{ res.field_values( '' ) }.to raise_error(IndexError)
276
291
  expect{ res.field_values( :x ) }.to raise_error(TypeError)
277
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
278
345
  end
data/spec/pg_spec.rb CHANGED
@@ -27,5 +27,18 @@ describe PG do
27
27
  PG.should be_threadsafe()
28
28
  end
29
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
+
30
43
  end
31
44
 
metadata CHANGED
@@ -1,13 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg
3
3
  version: !ruby/object:Gem::Version
4
- hash: 33
5
- prerelease:
6
- segments:
7
- - 0
8
- - 15
9
- - 1
10
- version: 0.15.1
4
+ version: 0.16.0
11
5
  platform: x86-mingw32
12
6
  authors:
13
7
  - Michael Granger
@@ -36,21 +30,15 @@ cert_chain:
36
30
  mMFp4kPUHbWOqCp2mz9gCA==
37
31
  -----END CERTIFICATE-----
38
32
 
39
- date: 2013-04-08 00:00:00 Z
33
+ date: 2013-07-23 00:00:00 Z
40
34
  dependencies:
41
35
  - !ruby/object:Gem::Dependency
42
36
  name: hoe-mercurial
43
37
  prerelease: false
44
38
  requirement: &id001 !ruby/object:Gem::Requirement
45
- none: false
46
39
  requirements:
47
40
  - - ~>
48
41
  - !ruby/object:Gem::Version
49
- hash: 7
50
- segments:
51
- - 1
52
- - 4
53
- - 0
54
42
  version: 1.4.0
55
43
  type: :development
56
44
  version_requirements: *id001
@@ -58,15 +46,9 @@ dependencies:
58
46
  name: hoe-highline
59
47
  prerelease: false
60
48
  requirement: &id002 !ruby/object:Gem::Requirement
61
- none: false
62
49
  requirements:
63
50
  - - ~>
64
51
  - !ruby/object:Gem::Version
65
- hash: 27
66
- segments:
67
- - 0
68
- - 1
69
- - 0
70
52
  version: 0.1.0
71
53
  type: :development
72
54
  version_requirements: *id002
@@ -74,29 +56,19 @@ dependencies:
74
56
  name: rdoc
75
57
  prerelease: false
76
58
  requirement: &id003 !ruby/object:Gem::Requirement
77
- none: false
78
59
  requirements:
79
60
  - - ~>
80
61
  - !ruby/object:Gem::Version
81
- hash: 19
82
- segments:
83
- - 3
84
- - 10
85
- version: "3.10"
62
+ version: "4.0"
86
63
  type: :development
87
64
  version_requirements: *id003
88
65
  - !ruby/object:Gem::Dependency
89
66
  name: rake-compiler
90
67
  prerelease: false
91
68
  requirement: &id004 !ruby/object:Gem::Requirement
92
- none: false
93
69
  requirements:
94
70
  - - ~>
95
71
  - !ruby/object:Gem::Version
96
- hash: 27
97
- segments:
98
- - 0
99
- - 8
100
72
  version: "0.8"
101
73
  type: :development
102
74
  version_requirements: *id004
@@ -104,14 +76,9 @@ dependencies:
104
76
  name: hoe-deveiate
105
77
  prerelease: false
106
78
  requirement: &id005 !ruby/object:Gem::Requirement
107
- none: false
108
79
  requirements:
109
80
  - - ~>
110
81
  - !ruby/object:Gem::Version
111
- hash: 15
112
- segments:
113
- - 0
114
- - 2
115
82
  version: "0.2"
116
83
  type: :development
117
84
  version_requirements: *id005
@@ -119,15 +86,10 @@ dependencies:
119
86
  name: hoe
120
87
  prerelease: false
121
88
  requirement: &id006 !ruby/object:Gem::Requirement
122
- none: false
123
89
  requirements:
124
90
  - - ~>
125
91
  - !ruby/object:Gem::Version
126
- hash: 7
127
- segments:
128
- - 3
129
- - 0
130
- version: "3.0"
92
+ version: "3.6"
131
93
  type: :development
132
94
  version_requirements: *id006
133
95
  description: |-
@@ -164,11 +126,13 @@ extra_rdoc_files:
164
126
  - README-Windows.rdoc
165
127
  - README.ja.rdoc
166
128
  - README.rdoc
129
+ - ext/errorcodes.txt
167
130
  - POSTGRES
168
131
  - LICENSE
169
- - ext/pg_connection.c
170
- - ext/pg.c
171
132
  - ext/gvl_wrappers.c
133
+ - ext/pg.c
134
+ - ext/pg_connection.c
135
+ - ext/pg_errors.c
172
136
  - ext/pg_result.c
173
137
  files:
174
138
  - .gemtest
@@ -185,12 +149,16 @@ files:
185
149
  - README.rdoc
186
150
  - Rakefile
187
151
  - Rakefile.cross
152
+ - ext/errorcodes.def
153
+ - ext/errorcodes.rb
154
+ - ext/errorcodes.txt
188
155
  - ext/extconf.rb
189
156
  - ext/gvl_wrappers.c
190
157
  - ext/gvl_wrappers.h
191
158
  - ext/pg.c
192
159
  - ext/pg.h
193
160
  - ext/pg_connection.c
161
+ - ext/pg_errors.c
194
162
  - ext/pg_result.c
195
163
  - ext/vc/pg.sln
196
164
  - ext/vc/pg_18/pg.vcproj
@@ -232,6 +200,8 @@ licenses:
232
200
  - BSD
233
201
  - Ruby
234
202
  - GPL
203
+ metadata: {}
204
+
235
205
  post_install_message:
236
206
  rdoc_options:
237
207
  - -f
@@ -243,31 +213,21 @@ rdoc_options:
243
213
  require_paths:
244
214
  - lib
245
215
  required_ruby_version: !ruby/object:Gem::Requirement
246
- none: false
247
216
  requirements:
248
217
  - - ">="
249
218
  - !ruby/object:Gem::Version
250
- hash: 57
251
- segments:
252
- - 1
253
- - 8
254
- - 7
255
219
  version: 1.8.7
256
220
  required_rubygems_version: !ruby/object:Gem::Requirement
257
- none: false
258
221
  requirements:
259
222
  - - ">="
260
223
  - !ruby/object:Gem::Version
261
- hash: 3
262
- segments:
263
- - 0
264
224
  version: "0"
265
225
  requirements: []
266
226
 
267
227
  rubyforge_project: pg
268
- rubygems_version: 1.8.17
228
+ rubygems_version: 2.0.3
269
229
  signing_key:
270
- specification_version: 3
230
+ specification_version: 4
271
231
  summary: Pg is the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/]
272
232
  test_files: []
273
233
 
metadata.gz.sig CHANGED
Binary file