pg 0.15.1 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,31 @@
1
- == v0.15.1 [YYYY-MM-DD] Michael Granger <ged@FaerieMUD.org>
1
+ == v0.16.0 [2013-07-22] Michael Granger <ged@FaerieMUD.org>
2
+
3
+ Bugfixes:
4
+
5
+ - Avoid warnings about uninitialized instance variables.
6
+ - Use a more standard method of adding library and include directories.
7
+ This fixes build on AIX (Github #7) and Solaris (#164).
8
+ - Cancel the running query, if a thread is about to be killed (e.g. by CTRL-C).
9
+ - Fix GVL issue with wait_for_notify/notifies and notice callbacks.
10
+ - Set proper encoding on the string returned by quote_ident, escape_literal
11
+ and escape_identifier (#163).
12
+ - Use nil as PG::Error#result in case of a NULL-result from libpq (#166).
13
+ - Recalculate the timeout of conn#wait_for_notify and conn#block in case
14
+ of socket events that require re-runs of select().
15
+
16
+ Documentation fixes:
17
+
18
+ - Fix non working example for PGresult#error_field.
19
+
20
+ Enhancements:
21
+
22
+ - Add unique exception classes for each PostgreSQL error type (#5).
23
+ - Return result of the block in conn#transaction instead of nil (#158).
24
+ - Allow 'rake compile' and 'rake gem' on non mercurial repos.
25
+ - Add support for PG_DIAG_*_NAME error fields of PostgreSQL-9.3 (#161).
26
+
27
+
28
+ == v0.15.1 [2013-04-08] Michael Granger <ged@FaerieMUD.org>
2
29
 
3
30
  Bugfixes:
4
31
 
@@ -156,11 +183,11 @@ Bugfixes:
156
183
  * accept a nil argument for no timeout (Sequel support)
157
184
  * Fixed API docs
158
185
  * Taint and encode event name and payload
159
- - Handle errors while rb_thread_select()ing in PGconn#block.
186
+ - Handle errors while rb_thread_select()ing in PGconn#block.
160
187
  (Brian Weaver).
161
188
  - Fixes for Win32 async queries (Rafał Bigaj)
162
189
  - Memory leak fixed: Closing opened WSA event. (rafal)
163
- - Fixes for #66 Win32 asynchronous queries hang on connection
190
+ - Fixes for #66 Win32 asynchronous queries hang on connection
164
191
  error. (rafal)
165
192
  - Fixed a typo in PGconn#error_message's documentation
166
193
  - fixing unused variable warnings for ruby 1.9.3 (Aaron Patterson)
@@ -173,7 +200,7 @@ Bugfixes:
173
200
 
174
201
  Enhancements:
175
202
 
176
- * Added a PGresult#values method to fetch all result rows as an Array of
203
+ * Added a PGresult#values method to fetch all result rows as an Array of
177
204
  Arrays. Thanks to Jason Yanowitz (JYanowitz at enovafinancial dot com) for
178
205
  the patch.
179
206
 
@@ -12,12 +12,16 @@ README.ja.rdoc
12
12
  README.rdoc
13
13
  Rakefile
14
14
  Rakefile.cross
15
+ ext/errorcodes.def
16
+ ext/errorcodes.rb
17
+ ext/errorcodes.txt
15
18
  ext/extconf.rb
16
19
  ext/gvl_wrappers.c
17
20
  ext/gvl_wrappers.h
18
21
  ext/pg.c
19
22
  ext/pg.h
20
23
  ext/pg_connection.c
24
+ ext/pg_errors.c
21
25
  ext/pg_result.c
22
26
  ext/vc/pg.sln
23
27
  ext/vc/pg_18/pg.vcproj
data/Rakefile CHANGED
@@ -129,17 +129,21 @@ end
129
129
 
130
130
  # Make the ChangeLog update if the repo has changed since it was last built
131
131
  file '.hg/branch' do
132
- abort "You need the Mercurial repo to make packages"
132
+ warn "WARNING: You need the Mercurial repo to update the ChangeLog"
133
133
  end
134
- file 'ChangeLog' => '.hg/branch' do |task|
135
- $stderr.puts "Updating the changelog..."
136
- begin
137
- content = make_changelog()
138
- rescue NameError
139
- abort "Packaging tasks require the hoe-mercurial plugin (gem install hoe-mercurial)"
140
- end
141
- File.open( task.name, 'w', 0644 ) do |fh|
142
- fh.print( content )
134
+ file 'ChangeLog' do |task|
135
+ if File.exist?('.hg/branch')
136
+ $stderr.puts "Updating the changelog..."
137
+ begin
138
+ content = make_changelog()
139
+ rescue NameError
140
+ abort "Packaging tasks require the hoe-mercurial plugin (gem install hoe-mercurial)"
141
+ end
142
+ File.open( task.name, 'w', 0644 ) do |fh|
143
+ fh.print( content )
144
+ end
145
+ else
146
+ touch 'ChangeLog'
143
147
  end
144
148
  end
145
149
 
@@ -154,3 +158,19 @@ task :cleanup_testing_dbs do
154
158
  Rake::Task[:clean].invoke
155
159
  end
156
160
 
161
+ desc "Update list of server error codes"
162
+ task :update_error_codes do
163
+ URL_ERRORCODES_TXT = "http://git.postgresql.org/gitweb/?p=postgresql.git;a=blob_plain;f=src/backend/utils/errcodes.txt;hb=HEAD"
164
+
165
+ ERRORCODES_TXT = "ext/errorcodes.txt"
166
+ sh "wget #{URL_ERRORCODES_TXT.inspect} -O #{ERRORCODES_TXT.inspect} || curl #{URL_ERRORCODES_TXT.inspect} -o #{ERRORCODES_TXT.inspect}"
167
+ end
168
+
169
+ file 'ext/errorcodes.def' => ['ext/errorcodes.rb', 'ext/errorcodes.txt'] do
170
+ ruby 'ext/errorcodes.rb', 'ext/errorcodes.txt', 'ext/errorcodes.def'
171
+ end
172
+
173
+ file 'ext/pg_errors.c' => ['ext/errorcodes.def'] do
174
+ # trigger compilation of changed errorcodes.def
175
+ touch 'ext/pg_errors.c'
176
+ end
@@ -0,0 +1,931 @@
1
+ /*
2
+ * ext/errorcodes.def - Definition of error classes.
3
+ *
4
+ * WARNING: This file is autogenerated. Please edit ext/errorcodes.rb !
5
+ *
6
+ */
7
+
8
+
9
+ {
10
+ VALUE klass = define_error_class( "SqlStatementNotYetComplete", NULL );
11
+ register_error_class( "03000", klass );
12
+ register_error_class( "03", klass );
13
+ }
14
+ {
15
+ VALUE klass = define_error_class( "ConnectionException", NULL );
16
+ register_error_class( "08000", klass );
17
+ register_error_class( "08", klass );
18
+ }
19
+ {
20
+ VALUE klass = define_error_class( "ConnectionDoesNotExist", "08" );
21
+ register_error_class( "08003", klass );
22
+ }
23
+ {
24
+ VALUE klass = define_error_class( "ConnectionFailure", "08" );
25
+ register_error_class( "08006", klass );
26
+ }
27
+ {
28
+ VALUE klass = define_error_class( "SqlclientUnableToEstablishSqlconnection", "08" );
29
+ register_error_class( "08001", klass );
30
+ }
31
+ {
32
+ VALUE klass = define_error_class( "SqlserverRejectedEstablishmentOfSqlconnection", "08" );
33
+ register_error_class( "08004", klass );
34
+ }
35
+ {
36
+ VALUE klass = define_error_class( "TransactionResolutionUnknown", "08" );
37
+ register_error_class( "08007", klass );
38
+ }
39
+ {
40
+ VALUE klass = define_error_class( "ProtocolViolation", "08" );
41
+ register_error_class( "08P01", klass );
42
+ }
43
+ {
44
+ VALUE klass = define_error_class( "TriggeredActionException", NULL );
45
+ register_error_class( "09000", klass );
46
+ register_error_class( "09", klass );
47
+ }
48
+ {
49
+ VALUE klass = define_error_class( "FeatureNotSupported", NULL );
50
+ register_error_class( "0A000", klass );
51
+ register_error_class( "0A", klass );
52
+ }
53
+ {
54
+ VALUE klass = define_error_class( "InvalidTransactionInitiation", NULL );
55
+ register_error_class( "0B000", klass );
56
+ register_error_class( "0B", klass );
57
+ }
58
+ {
59
+ VALUE klass = define_error_class( "LocatorException", NULL );
60
+ register_error_class( "0F000", klass );
61
+ register_error_class( "0F", klass );
62
+ }
63
+ {
64
+ VALUE klass = define_error_class( "LEInvalidSpecification", "0F" );
65
+ register_error_class( "0F001", klass );
66
+ }
67
+ {
68
+ VALUE klass = define_error_class( "InvalidGrantor", NULL );
69
+ register_error_class( "0L000", klass );
70
+ register_error_class( "0L", klass );
71
+ }
72
+ {
73
+ VALUE klass = define_error_class( "InvalidGrantOperation", "0L" );
74
+ register_error_class( "0LP01", klass );
75
+ }
76
+ {
77
+ VALUE klass = define_error_class( "InvalidRoleSpecification", NULL );
78
+ register_error_class( "0P000", klass );
79
+ register_error_class( "0P", klass );
80
+ }
81
+ {
82
+ VALUE klass = define_error_class( "DiagnosticsException", NULL );
83
+ register_error_class( "0Z000", klass );
84
+ register_error_class( "0Z", klass );
85
+ }
86
+ {
87
+ VALUE klass = define_error_class( "StackedDiagnosticsAccessedWithoutActiveHandler", "0Z" );
88
+ register_error_class( "0Z002", klass );
89
+ }
90
+ {
91
+ VALUE klass = define_error_class( "CaseNotFound", NULL );
92
+ register_error_class( "20000", klass );
93
+ register_error_class( "20", klass );
94
+ }
95
+ {
96
+ VALUE klass = define_error_class( "CardinalityViolation", NULL );
97
+ register_error_class( "21000", klass );
98
+ register_error_class( "21", klass );
99
+ }
100
+ {
101
+ VALUE klass = define_error_class( "DataException", NULL );
102
+ register_error_class( "22000", klass );
103
+ register_error_class( "22", klass );
104
+ }
105
+ {
106
+ VALUE klass = define_error_class( "ArraySubscriptError", "22" );
107
+ register_error_class( "2202E", klass );
108
+ }
109
+ {
110
+ VALUE klass = define_error_class( "CharacterNotInRepertoire", "22" );
111
+ register_error_class( "22021", klass );
112
+ }
113
+ {
114
+ VALUE klass = define_error_class( "DatetimeFieldOverflow", "22" );
115
+ register_error_class( "22008", klass );
116
+ }
117
+ {
118
+ VALUE klass = define_error_class( "DivisionByZero", "22" );
119
+ register_error_class( "22012", klass );
120
+ }
121
+ {
122
+ VALUE klass = define_error_class( "ErrorInAssignment", "22" );
123
+ register_error_class( "22005", klass );
124
+ }
125
+ {
126
+ VALUE klass = define_error_class( "EscapeCharacterConflict", "22" );
127
+ register_error_class( "2200B", klass );
128
+ }
129
+ {
130
+ VALUE klass = define_error_class( "IndicatorOverflow", "22" );
131
+ register_error_class( "22022", klass );
132
+ }
133
+ {
134
+ VALUE klass = define_error_class( "IntervalFieldOverflow", "22" );
135
+ register_error_class( "22015", klass );
136
+ }
137
+ {
138
+ VALUE klass = define_error_class( "InvalidArgumentForLog", "22" );
139
+ register_error_class( "2201E", klass );
140
+ }
141
+ {
142
+ VALUE klass = define_error_class( "InvalidArgumentForNtile", "22" );
143
+ register_error_class( "22014", klass );
144
+ }
145
+ {
146
+ VALUE klass = define_error_class( "InvalidArgumentForNthValue", "22" );
147
+ register_error_class( "22016", klass );
148
+ }
149
+ {
150
+ VALUE klass = define_error_class( "InvalidArgumentForPowerFunction", "22" );
151
+ register_error_class( "2201F", klass );
152
+ }
153
+ {
154
+ VALUE klass = define_error_class( "InvalidArgumentForWidthBucketFunction", "22" );
155
+ register_error_class( "2201G", klass );
156
+ }
157
+ {
158
+ VALUE klass = define_error_class( "InvalidCharacterValueForCast", "22" );
159
+ register_error_class( "22018", klass );
160
+ }
161
+ {
162
+ VALUE klass = define_error_class( "InvalidDatetimeFormat", "22" );
163
+ register_error_class( "22007", klass );
164
+ }
165
+ {
166
+ VALUE klass = define_error_class( "InvalidEscapeCharacter", "22" );
167
+ register_error_class( "22019", klass );
168
+ }
169
+ {
170
+ VALUE klass = define_error_class( "InvalidEscapeOctet", "22" );
171
+ register_error_class( "2200D", klass );
172
+ }
173
+ {
174
+ VALUE klass = define_error_class( "InvalidEscapeSequence", "22" );
175
+ register_error_class( "22025", klass );
176
+ }
177
+ {
178
+ VALUE klass = define_error_class( "NonstandardUseOfEscapeCharacter", "22" );
179
+ register_error_class( "22P06", klass );
180
+ }
181
+ {
182
+ VALUE klass = define_error_class( "InvalidIndicatorParameterValue", "22" );
183
+ register_error_class( "22010", klass );
184
+ }
185
+ {
186
+ VALUE klass = define_error_class( "InvalidParameterValue", "22" );
187
+ register_error_class( "22023", klass );
188
+ }
189
+ {
190
+ VALUE klass = define_error_class( "InvalidRegularExpression", "22" );
191
+ register_error_class( "2201B", klass );
192
+ }
193
+ {
194
+ VALUE klass = define_error_class( "InvalidRowCountInLimitClause", "22" );
195
+ register_error_class( "2201W", klass );
196
+ }
197
+ {
198
+ VALUE klass = define_error_class( "InvalidRowCountInResultOffsetClause", "22" );
199
+ register_error_class( "2201X", klass );
200
+ }
201
+ {
202
+ VALUE klass = define_error_class( "InvalidTimeZoneDisplacementValue", "22" );
203
+ register_error_class( "22009", klass );
204
+ }
205
+ {
206
+ VALUE klass = define_error_class( "InvalidUseOfEscapeCharacter", "22" );
207
+ register_error_class( "2200C", klass );
208
+ }
209
+ {
210
+ VALUE klass = define_error_class( "MostSpecificTypeMismatch", "22" );
211
+ register_error_class( "2200G", klass );
212
+ }
213
+ {
214
+ VALUE klass = define_error_class( "NullValueNotAllowed", "22" );
215
+ register_error_class( "22004", klass );
216
+ }
217
+ {
218
+ VALUE klass = define_error_class( "NullValueNoIndicatorParameter", "22" );
219
+ register_error_class( "22002", klass );
220
+ }
221
+ {
222
+ VALUE klass = define_error_class( "NumericValueOutOfRange", "22" );
223
+ register_error_class( "22003", klass );
224
+ }
225
+ {
226
+ VALUE klass = define_error_class( "StringDataLengthMismatch", "22" );
227
+ register_error_class( "22026", klass );
228
+ }
229
+ {
230
+ VALUE klass = define_error_class( "StringDataRightTruncation", "22" );
231
+ register_error_class( "22001", klass );
232
+ }
233
+ {
234
+ VALUE klass = define_error_class( "SubstringError", "22" );
235
+ register_error_class( "22011", klass );
236
+ }
237
+ {
238
+ VALUE klass = define_error_class( "TrimError", "22" );
239
+ register_error_class( "22027", klass );
240
+ }
241
+ {
242
+ VALUE klass = define_error_class( "UnterminatedCString", "22" );
243
+ register_error_class( "22024", klass );
244
+ }
245
+ {
246
+ VALUE klass = define_error_class( "ZeroLengthCharacterString", "22" );
247
+ register_error_class( "2200F", klass );
248
+ }
249
+ {
250
+ VALUE klass = define_error_class( "FloatingPointException", "22" );
251
+ register_error_class( "22P01", klass );
252
+ }
253
+ {
254
+ VALUE klass = define_error_class( "InvalidTextRepresentation", "22" );
255
+ register_error_class( "22P02", klass );
256
+ }
257
+ {
258
+ VALUE klass = define_error_class( "InvalidBinaryRepresentation", "22" );
259
+ register_error_class( "22P03", klass );
260
+ }
261
+ {
262
+ VALUE klass = define_error_class( "BadCopyFileFormat", "22" );
263
+ register_error_class( "22P04", klass );
264
+ }
265
+ {
266
+ VALUE klass = define_error_class( "UntranslatableCharacter", "22" );
267
+ register_error_class( "22P05", klass );
268
+ }
269
+ {
270
+ VALUE klass = define_error_class( "NotAnXmlDocument", "22" );
271
+ register_error_class( "2200L", klass );
272
+ }
273
+ {
274
+ VALUE klass = define_error_class( "InvalidXmlDocument", "22" );
275
+ register_error_class( "2200M", klass );
276
+ }
277
+ {
278
+ VALUE klass = define_error_class( "InvalidXmlContent", "22" );
279
+ register_error_class( "2200N", klass );
280
+ }
281
+ {
282
+ VALUE klass = define_error_class( "InvalidXmlComment", "22" );
283
+ register_error_class( "2200S", klass );
284
+ }
285
+ {
286
+ VALUE klass = define_error_class( "InvalidXmlProcessingInstruction", "22" );
287
+ register_error_class( "2200T", klass );
288
+ }
289
+ {
290
+ VALUE klass = define_error_class( "IntegrityConstraintViolation", NULL );
291
+ register_error_class( "23000", klass );
292
+ register_error_class( "23", klass );
293
+ }
294
+ {
295
+ VALUE klass = define_error_class( "RestrictViolation", "23" );
296
+ register_error_class( "23001", klass );
297
+ }
298
+ {
299
+ VALUE klass = define_error_class( "NotNullViolation", "23" );
300
+ register_error_class( "23502", klass );
301
+ }
302
+ {
303
+ VALUE klass = define_error_class( "ForeignKeyViolation", "23" );
304
+ register_error_class( "23503", klass );
305
+ }
306
+ {
307
+ VALUE klass = define_error_class( "UniqueViolation", "23" );
308
+ register_error_class( "23505", klass );
309
+ }
310
+ {
311
+ VALUE klass = define_error_class( "CheckViolation", "23" );
312
+ register_error_class( "23514", klass );
313
+ }
314
+ {
315
+ VALUE klass = define_error_class( "ExclusionViolation", "23" );
316
+ register_error_class( "23P01", klass );
317
+ }
318
+ {
319
+ VALUE klass = define_error_class( "InvalidCursorState", NULL );
320
+ register_error_class( "24000", klass );
321
+ register_error_class( "24", klass );
322
+ }
323
+ {
324
+ VALUE klass = define_error_class( "InvalidTransactionState", NULL );
325
+ register_error_class( "25000", klass );
326
+ register_error_class( "25", klass );
327
+ }
328
+ {
329
+ VALUE klass = define_error_class( "ActiveSqlTransaction", "25" );
330
+ register_error_class( "25001", klass );
331
+ }
332
+ {
333
+ VALUE klass = define_error_class( "BranchTransactionAlreadyActive", "25" );
334
+ register_error_class( "25002", klass );
335
+ }
336
+ {
337
+ VALUE klass = define_error_class( "HeldCursorRequiresSameIsolationLevel", "25" );
338
+ register_error_class( "25008", klass );
339
+ }
340
+ {
341
+ VALUE klass = define_error_class( "InappropriateAccessModeForBranchTransaction", "25" );
342
+ register_error_class( "25003", klass );
343
+ }
344
+ {
345
+ VALUE klass = define_error_class( "InappropriateIsolationLevelForBranchTransaction", "25" );
346
+ register_error_class( "25004", klass );
347
+ }
348
+ {
349
+ VALUE klass = define_error_class( "NoActiveSqlTransactionForBranchTransaction", "25" );
350
+ register_error_class( "25005", klass );
351
+ }
352
+ {
353
+ VALUE klass = define_error_class( "ReadOnlySqlTransaction", "25" );
354
+ register_error_class( "25006", klass );
355
+ }
356
+ {
357
+ VALUE klass = define_error_class( "SchemaAndDataStatementMixingNotSupported", "25" );
358
+ register_error_class( "25007", klass );
359
+ }
360
+ {
361
+ VALUE klass = define_error_class( "NoActiveSqlTransaction", "25" );
362
+ register_error_class( "25P01", klass );
363
+ }
364
+ {
365
+ VALUE klass = define_error_class( "InFailedSqlTransaction", "25" );
366
+ register_error_class( "25P02", klass );
367
+ }
368
+ {
369
+ VALUE klass = define_error_class( "InvalidSqlStatementName", NULL );
370
+ register_error_class( "26000", klass );
371
+ register_error_class( "26", klass );
372
+ }
373
+ {
374
+ VALUE klass = define_error_class( "TriggeredDataChangeViolation", NULL );
375
+ register_error_class( "27000", klass );
376
+ register_error_class( "27", klass );
377
+ }
378
+ {
379
+ VALUE klass = define_error_class( "InvalidAuthorizationSpecification", NULL );
380
+ register_error_class( "28000", klass );
381
+ register_error_class( "28", klass );
382
+ }
383
+ {
384
+ VALUE klass = define_error_class( "InvalidPassword", "28" );
385
+ register_error_class( "28P01", klass );
386
+ }
387
+ {
388
+ VALUE klass = define_error_class( "DependentPrivilegeDescriptorsStillExist", NULL );
389
+ register_error_class( "2B000", klass );
390
+ register_error_class( "2B", klass );
391
+ }
392
+ {
393
+ VALUE klass = define_error_class( "DependentObjectsStillExist", "2B" );
394
+ register_error_class( "2BP01", klass );
395
+ }
396
+ {
397
+ VALUE klass = define_error_class( "InvalidTransactionTermination", NULL );
398
+ register_error_class( "2D000", klass );
399
+ register_error_class( "2D", klass );
400
+ }
401
+ {
402
+ VALUE klass = define_error_class( "SqlRoutineException", NULL );
403
+ register_error_class( "2F000", klass );
404
+ register_error_class( "2F", klass );
405
+ }
406
+ {
407
+ VALUE klass = define_error_class( "SREFunctionExecutedNoReturnStatement", "2F" );
408
+ register_error_class( "2F005", klass );
409
+ }
410
+ {
411
+ VALUE klass = define_error_class( "SREModifyingSqlDataNotPermitted", "2F" );
412
+ register_error_class( "2F002", klass );
413
+ }
414
+ {
415
+ VALUE klass = define_error_class( "SREProhibitedSqlStatementAttempted", "2F" );
416
+ register_error_class( "2F003", klass );
417
+ }
418
+ {
419
+ VALUE klass = define_error_class( "SREReadingSqlDataNotPermitted", "2F" );
420
+ register_error_class( "2F004", klass );
421
+ }
422
+ {
423
+ VALUE klass = define_error_class( "InvalidCursorName", NULL );
424
+ register_error_class( "34000", klass );
425
+ register_error_class( "34", klass );
426
+ }
427
+ {
428
+ VALUE klass = define_error_class( "ExternalRoutineException", NULL );
429
+ register_error_class( "38000", klass );
430
+ register_error_class( "38", klass );
431
+ }
432
+ {
433
+ VALUE klass = define_error_class( "EREContainingSqlNotPermitted", "38" );
434
+ register_error_class( "38001", klass );
435
+ }
436
+ {
437
+ VALUE klass = define_error_class( "EREModifyingSqlDataNotPermitted", "38" );
438
+ register_error_class( "38002", klass );
439
+ }
440
+ {
441
+ VALUE klass = define_error_class( "EREProhibitedSqlStatementAttempted", "38" );
442
+ register_error_class( "38003", klass );
443
+ }
444
+ {
445
+ VALUE klass = define_error_class( "EREReadingSqlDataNotPermitted", "38" );
446
+ register_error_class( "38004", klass );
447
+ }
448
+ {
449
+ VALUE klass = define_error_class( "ExternalRoutineInvocationException", NULL );
450
+ register_error_class( "39000", klass );
451
+ register_error_class( "39", klass );
452
+ }
453
+ {
454
+ VALUE klass = define_error_class( "ERIEInvalidSqlstateReturned", "39" );
455
+ register_error_class( "39001", klass );
456
+ }
457
+ {
458
+ VALUE klass = define_error_class( "ERIENullValueNotAllowed", "39" );
459
+ register_error_class( "39004", klass );
460
+ }
461
+ {
462
+ VALUE klass = define_error_class( "ERIETriggerProtocolViolated", "39" );
463
+ register_error_class( "39P01", klass );
464
+ }
465
+ {
466
+ VALUE klass = define_error_class( "ERIESrfProtocolViolated", "39" );
467
+ register_error_class( "39P02", klass );
468
+ }
469
+ {
470
+ VALUE klass = define_error_class( "SavepointException", NULL );
471
+ register_error_class( "3B000", klass );
472
+ register_error_class( "3B", klass );
473
+ }
474
+ {
475
+ VALUE klass = define_error_class( "SEInvalidSpecification", "3B" );
476
+ register_error_class( "3B001", klass );
477
+ }
478
+ {
479
+ VALUE klass = define_error_class( "InvalidCatalogName", NULL );
480
+ register_error_class( "3D000", klass );
481
+ register_error_class( "3D", klass );
482
+ }
483
+ {
484
+ VALUE klass = define_error_class( "InvalidSchemaName", NULL );
485
+ register_error_class( "3F000", klass );
486
+ register_error_class( "3F", klass );
487
+ }
488
+ {
489
+ VALUE klass = define_error_class( "TransactionRollback", NULL );
490
+ register_error_class( "40000", klass );
491
+ register_error_class( "40", klass );
492
+ }
493
+ {
494
+ VALUE klass = define_error_class( "TRIntegrityConstraintViolation", "40" );
495
+ register_error_class( "40002", klass );
496
+ }
497
+ {
498
+ VALUE klass = define_error_class( "TRSerializationFailure", "40" );
499
+ register_error_class( "40001", klass );
500
+ }
501
+ {
502
+ VALUE klass = define_error_class( "TRStatementCompletionUnknown", "40" );
503
+ register_error_class( "40003", klass );
504
+ }
505
+ {
506
+ VALUE klass = define_error_class( "TRDeadlockDetected", "40" );
507
+ register_error_class( "40P01", klass );
508
+ }
509
+ {
510
+ VALUE klass = define_error_class( "SyntaxErrorOrAccessRuleViolation", NULL );
511
+ register_error_class( "42000", klass );
512
+ register_error_class( "42", klass );
513
+ }
514
+ {
515
+ VALUE klass = define_error_class( "SyntaxError", "42" );
516
+ register_error_class( "42601", klass );
517
+ }
518
+ {
519
+ VALUE klass = define_error_class( "InsufficientPrivilege", "42" );
520
+ register_error_class( "42501", klass );
521
+ }
522
+ {
523
+ VALUE klass = define_error_class( "CannotCoerce", "42" );
524
+ register_error_class( "42846", klass );
525
+ }
526
+ {
527
+ VALUE klass = define_error_class( "GroupingError", "42" );
528
+ register_error_class( "42803", klass );
529
+ }
530
+ {
531
+ VALUE klass = define_error_class( "WindowingError", "42" );
532
+ register_error_class( "42P20", klass );
533
+ }
534
+ {
535
+ VALUE klass = define_error_class( "InvalidRecursion", "42" );
536
+ register_error_class( "42P19", klass );
537
+ }
538
+ {
539
+ VALUE klass = define_error_class( "InvalidForeignKey", "42" );
540
+ register_error_class( "42830", klass );
541
+ }
542
+ {
543
+ VALUE klass = define_error_class( "InvalidName", "42" );
544
+ register_error_class( "42602", klass );
545
+ }
546
+ {
547
+ VALUE klass = define_error_class( "NameTooLong", "42" );
548
+ register_error_class( "42622", klass );
549
+ }
550
+ {
551
+ VALUE klass = define_error_class( "ReservedName", "42" );
552
+ register_error_class( "42939", klass );
553
+ }
554
+ {
555
+ VALUE klass = define_error_class( "DatatypeMismatch", "42" );
556
+ register_error_class( "42804", klass );
557
+ }
558
+ {
559
+ VALUE klass = define_error_class( "IndeterminateDatatype", "42" );
560
+ register_error_class( "42P18", klass );
561
+ }
562
+ {
563
+ VALUE klass = define_error_class( "CollationMismatch", "42" );
564
+ register_error_class( "42P21", klass );
565
+ }
566
+ {
567
+ VALUE klass = define_error_class( "IndeterminateCollation", "42" );
568
+ register_error_class( "42P22", klass );
569
+ }
570
+ {
571
+ VALUE klass = define_error_class( "WrongObjectType", "42" );
572
+ register_error_class( "42809", klass );
573
+ }
574
+ {
575
+ VALUE klass = define_error_class( "UndefinedColumn", "42" );
576
+ register_error_class( "42703", klass );
577
+ }
578
+ {
579
+ VALUE klass = define_error_class( "UndefinedFunction", "42" );
580
+ register_error_class( "42883", klass );
581
+ }
582
+ {
583
+ VALUE klass = define_error_class( "UndefinedTable", "42" );
584
+ register_error_class( "42P01", klass );
585
+ }
586
+ {
587
+ VALUE klass = define_error_class( "UndefinedParameter", "42" );
588
+ register_error_class( "42P02", klass );
589
+ }
590
+ {
591
+ VALUE klass = define_error_class( "UndefinedObject", "42" );
592
+ register_error_class( "42704", klass );
593
+ }
594
+ {
595
+ VALUE klass = define_error_class( "DuplicateColumn", "42" );
596
+ register_error_class( "42701", klass );
597
+ }
598
+ {
599
+ VALUE klass = define_error_class( "DuplicateCursor", "42" );
600
+ register_error_class( "42P03", klass );
601
+ }
602
+ {
603
+ VALUE klass = define_error_class( "DuplicateDatabase", "42" );
604
+ register_error_class( "42P04", klass );
605
+ }
606
+ {
607
+ VALUE klass = define_error_class( "DuplicateFunction", "42" );
608
+ register_error_class( "42723", klass );
609
+ }
610
+ {
611
+ VALUE klass = define_error_class( "DuplicatePstatement", "42" );
612
+ register_error_class( "42P05", klass );
613
+ }
614
+ {
615
+ VALUE klass = define_error_class( "DuplicateSchema", "42" );
616
+ register_error_class( "42P06", klass );
617
+ }
618
+ {
619
+ VALUE klass = define_error_class( "DuplicateTable", "42" );
620
+ register_error_class( "42P07", klass );
621
+ }
622
+ {
623
+ VALUE klass = define_error_class( "DuplicateAlias", "42" );
624
+ register_error_class( "42712", klass );
625
+ }
626
+ {
627
+ VALUE klass = define_error_class( "DuplicateObject", "42" );
628
+ register_error_class( "42710", klass );
629
+ }
630
+ {
631
+ VALUE klass = define_error_class( "AmbiguousColumn", "42" );
632
+ register_error_class( "42702", klass );
633
+ }
634
+ {
635
+ VALUE klass = define_error_class( "AmbiguousFunction", "42" );
636
+ register_error_class( "42725", klass );
637
+ }
638
+ {
639
+ VALUE klass = define_error_class( "AmbiguousParameter", "42" );
640
+ register_error_class( "42P08", klass );
641
+ }
642
+ {
643
+ VALUE klass = define_error_class( "AmbiguousAlias", "42" );
644
+ register_error_class( "42P09", klass );
645
+ }
646
+ {
647
+ VALUE klass = define_error_class( "InvalidColumnReference", "42" );
648
+ register_error_class( "42P10", klass );
649
+ }
650
+ {
651
+ VALUE klass = define_error_class( "InvalidColumnDefinition", "42" );
652
+ register_error_class( "42611", klass );
653
+ }
654
+ {
655
+ VALUE klass = define_error_class( "InvalidCursorDefinition", "42" );
656
+ register_error_class( "42P11", klass );
657
+ }
658
+ {
659
+ VALUE klass = define_error_class( "InvalidDatabaseDefinition", "42" );
660
+ register_error_class( "42P12", klass );
661
+ }
662
+ {
663
+ VALUE klass = define_error_class( "InvalidFunctionDefinition", "42" );
664
+ register_error_class( "42P13", klass );
665
+ }
666
+ {
667
+ VALUE klass = define_error_class( "InvalidPstatementDefinition", "42" );
668
+ register_error_class( "42P14", klass );
669
+ }
670
+ {
671
+ VALUE klass = define_error_class( "InvalidSchemaDefinition", "42" );
672
+ register_error_class( "42P15", klass );
673
+ }
674
+ {
675
+ VALUE klass = define_error_class( "InvalidTableDefinition", "42" );
676
+ register_error_class( "42P16", klass );
677
+ }
678
+ {
679
+ VALUE klass = define_error_class( "InvalidObjectDefinition", "42" );
680
+ register_error_class( "42P17", klass );
681
+ }
682
+ {
683
+ VALUE klass = define_error_class( "WithCheckOptionViolation", NULL );
684
+ register_error_class( "44000", klass );
685
+ register_error_class( "44", klass );
686
+ }
687
+ {
688
+ VALUE klass = define_error_class( "InsufficientResources", NULL );
689
+ register_error_class( "53000", klass );
690
+ register_error_class( "53", klass );
691
+ }
692
+ {
693
+ VALUE klass = define_error_class( "DiskFull", "53" );
694
+ register_error_class( "53100", klass );
695
+ }
696
+ {
697
+ VALUE klass = define_error_class( "OutOfMemory", "53" );
698
+ register_error_class( "53200", klass );
699
+ }
700
+ {
701
+ VALUE klass = define_error_class( "TooManyConnections", "53" );
702
+ register_error_class( "53300", klass );
703
+ }
704
+ {
705
+ VALUE klass = define_error_class( "ConfigurationLimitExceeded", "53" );
706
+ register_error_class( "53400", klass );
707
+ }
708
+ {
709
+ VALUE klass = define_error_class( "ProgramLimitExceeded", NULL );
710
+ register_error_class( "54000", klass );
711
+ register_error_class( "54", klass );
712
+ }
713
+ {
714
+ VALUE klass = define_error_class( "StatementTooComplex", "54" );
715
+ register_error_class( "54001", klass );
716
+ }
717
+ {
718
+ VALUE klass = define_error_class( "TooManyColumns", "54" );
719
+ register_error_class( "54011", klass );
720
+ }
721
+ {
722
+ VALUE klass = define_error_class( "TooManyArguments", "54" );
723
+ register_error_class( "54023", klass );
724
+ }
725
+ {
726
+ VALUE klass = define_error_class( "ObjectNotInPrerequisiteState", NULL );
727
+ register_error_class( "55000", klass );
728
+ register_error_class( "55", klass );
729
+ }
730
+ {
731
+ VALUE klass = define_error_class( "ObjectInUse", "55" );
732
+ register_error_class( "55006", klass );
733
+ }
734
+ {
735
+ VALUE klass = define_error_class( "CantChangeRuntimeParam", "55" );
736
+ register_error_class( "55P02", klass );
737
+ }
738
+ {
739
+ VALUE klass = define_error_class( "LockNotAvailable", "55" );
740
+ register_error_class( "55P03", klass );
741
+ }
742
+ {
743
+ VALUE klass = define_error_class( "OperatorIntervention", NULL );
744
+ register_error_class( "57000", klass );
745
+ register_error_class( "57", klass );
746
+ }
747
+ {
748
+ VALUE klass = define_error_class( "QueryCanceled", "57" );
749
+ register_error_class( "57014", klass );
750
+ }
751
+ {
752
+ VALUE klass = define_error_class( "AdminShutdown", "57" );
753
+ register_error_class( "57P01", klass );
754
+ }
755
+ {
756
+ VALUE klass = define_error_class( "CrashShutdown", "57" );
757
+ register_error_class( "57P02", klass );
758
+ }
759
+ {
760
+ VALUE klass = define_error_class( "CannotConnectNow", "57" );
761
+ register_error_class( "57P03", klass );
762
+ }
763
+ {
764
+ VALUE klass = define_error_class( "DatabaseDropped", "57" );
765
+ register_error_class( "57P04", klass );
766
+ }
767
+ {
768
+ VALUE klass = define_error_class( "SystemError", NULL );
769
+ register_error_class( "58000", klass );
770
+ register_error_class( "58", klass );
771
+ }
772
+ {
773
+ VALUE klass = define_error_class( "IoError", "58" );
774
+ register_error_class( "58030", klass );
775
+ }
776
+ {
777
+ VALUE klass = define_error_class( "UndefinedFile", "58" );
778
+ register_error_class( "58P01", klass );
779
+ }
780
+ {
781
+ VALUE klass = define_error_class( "DuplicateFile", "58" );
782
+ register_error_class( "58P02", klass );
783
+ }
784
+ {
785
+ VALUE klass = define_error_class( "ConfigFileError", NULL );
786
+ register_error_class( "F0000", klass );
787
+ register_error_class( "F0", klass );
788
+ }
789
+ {
790
+ VALUE klass = define_error_class( "LockFileExists", "F0" );
791
+ register_error_class( "F0001", klass );
792
+ }
793
+ {
794
+ VALUE klass = define_error_class( "FdwError", NULL );
795
+ register_error_class( "HV000", klass );
796
+ register_error_class( "HV", klass );
797
+ }
798
+ {
799
+ VALUE klass = define_error_class( "FdwColumnNameNotFound", "HV" );
800
+ register_error_class( "HV005", klass );
801
+ }
802
+ {
803
+ VALUE klass = define_error_class( "FdwDynamicParameterValueNeeded", "HV" );
804
+ register_error_class( "HV002", klass );
805
+ }
806
+ {
807
+ VALUE klass = define_error_class( "FdwFunctionSequenceError", "HV" );
808
+ register_error_class( "HV010", klass );
809
+ }
810
+ {
811
+ VALUE klass = define_error_class( "FdwInconsistentDescriptorInformation", "HV" );
812
+ register_error_class( "HV021", klass );
813
+ }
814
+ {
815
+ VALUE klass = define_error_class( "FdwInvalidAttributeValue", "HV" );
816
+ register_error_class( "HV024", klass );
817
+ }
818
+ {
819
+ VALUE klass = define_error_class( "FdwInvalidColumnName", "HV" );
820
+ register_error_class( "HV007", klass );
821
+ }
822
+ {
823
+ VALUE klass = define_error_class( "FdwInvalidColumnNumber", "HV" );
824
+ register_error_class( "HV008", klass );
825
+ }
826
+ {
827
+ VALUE klass = define_error_class( "FdwInvalidDataType", "HV" );
828
+ register_error_class( "HV004", klass );
829
+ }
830
+ {
831
+ VALUE klass = define_error_class( "FdwInvalidDataTypeDescriptors", "HV" );
832
+ register_error_class( "HV006", klass );
833
+ }
834
+ {
835
+ VALUE klass = define_error_class( "FdwInvalidDescriptorFieldIdentifier", "HV" );
836
+ register_error_class( "HV091", klass );
837
+ }
838
+ {
839
+ VALUE klass = define_error_class( "FdwInvalidHandle", "HV" );
840
+ register_error_class( "HV00B", klass );
841
+ }
842
+ {
843
+ VALUE klass = define_error_class( "FdwInvalidOptionIndex", "HV" );
844
+ register_error_class( "HV00C", klass );
845
+ }
846
+ {
847
+ VALUE klass = define_error_class( "FdwInvalidOptionName", "HV" );
848
+ register_error_class( "HV00D", klass );
849
+ }
850
+ {
851
+ VALUE klass = define_error_class( "FdwInvalidStringLengthOrBufferLength", "HV" );
852
+ register_error_class( "HV090", klass );
853
+ }
854
+ {
855
+ VALUE klass = define_error_class( "FdwInvalidStringFormat", "HV" );
856
+ register_error_class( "HV00A", klass );
857
+ }
858
+ {
859
+ VALUE klass = define_error_class( "FdwInvalidUseOfNullPointer", "HV" );
860
+ register_error_class( "HV009", klass );
861
+ }
862
+ {
863
+ VALUE klass = define_error_class( "FdwTooManyHandles", "HV" );
864
+ register_error_class( "HV014", klass );
865
+ }
866
+ {
867
+ VALUE klass = define_error_class( "FdwOutOfMemory", "HV" );
868
+ register_error_class( "HV001", klass );
869
+ }
870
+ {
871
+ VALUE klass = define_error_class( "FdwNoSchemas", "HV" );
872
+ register_error_class( "HV00P", klass );
873
+ }
874
+ {
875
+ VALUE klass = define_error_class( "FdwOptionNameNotFound", "HV" );
876
+ register_error_class( "HV00J", klass );
877
+ }
878
+ {
879
+ VALUE klass = define_error_class( "FdwReplyHandle", "HV" );
880
+ register_error_class( "HV00K", klass );
881
+ }
882
+ {
883
+ VALUE klass = define_error_class( "FdwSchemaNotFound", "HV" );
884
+ register_error_class( "HV00Q", klass );
885
+ }
886
+ {
887
+ VALUE klass = define_error_class( "FdwTableNotFound", "HV" );
888
+ register_error_class( "HV00R", klass );
889
+ }
890
+ {
891
+ VALUE klass = define_error_class( "FdwUnableToCreateExecution", "HV" );
892
+ register_error_class( "HV00L", klass );
893
+ }
894
+ {
895
+ VALUE klass = define_error_class( "FdwUnableToCreateReply", "HV" );
896
+ register_error_class( "HV00M", klass );
897
+ }
898
+ {
899
+ VALUE klass = define_error_class( "FdwUnableToEstablishConnection", "HV" );
900
+ register_error_class( "HV00N", klass );
901
+ }
902
+ {
903
+ VALUE klass = define_error_class( "PlpgsqlError", NULL );
904
+ register_error_class( "P0000", klass );
905
+ register_error_class( "P0", klass );
906
+ }
907
+ {
908
+ VALUE klass = define_error_class( "RaiseException", "P0" );
909
+ register_error_class( "P0001", klass );
910
+ }
911
+ {
912
+ VALUE klass = define_error_class( "NoDataFound", "P0" );
913
+ register_error_class( "P0002", klass );
914
+ }
915
+ {
916
+ VALUE klass = define_error_class( "TooManyRows", "P0" );
917
+ register_error_class( "P0003", klass );
918
+ }
919
+ {
920
+ VALUE klass = define_error_class( "InternalError", NULL );
921
+ register_error_class( "XX000", klass );
922
+ register_error_class( "XX", klass );
923
+ }
924
+ {
925
+ VALUE klass = define_error_class( "DataCorrupted", "XX" );
926
+ register_error_class( "XX001", klass );
927
+ }
928
+ {
929
+ VALUE klass = define_error_class( "IndexCorrupted", "XX" );
930
+ register_error_class( "XX002", klass );
931
+ }