pg 0.15.1 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/BSDL +2 -2
  5. data/ChangeLog +0 -3022
  6. data/History.rdoc +370 -4
  7. data/Manifest.txt +39 -19
  8. data/README-Windows.rdoc +17 -28
  9. data/README.ja.rdoc +1 -2
  10. data/README.rdoc +113 -14
  11. data/Rakefile +97 -36
  12. data/Rakefile.cross +109 -83
  13. data/ext/errorcodes.def +1032 -0
  14. data/ext/errorcodes.rb +45 -0
  15. data/ext/errorcodes.txt +494 -0
  16. data/ext/extconf.rb +55 -52
  17. data/ext/gvl_wrappers.c +4 -0
  18. data/ext/gvl_wrappers.h +94 -38
  19. data/ext/pg.c +273 -121
  20. data/ext/pg.h +292 -50
  21. data/ext/pg_binary_decoder.c +229 -0
  22. data/ext/pg_binary_encoder.c +163 -0
  23. data/ext/pg_coder.c +561 -0
  24. data/ext/pg_connection.c +1811 -1051
  25. data/ext/pg_copy_coder.c +599 -0
  26. data/ext/pg_errors.c +95 -0
  27. data/ext/pg_record_coder.c +491 -0
  28. data/ext/pg_result.c +917 -203
  29. data/ext/pg_text_decoder.c +987 -0
  30. data/ext/pg_text_encoder.c +814 -0
  31. data/ext/pg_tuple.c +549 -0
  32. data/ext/pg_type_map.c +166 -0
  33. data/ext/pg_type_map_all_strings.c +116 -0
  34. data/ext/pg_type_map_by_class.c +244 -0
  35. data/ext/pg_type_map_by_column.c +313 -0
  36. data/ext/pg_type_map_by_mri_type.c +284 -0
  37. data/ext/pg_type_map_by_oid.c +356 -0
  38. data/ext/pg_type_map_in_ruby.c +299 -0
  39. data/ext/pg_util.c +149 -0
  40. data/ext/pg_util.h +65 -0
  41. data/lib/pg.rb +31 -9
  42. data/lib/pg/basic_type_mapping.rb +522 -0
  43. data/lib/pg/binary_decoder.rb +23 -0
  44. data/lib/pg/coder.rb +104 -0
  45. data/lib/pg/connection.rb +235 -30
  46. data/lib/pg/constants.rb +2 -1
  47. data/lib/pg/exceptions.rb +2 -1
  48. data/lib/pg/result.rb +33 -6
  49. data/lib/pg/text_decoder.rb +46 -0
  50. data/lib/pg/text_encoder.rb +59 -0
  51. data/lib/pg/tuple.rb +30 -0
  52. data/lib/pg/type_map_by_column.rb +16 -0
  53. data/spec/{lib/helpers.rb → helpers.rb} +154 -52
  54. data/spec/pg/basic_type_mapping_spec.rb +630 -0
  55. data/spec/pg/connection_spec.rb +1352 -426
  56. data/spec/pg/connection_sync_spec.rb +41 -0
  57. data/spec/pg/result_spec.rb +508 -105
  58. data/spec/pg/tuple_spec.rb +333 -0
  59. data/spec/pg/type_map_by_class_spec.rb +138 -0
  60. data/spec/pg/type_map_by_column_spec.rb +226 -0
  61. data/spec/pg/type_map_by_mri_type_spec.rb +136 -0
  62. data/spec/pg/type_map_by_oid_spec.rb +149 -0
  63. data/spec/pg/type_map_in_ruby_spec.rb +164 -0
  64. data/spec/pg/type_map_spec.rb +22 -0
  65. data/spec/pg/type_spec.rb +1123 -0
  66. data/spec/pg_spec.rb +35 -16
  67. metadata +163 -84
  68. metadata.gz.sig +0 -0
  69. data/sample/array_insert.rb +0 -20
  70. data/sample/async_api.rb +0 -106
  71. data/sample/async_copyto.rb +0 -39
  72. data/sample/async_mixed.rb +0 -56
  73. data/sample/check_conn.rb +0 -21
  74. data/sample/copyfrom.rb +0 -81
  75. data/sample/copyto.rb +0 -19
  76. data/sample/cursor.rb +0 -21
  77. data/sample/disk_usage_report.rb +0 -186
  78. data/sample/issue-119.rb +0 -94
  79. data/sample/losample.rb +0 -69
  80. data/sample/minimal-testcase.rb +0 -17
  81. data/sample/notify_wait.rb +0 -72
  82. data/sample/pg_statistics.rb +0 -294
  83. data/sample/replication_monitor.rb +0 -231
  84. data/sample/test_binary_values.rb +0 -33
  85. data/sample/wal_shipper.rb +0 -434
  86. data/sample/warehouse_partitions.rb +0 -320
data/Rakefile.cross CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env rake
1
+ # -*- rake -*-
2
2
 
3
3
  require 'uri'
4
4
  require 'tempfile'
@@ -21,19 +21,32 @@ end
21
21
  class CrossLibrary < OpenStruct
22
22
  include Rake::DSL
23
23
 
24
- def initialize(for_platform, openssl_config)
24
+ def initialize(for_platform, openssl_config, toolchain)
25
25
  super()
26
26
 
27
27
  self.for_platform = for_platform
28
28
  self.openssl_config = openssl_config
29
+ self.host_platform = toolchain
29
30
 
30
31
  # Cross-compilation constants
31
- self.openssl_version = ENV['OPENSSL_VERSION'] || '1.0.1e'
32
- self.postgresql_version = ENV['POSTGRESQL_VERSION'] || '9.2.3'
33
-
34
- self.compile_home = Pathname( "./build" ).expand_path
32
+ self.openssl_version = ENV['OPENSSL_VERSION'] || '1.1.1d'
33
+ self.postgresql_version = ENV['POSTGRESQL_VERSION'] || '12.1'
34
+
35
+ # Check if symlinks work in the current working directory.
36
+ # This fails, if rake-compiler-dock is running on a Windows box.
37
+ begin
38
+ FileUtils.rm_f '.test_symlink'
39
+ FileUtils.ln_s '/', '.test_symlink'
40
+ rescue NotImplementedError, SystemCallError
41
+ # Symlinks don't work -> use home directory instead
42
+ self.compile_home = Pathname( "~/.ruby-pg-build" ).expand_path
43
+ else
44
+ self.compile_home = Pathname( "./build" ).expand_path
45
+ end
35
46
  self.static_sourcesdir = compile_home + 'sources'
36
47
  self.static_builddir = compile_home + 'builds' + for_platform
48
+ CLOBBER.include( static_sourcesdir )
49
+ CLEAN.include( static_builddir )
37
50
 
38
51
  # Static OpenSSL build vars
39
52
  self.static_openssl_builddir = static_builddir + "openssl-#{openssl_version}"
@@ -43,8 +56,8 @@ class CrossLibrary < OpenStruct
43
56
  self.openssl_tarball = static_sourcesdir + File.basename( openssl_source_uri.path )
44
57
  self.openssl_makefile = static_openssl_builddir + 'Makefile'
45
58
 
46
- self.libssleay32 = static_openssl_builddir + 'libssleay32.a'
47
- self.libeay32 = static_openssl_builddir + 'libeay32.a'
59
+ self.libssl = static_openssl_builddir + 'libssl.a'
60
+ self.libcrypto = static_openssl_builddir + 'libcrypto.a'
48
61
 
49
62
  self.openssl_patches = Rake::FileList[ (MISCDIR + "openssl-#{openssl_version}.*.patch").to_s ]
50
63
 
@@ -64,36 +77,12 @@ class CrossLibrary < OpenStruct
64
77
  self.postgresql_global_makefile = static_postgresql_srcdir + 'Makefile.global'
65
78
  self.postgresql_shlib_makefile = static_postgresql_srcdir + 'Makefile.shlib'
66
79
  self.postgresql_shlib_mf_orig = static_postgresql_srcdir + 'Makefile.shlib.orig'
67
- self.postgresql_lib = static_postgresql_libdir + 'libpq.a'
80
+ self.postgresql_lib = static_postgresql_libdir + 'libpq.dll'
68
81
  self.postgresql_patches = Rake::FileList[ (MISCDIR + "postgresql-#{postgresql_version}.*.patch").to_s ]
69
82
 
70
- # Use rake-compilers config.yml to determine the toolchain that was used
71
- # to build Ruby for this platform.
72
- self.host_platform = begin
73
- config_file = YAML.load_file(File.expand_path("~/.rake-compiler/config.yml"))
74
- _, rbfile = config_file.find{|key, fname| key.start_with?("rbconfig-#{for_platform}-") }
75
- IO.read(rbfile).match(/CONFIG\["host"\] = "(.*)"/)[1]
76
- rescue
77
- nil
78
- end
79
-
80
-
81
83
  # clean intermediate files and folders
82
84
  CLEAN.include( static_builddir.to_s )
83
85
 
84
-
85
- ENV['RUBY_CC_VERSION'] ||= '1.8.7:1.9.3:2.0.0'
86
-
87
- def download(url, save_to)
88
- part = save_to+".part"
89
- sh "wget #{url.to_s.inspect} -O #{part.inspect} || curl #{url.to_s.inspect} -o #{part.inspect}"
90
- FileUtils.mv part, save_to
91
- end
92
-
93
- def run(*args)
94
- sh *args
95
- end
96
-
97
86
  #####################################################################
98
87
  ### C R O S S - C O M P I L A T I O N - T A S K S
99
88
  #####################################################################
@@ -126,17 +115,15 @@ class CrossLibrary < OpenStruct
126
115
  end
127
116
 
128
117
  self.cmd_prelude = [
129
- 'env',
130
- "CC=#{host_platform}-gcc",
118
+ "env",
119
+ "CROSS_COMPILE=#{host_platform}-",
131
120
  "CFLAGS=-DDSO_WIN32",
132
- "AR=#{host_platform}-ar",
133
- "RANLIB=#{host_platform}-ranlib"
134
121
  ]
135
122
 
136
123
 
137
124
  # generate the makefile in a clean build location
138
125
  file openssl_makefile => static_openssl_builddir do |t|
139
- Dir.chdir( static_openssl_builddir ) do
126
+ chdir( static_openssl_builddir ) do
140
127
  cmd = cmd_prelude.dup
141
128
  cmd << "./Configure" << openssl_config
142
129
 
@@ -145,10 +132,10 @@ class CrossLibrary < OpenStruct
145
132
  end
146
133
 
147
134
  desc "compile static openssl libraries"
148
- task :openssl_libs => [ libssleay32, libeay32 ]
135
+ task "openssl_libs:#{for_platform}" => [ libssl, libcrypto ]
149
136
 
150
- task :compile_static_openssl => openssl_makefile do |t|
151
- Dir.chdir( static_openssl_builddir ) do
137
+ task "compile_static_openssl:#{for_platform}" => openssl_makefile do |t|
138
+ chdir( static_openssl_builddir ) do
152
139
  cmd = cmd_prelude.dup
153
140
  cmd << 'make' << "-j#{NUM_CPUS}" << 'build_libs'
154
141
 
@@ -156,14 +143,14 @@ class CrossLibrary < OpenStruct
156
143
  end
157
144
  end
158
145
 
159
- desc "compile static #{libeay32}"
160
- file libeay32 => :compile_static_openssl do |t|
161
- FileUtils.cp( static_openssl_builddir + 'libcrypto.a', libeay32.to_s )
146
+ desc "compile static #{libssl}"
147
+ file libssl => "compile_static_openssl:#{for_platform}" do |t|
148
+ rm t.name.gsub(/\.a$/, ".dll.a")
162
149
  end
163
150
 
164
- desc "compile static #{libssleay32}"
165
- file libssleay32 => :compile_static_openssl do |t|
166
- FileUtils.cp( static_openssl_builddir + 'libssl.a', libssleay32.to_s )
151
+ desc "compile static #{libcrypto}"
152
+ file libcrypto => "compile_static_openssl:#{for_platform}" do |t|
153
+ rm t.name.gsub(/\.a$/, ".dll.a")
167
154
  end
168
155
 
169
156
 
@@ -184,7 +171,6 @@ class CrossLibrary < OpenStruct
184
171
  puts "extracting %s to %s" % [ postgresql_tarball, static_postgresql_builddir.parent ]
185
172
  static_postgresql_builddir.mkpath
186
173
  run 'tar', '-xjf', postgresql_tarball.to_s, '-C', static_postgresql_builddir.parent.to_s
187
- mv postgresql_shlib_makefile, postgresql_shlib_mf_orig
188
174
 
189
175
  postgresql_patches.each do |patchfile|
190
176
  puts " applying patch #{patchfile}..."
@@ -194,22 +180,21 @@ class CrossLibrary < OpenStruct
194
180
  end
195
181
 
196
182
  # generate the makefile in a clean build location
197
- file postgresql_global_makefile => [ static_postgresql_builddir, :openssl_libs ] do |t|
183
+ file postgresql_global_makefile => [ static_postgresql_builddir, "openssl_libs:#{for_platform}" ] do |t|
198
184
  options = [
199
185
  "--target=#{host_platform}",
200
186
  "--host=#{host_platform}",
201
187
  '--with-openssl',
202
188
  '--without-zlib',
203
- '--disable-shared',
204
189
  ]
205
190
 
206
- Dir.chdir( static_postgresql_builddir ) do
191
+ chdir( static_postgresql_builddir ) do
207
192
  configure_path = static_postgresql_builddir + 'configure'
208
193
  cmd = [ configure_path.to_s, *options ]
209
194
  cmd << "CFLAGS=-L#{static_openssl_builddir}"
210
195
  cmd << "LDFLAGS=-L#{static_openssl_builddir}"
211
196
  cmd << "LDFLAGS_SL=-L#{static_openssl_builddir}"
212
- cmd << "LIBS=-lwsock32 -lgdi32"
197
+ cmd << "LIBS=-lwsock32 -lgdi32 -lws2_32"
213
198
  cmd << "CPPFLAGS=-I#{static_openssl_builddir}/include"
214
199
 
215
200
  run( *cmd )
@@ -217,51 +202,62 @@ class CrossLibrary < OpenStruct
217
202
  end
218
203
 
219
204
 
220
- # patch the Makefile.shlib -- depend on the build dir so it's only
221
- # rewritten if the tarball is re-extracted.
222
- file postgresql_shlib_makefile => postgresql_shlib_mf_orig do |t|
223
- tf = Tempfile.new( postgresql_shlib_makefile.basename.to_s )
224
- postgresql_shlib_mf_orig.open( File::RDONLY ) do |ifh|
225
- ifh.each_line do |line|
226
- tf.print( line.sub(/^(\s*haslibarule\s*=\s*yes)/, "# \\1 ") )
227
- end
205
+ # make libpq.dll
206
+ task postgresql_lib => [ postgresql_global_makefile ] do |t|
207
+ # Work around missing dependency to libcommon in PostgreSQL-9.4.0
208
+ chdir( static_postgresql_srcdir + "common" ) do
209
+ sh 'make', "-j#{NUM_CPUS}"
210
+ end
211
+ chdir( static_postgresql_srcdir + "port" ) do
212
+ sh 'make', "-j#{NUM_CPUS}"
228
213
  end
229
- tf.close
230
214
 
231
- FileUtils.mv( tf.path, t.name, :verbose => $puts )
215
+ chdir( postgresql_lib.dirname ) do
216
+ sh 'make',
217
+ "-j#{NUM_CPUS}",
218
+ postgresql_lib.basename.to_s,
219
+ 'SHLIB_LINK=-lssl -lcrypto -lcrypt32 -lgdi32 -lsecur32 -lwsock32 -lws2_32'
220
+ end
232
221
  end
233
222
 
234
223
 
235
- # make libpq.a
236
- task postgresql_lib => [ postgresql_global_makefile, postgresql_shlib_makefile ] do |t|
237
- Dir.chdir( postgresql_lib.dirname ) do
238
- sh 'make', "-j#{NUM_CPUS}", postgresql_lib.basename.to_s, 'PORTNAME=win32'
239
- end
224
+ #desc 'compile libpg.a'
225
+ task "native:#{for_platform}" => postgresql_lib
226
+
227
+ # copy libpq.dll to lib dir
228
+ dest_libpq = "lib/#{for_platform}/#{postgresql_lib.basename}"
229
+ directory File.dirname(dest_libpq)
230
+ file dest_libpq => [postgresql_lib, File.dirname(dest_libpq)] do
231
+ cp postgresql_lib, dest_libpq
240
232
  end
241
233
 
234
+ stage_libpq = "tmp/#{for_platform}/stage/#{dest_libpq}"
235
+ directory File.dirname(stage_libpq)
236
+ file stage_libpq => [postgresql_lib, File.dirname(stage_libpq)] do |t|
237
+ cp postgresql_lib, stage_libpq
238
+ end
239
+ end
242
240
 
243
- #desc 'compile static libpg.a'
244
- task :static_libpq => postgresql_lib
241
+ def download(url, save_to)
242
+ part = save_to+".part"
243
+ sh "wget #{url.to_s.inspect} -O #{part.inspect} || curl #{url.to_s.inspect} -o #{part.inspect}"
244
+ FileUtils.mv part, save_to
245
245
  end
246
- end
247
246
 
248
- if File.exist?(File.expand_path("~/.rake-compiler/config.yml"))
249
- CrossLibraries = [
250
- ['i386-mingw32', 'mingw'],
251
- ['x64-mingw32', 'mingw64'],
252
- ].map do |platform, openssl_config|
253
- CrossLibrary.new platform, openssl_config
247
+ def run(*args)
248
+ sh(*args)
254
249
  end
255
- else
256
- $stderr.puts "Cross-compilation disabled -- rake-compiler not properly installed"
257
- CrossLibraries = []
258
250
  end
259
251
 
260
- desc 'cross compile pg for win32'
261
- task :cross do
262
- ENV['CROSS_COMPILING'] = 'yes'
252
+ CrossLibraries = [
253
+ ['x86-mingw32', 'mingw', 'i686-w64-mingw32'],
254
+ ['x64-mingw32', 'mingw64', 'x86_64-w64-mingw32'],
255
+ ].map do |platform, openssl_config, toolchain|
256
+ CrossLibrary.new platform, openssl_config, toolchain
263
257
  end
264
- task :cross => [ :mingw32, :static_libpq ]
258
+
259
+ desc 'cross compile pg for win32'
260
+ task :cross => [ :mingw32 ]
265
261
 
266
262
  task :mingw32 do
267
263
  # Use Rake::ExtensionCompiler helpers to find the proper host
@@ -271,3 +267,33 @@ task :mingw32 do
271
267
  fail
272
268
  end
273
269
  end
270
+
271
+ task 'gem:windows:prepare' do
272
+ require 'io/console'
273
+ require 'rake_compiler_dock'
274
+
275
+ # Copy gem signing key and certs to be accessable from the docker container
276
+ mkdir_p 'build/gem'
277
+ sh "cp ~/.gem/gem-*.pem build/gem/ || true"
278
+ sh "bundle package"
279
+ begin
280
+ OpenSSL::PKey.read(File.read(File.expand_path("~/.gem/gem-private_key.pem")), ENV["GEM_PRIVATE_KEY_PASSPHRASE"] || "")
281
+ rescue OpenSSL::PKey::PKeyError
282
+ ENV["GEM_PRIVATE_KEY_PASSPHRASE"] = STDIN.getpass("Enter passphrase of gem signature key: ")
283
+ retry
284
+ end
285
+ end
286
+
287
+ CrossLibraries.each do |xlib|
288
+ platform = xlib.for_platform
289
+ desc "Build fat binary gem for platform #{platform}"
290
+ task "gem:windows:#{platform}" => ['ChangeLog', 'gem:windows:prepare', xlib.openssl_tarball, xlib.postgresql_tarball] do
291
+ RakeCompilerDock.sh <<-EOT, platform: platform
292
+ (cp build/gem/gem-*.pem ~/.gem/ || true) &&
293
+ bundle install --local &&
294
+ rake native:#{platform} pkg/#{$hoespec.spec.full_name}-#{platform}.gem MAKE="make -j`nproc`"
295
+ EOT
296
+ end
297
+ desc "Build the windows binary gems"
298
+ multitask 'gem:windows' => "gem:windows:#{platform}"
299
+ end
@@ -0,0 +1,1032 @@
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( "InvalidPrecedingOrFollowingSize", "22" );
191
+ register_error_class( "22013", klass );
192
+ }
193
+ {
194
+ VALUE klass = define_error_class( "InvalidRegularExpression", "22" );
195
+ register_error_class( "2201B", klass );
196
+ }
197
+ {
198
+ VALUE klass = define_error_class( "InvalidRowCountInLimitClause", "22" );
199
+ register_error_class( "2201W", klass );
200
+ }
201
+ {
202
+ VALUE klass = define_error_class( "InvalidRowCountInResultOffsetClause", "22" );
203
+ register_error_class( "2201X", klass );
204
+ }
205
+ {
206
+ VALUE klass = define_error_class( "InvalidTablesampleArgument", "22" );
207
+ register_error_class( "2202H", klass );
208
+ }
209
+ {
210
+ VALUE klass = define_error_class( "InvalidTablesampleRepeat", "22" );
211
+ register_error_class( "2202G", klass );
212
+ }
213
+ {
214
+ VALUE klass = define_error_class( "InvalidTimeZoneDisplacementValue", "22" );
215
+ register_error_class( "22009", klass );
216
+ }
217
+ {
218
+ VALUE klass = define_error_class( "InvalidUseOfEscapeCharacter", "22" );
219
+ register_error_class( "2200C", klass );
220
+ }
221
+ {
222
+ VALUE klass = define_error_class( "MostSpecificTypeMismatch", "22" );
223
+ register_error_class( "2200G", klass );
224
+ }
225
+ {
226
+ VALUE klass = define_error_class( "NullValueNotAllowed", "22" );
227
+ register_error_class( "22004", klass );
228
+ }
229
+ {
230
+ VALUE klass = define_error_class( "NullValueNoIndicatorParameter", "22" );
231
+ register_error_class( "22002", klass );
232
+ }
233
+ {
234
+ VALUE klass = define_error_class( "NumericValueOutOfRange", "22" );
235
+ register_error_class( "22003", klass );
236
+ }
237
+ {
238
+ VALUE klass = define_error_class( "SequenceGeneratorLimitExceeded", "22" );
239
+ register_error_class( "2200H", klass );
240
+ }
241
+ {
242
+ VALUE klass = define_error_class( "StringDataLengthMismatch", "22" );
243
+ register_error_class( "22026", klass );
244
+ }
245
+ {
246
+ VALUE klass = define_error_class( "StringDataRightTruncation", "22" );
247
+ register_error_class( "22001", klass );
248
+ }
249
+ {
250
+ VALUE klass = define_error_class( "SubstringError", "22" );
251
+ register_error_class( "22011", klass );
252
+ }
253
+ {
254
+ VALUE klass = define_error_class( "TrimError", "22" );
255
+ register_error_class( "22027", klass );
256
+ }
257
+ {
258
+ VALUE klass = define_error_class( "UnterminatedCString", "22" );
259
+ register_error_class( "22024", klass );
260
+ }
261
+ {
262
+ VALUE klass = define_error_class( "ZeroLengthCharacterString", "22" );
263
+ register_error_class( "2200F", klass );
264
+ }
265
+ {
266
+ VALUE klass = define_error_class( "FloatingPointException", "22" );
267
+ register_error_class( "22P01", klass );
268
+ }
269
+ {
270
+ VALUE klass = define_error_class( "InvalidTextRepresentation", "22" );
271
+ register_error_class( "22P02", klass );
272
+ }
273
+ {
274
+ VALUE klass = define_error_class( "InvalidBinaryRepresentation", "22" );
275
+ register_error_class( "22P03", klass );
276
+ }
277
+ {
278
+ VALUE klass = define_error_class( "BadCopyFileFormat", "22" );
279
+ register_error_class( "22P04", klass );
280
+ }
281
+ {
282
+ VALUE klass = define_error_class( "UntranslatableCharacter", "22" );
283
+ register_error_class( "22P05", klass );
284
+ }
285
+ {
286
+ VALUE klass = define_error_class( "NotAnXmlDocument", "22" );
287
+ register_error_class( "2200L", klass );
288
+ }
289
+ {
290
+ VALUE klass = define_error_class( "InvalidXmlDocument", "22" );
291
+ register_error_class( "2200M", klass );
292
+ }
293
+ {
294
+ VALUE klass = define_error_class( "InvalidXmlContent", "22" );
295
+ register_error_class( "2200N", klass );
296
+ }
297
+ {
298
+ VALUE klass = define_error_class( "InvalidXmlComment", "22" );
299
+ register_error_class( "2200S", klass );
300
+ }
301
+ {
302
+ VALUE klass = define_error_class( "InvalidXmlProcessingInstruction", "22" );
303
+ register_error_class( "2200T", klass );
304
+ }
305
+ {
306
+ VALUE klass = define_error_class( "DuplicateJsonObjectKeyValue", "22" );
307
+ register_error_class( "22030", klass );
308
+ }
309
+ {
310
+ VALUE klass = define_error_class( "InvalidJsonText", "22" );
311
+ register_error_class( "22032", klass );
312
+ }
313
+ {
314
+ VALUE klass = define_error_class( "InvalidSqlJsonSubscript", "22" );
315
+ register_error_class( "22033", klass );
316
+ }
317
+ {
318
+ VALUE klass = define_error_class( "MoreThanOneSqlJsonItem", "22" );
319
+ register_error_class( "22034", klass );
320
+ }
321
+ {
322
+ VALUE klass = define_error_class( "NoSqlJsonItem", "22" );
323
+ register_error_class( "22035", klass );
324
+ }
325
+ {
326
+ VALUE klass = define_error_class( "NonNumericSqlJsonItem", "22" );
327
+ register_error_class( "22036", klass );
328
+ }
329
+ {
330
+ VALUE klass = define_error_class( "NonUniqueKeysInAJsonObject", "22" );
331
+ register_error_class( "22037", klass );
332
+ }
333
+ {
334
+ VALUE klass = define_error_class( "SingletonSqlJsonItemRequired", "22" );
335
+ register_error_class( "22038", klass );
336
+ }
337
+ {
338
+ VALUE klass = define_error_class( "SqlJsonArrayNotFound", "22" );
339
+ register_error_class( "22039", klass );
340
+ }
341
+ {
342
+ VALUE klass = define_error_class( "SqlJsonMemberNotFound", "22" );
343
+ register_error_class( "2203A", klass );
344
+ }
345
+ {
346
+ VALUE klass = define_error_class( "SqlJsonNumberNotFound", "22" );
347
+ register_error_class( "2203B", klass );
348
+ }
349
+ {
350
+ VALUE klass = define_error_class( "SqlJsonObjectNotFound", "22" );
351
+ register_error_class( "2203C", klass );
352
+ }
353
+ {
354
+ VALUE klass = define_error_class( "TooManyJsonArrayElements", "22" );
355
+ register_error_class( "2203D", klass );
356
+ }
357
+ {
358
+ VALUE klass = define_error_class( "TooManyJsonObjectMembers", "22" );
359
+ register_error_class( "2203E", klass );
360
+ }
361
+ {
362
+ VALUE klass = define_error_class( "SqlJsonScalarRequired", "22" );
363
+ register_error_class( "2203F", klass );
364
+ }
365
+ {
366
+ VALUE klass = define_error_class( "IntegrityConstraintViolation", NULL );
367
+ register_error_class( "23000", klass );
368
+ register_error_class( "23", klass );
369
+ }
370
+ {
371
+ VALUE klass = define_error_class( "RestrictViolation", "23" );
372
+ register_error_class( "23001", klass );
373
+ }
374
+ {
375
+ VALUE klass = define_error_class( "NotNullViolation", "23" );
376
+ register_error_class( "23502", klass );
377
+ }
378
+ {
379
+ VALUE klass = define_error_class( "ForeignKeyViolation", "23" );
380
+ register_error_class( "23503", klass );
381
+ }
382
+ {
383
+ VALUE klass = define_error_class( "UniqueViolation", "23" );
384
+ register_error_class( "23505", klass );
385
+ }
386
+ {
387
+ VALUE klass = define_error_class( "CheckViolation", "23" );
388
+ register_error_class( "23514", klass );
389
+ }
390
+ {
391
+ VALUE klass = define_error_class( "ExclusionViolation", "23" );
392
+ register_error_class( "23P01", klass );
393
+ }
394
+ {
395
+ VALUE klass = define_error_class( "InvalidCursorState", NULL );
396
+ register_error_class( "24000", klass );
397
+ register_error_class( "24", klass );
398
+ }
399
+ {
400
+ VALUE klass = define_error_class( "InvalidTransactionState", NULL );
401
+ register_error_class( "25000", klass );
402
+ register_error_class( "25", klass );
403
+ }
404
+ {
405
+ VALUE klass = define_error_class( "ActiveSqlTransaction", "25" );
406
+ register_error_class( "25001", klass );
407
+ }
408
+ {
409
+ VALUE klass = define_error_class( "BranchTransactionAlreadyActive", "25" );
410
+ register_error_class( "25002", klass );
411
+ }
412
+ {
413
+ VALUE klass = define_error_class( "HeldCursorRequiresSameIsolationLevel", "25" );
414
+ register_error_class( "25008", klass );
415
+ }
416
+ {
417
+ VALUE klass = define_error_class( "InappropriateAccessModeForBranchTransaction", "25" );
418
+ register_error_class( "25003", klass );
419
+ }
420
+ {
421
+ VALUE klass = define_error_class( "InappropriateIsolationLevelForBranchTransaction", "25" );
422
+ register_error_class( "25004", klass );
423
+ }
424
+ {
425
+ VALUE klass = define_error_class( "NoActiveSqlTransactionForBranchTransaction", "25" );
426
+ register_error_class( "25005", klass );
427
+ }
428
+ {
429
+ VALUE klass = define_error_class( "ReadOnlySqlTransaction", "25" );
430
+ register_error_class( "25006", klass );
431
+ }
432
+ {
433
+ VALUE klass = define_error_class( "SchemaAndDataStatementMixingNotSupported", "25" );
434
+ register_error_class( "25007", klass );
435
+ }
436
+ {
437
+ VALUE klass = define_error_class( "NoActiveSqlTransaction", "25" );
438
+ register_error_class( "25P01", klass );
439
+ }
440
+ {
441
+ VALUE klass = define_error_class( "InFailedSqlTransaction", "25" );
442
+ register_error_class( "25P02", klass );
443
+ }
444
+ {
445
+ VALUE klass = define_error_class( "IdleInTransactionSessionTimeout", "25" );
446
+ register_error_class( "25P03", klass );
447
+ }
448
+ {
449
+ VALUE klass = define_error_class( "InvalidSqlStatementName", NULL );
450
+ register_error_class( "26000", klass );
451
+ register_error_class( "26", klass );
452
+ }
453
+ {
454
+ VALUE klass = define_error_class( "TriggeredDataChangeViolation", NULL );
455
+ register_error_class( "27000", klass );
456
+ register_error_class( "27", klass );
457
+ }
458
+ {
459
+ VALUE klass = define_error_class( "InvalidAuthorizationSpecification", NULL );
460
+ register_error_class( "28000", klass );
461
+ register_error_class( "28", klass );
462
+ }
463
+ {
464
+ VALUE klass = define_error_class( "InvalidPassword", "28" );
465
+ register_error_class( "28P01", klass );
466
+ }
467
+ {
468
+ VALUE klass = define_error_class( "DependentPrivilegeDescriptorsStillExist", NULL );
469
+ register_error_class( "2B000", klass );
470
+ register_error_class( "2B", klass );
471
+ }
472
+ {
473
+ VALUE klass = define_error_class( "DependentObjectsStillExist", "2B" );
474
+ register_error_class( "2BP01", klass );
475
+ }
476
+ {
477
+ VALUE klass = define_error_class( "InvalidTransactionTermination", NULL );
478
+ register_error_class( "2D000", klass );
479
+ register_error_class( "2D", klass );
480
+ }
481
+ {
482
+ VALUE klass = define_error_class( "SqlRoutineException", NULL );
483
+ register_error_class( "2F000", klass );
484
+ register_error_class( "2F", klass );
485
+ }
486
+ {
487
+ VALUE klass = define_error_class( "SREFunctionExecutedNoReturnStatement", "2F" );
488
+ register_error_class( "2F005", klass );
489
+ }
490
+ {
491
+ VALUE klass = define_error_class( "SREModifyingSqlDataNotPermitted", "2F" );
492
+ register_error_class( "2F002", klass );
493
+ }
494
+ {
495
+ VALUE klass = define_error_class( "SREProhibitedSqlStatementAttempted", "2F" );
496
+ register_error_class( "2F003", klass );
497
+ }
498
+ {
499
+ VALUE klass = define_error_class( "SREReadingSqlDataNotPermitted", "2F" );
500
+ register_error_class( "2F004", klass );
501
+ }
502
+ {
503
+ VALUE klass = define_error_class( "InvalidCursorName", NULL );
504
+ register_error_class( "34000", klass );
505
+ register_error_class( "34", klass );
506
+ }
507
+ {
508
+ VALUE klass = define_error_class( "ExternalRoutineException", NULL );
509
+ register_error_class( "38000", klass );
510
+ register_error_class( "38", klass );
511
+ }
512
+ {
513
+ VALUE klass = define_error_class( "EREContainingSqlNotPermitted", "38" );
514
+ register_error_class( "38001", klass );
515
+ }
516
+ {
517
+ VALUE klass = define_error_class( "EREModifyingSqlDataNotPermitted", "38" );
518
+ register_error_class( "38002", klass );
519
+ }
520
+ {
521
+ VALUE klass = define_error_class( "EREProhibitedSqlStatementAttempted", "38" );
522
+ register_error_class( "38003", klass );
523
+ }
524
+ {
525
+ VALUE klass = define_error_class( "EREReadingSqlDataNotPermitted", "38" );
526
+ register_error_class( "38004", klass );
527
+ }
528
+ {
529
+ VALUE klass = define_error_class( "ExternalRoutineInvocationException", NULL );
530
+ register_error_class( "39000", klass );
531
+ register_error_class( "39", klass );
532
+ }
533
+ {
534
+ VALUE klass = define_error_class( "ERIEInvalidSqlstateReturned", "39" );
535
+ register_error_class( "39001", klass );
536
+ }
537
+ {
538
+ VALUE klass = define_error_class( "ERIENullValueNotAllowed", "39" );
539
+ register_error_class( "39004", klass );
540
+ }
541
+ {
542
+ VALUE klass = define_error_class( "ERIETriggerProtocolViolated", "39" );
543
+ register_error_class( "39P01", klass );
544
+ }
545
+ {
546
+ VALUE klass = define_error_class( "ERIESrfProtocolViolated", "39" );
547
+ register_error_class( "39P02", klass );
548
+ }
549
+ {
550
+ VALUE klass = define_error_class( "ERIEEventTriggerProtocolViolated", "39" );
551
+ register_error_class( "39P03", klass );
552
+ }
553
+ {
554
+ VALUE klass = define_error_class( "SavepointException", NULL );
555
+ register_error_class( "3B000", klass );
556
+ register_error_class( "3B", klass );
557
+ }
558
+ {
559
+ VALUE klass = define_error_class( "SEInvalidSpecification", "3B" );
560
+ register_error_class( "3B001", klass );
561
+ }
562
+ {
563
+ VALUE klass = define_error_class( "InvalidCatalogName", NULL );
564
+ register_error_class( "3D000", klass );
565
+ register_error_class( "3D", klass );
566
+ }
567
+ {
568
+ VALUE klass = define_error_class( "InvalidSchemaName", NULL );
569
+ register_error_class( "3F000", klass );
570
+ register_error_class( "3F", klass );
571
+ }
572
+ {
573
+ VALUE klass = define_error_class( "TransactionRollback", NULL );
574
+ register_error_class( "40000", klass );
575
+ register_error_class( "40", klass );
576
+ }
577
+ {
578
+ VALUE klass = define_error_class( "TRIntegrityConstraintViolation", "40" );
579
+ register_error_class( "40002", klass );
580
+ }
581
+ {
582
+ VALUE klass = define_error_class( "TRSerializationFailure", "40" );
583
+ register_error_class( "40001", klass );
584
+ }
585
+ {
586
+ VALUE klass = define_error_class( "TRStatementCompletionUnknown", "40" );
587
+ register_error_class( "40003", klass );
588
+ }
589
+ {
590
+ VALUE klass = define_error_class( "TRDeadlockDetected", "40" );
591
+ register_error_class( "40P01", klass );
592
+ }
593
+ {
594
+ VALUE klass = define_error_class( "SyntaxErrorOrAccessRuleViolation", NULL );
595
+ register_error_class( "42000", klass );
596
+ register_error_class( "42", klass );
597
+ }
598
+ {
599
+ VALUE klass = define_error_class( "SyntaxError", "42" );
600
+ register_error_class( "42601", klass );
601
+ }
602
+ {
603
+ VALUE klass = define_error_class( "InsufficientPrivilege", "42" );
604
+ register_error_class( "42501", klass );
605
+ }
606
+ {
607
+ VALUE klass = define_error_class( "CannotCoerce", "42" );
608
+ register_error_class( "42846", klass );
609
+ }
610
+ {
611
+ VALUE klass = define_error_class( "GroupingError", "42" );
612
+ register_error_class( "42803", klass );
613
+ }
614
+ {
615
+ VALUE klass = define_error_class( "WindowingError", "42" );
616
+ register_error_class( "42P20", klass );
617
+ }
618
+ {
619
+ VALUE klass = define_error_class( "InvalidRecursion", "42" );
620
+ register_error_class( "42P19", klass );
621
+ }
622
+ {
623
+ VALUE klass = define_error_class( "InvalidForeignKey", "42" );
624
+ register_error_class( "42830", klass );
625
+ }
626
+ {
627
+ VALUE klass = define_error_class( "InvalidName", "42" );
628
+ register_error_class( "42602", klass );
629
+ }
630
+ {
631
+ VALUE klass = define_error_class( "NameTooLong", "42" );
632
+ register_error_class( "42622", klass );
633
+ }
634
+ {
635
+ VALUE klass = define_error_class( "ReservedName", "42" );
636
+ register_error_class( "42939", klass );
637
+ }
638
+ {
639
+ VALUE klass = define_error_class( "DatatypeMismatch", "42" );
640
+ register_error_class( "42804", klass );
641
+ }
642
+ {
643
+ VALUE klass = define_error_class( "IndeterminateDatatype", "42" );
644
+ register_error_class( "42P18", klass );
645
+ }
646
+ {
647
+ VALUE klass = define_error_class( "CollationMismatch", "42" );
648
+ register_error_class( "42P21", klass );
649
+ }
650
+ {
651
+ VALUE klass = define_error_class( "IndeterminateCollation", "42" );
652
+ register_error_class( "42P22", klass );
653
+ }
654
+ {
655
+ VALUE klass = define_error_class( "WrongObjectType", "42" );
656
+ register_error_class( "42809", klass );
657
+ }
658
+ {
659
+ VALUE klass = define_error_class( "GeneratedAlways", "42" );
660
+ register_error_class( "428C9", klass );
661
+ }
662
+ {
663
+ VALUE klass = define_error_class( "UndefinedColumn", "42" );
664
+ register_error_class( "42703", klass );
665
+ }
666
+ {
667
+ VALUE klass = define_error_class( "UndefinedFunction", "42" );
668
+ register_error_class( "42883", klass );
669
+ }
670
+ {
671
+ VALUE klass = define_error_class( "UndefinedTable", "42" );
672
+ register_error_class( "42P01", klass );
673
+ }
674
+ {
675
+ VALUE klass = define_error_class( "UndefinedParameter", "42" );
676
+ register_error_class( "42P02", klass );
677
+ }
678
+ {
679
+ VALUE klass = define_error_class( "UndefinedObject", "42" );
680
+ register_error_class( "42704", klass );
681
+ }
682
+ {
683
+ VALUE klass = define_error_class( "DuplicateColumn", "42" );
684
+ register_error_class( "42701", klass );
685
+ }
686
+ {
687
+ VALUE klass = define_error_class( "DuplicateCursor", "42" );
688
+ register_error_class( "42P03", klass );
689
+ }
690
+ {
691
+ VALUE klass = define_error_class( "DuplicateDatabase", "42" );
692
+ register_error_class( "42P04", klass );
693
+ }
694
+ {
695
+ VALUE klass = define_error_class( "DuplicateFunction", "42" );
696
+ register_error_class( "42723", klass );
697
+ }
698
+ {
699
+ VALUE klass = define_error_class( "DuplicatePstatement", "42" );
700
+ register_error_class( "42P05", klass );
701
+ }
702
+ {
703
+ VALUE klass = define_error_class( "DuplicateSchema", "42" );
704
+ register_error_class( "42P06", klass );
705
+ }
706
+ {
707
+ VALUE klass = define_error_class( "DuplicateTable", "42" );
708
+ register_error_class( "42P07", klass );
709
+ }
710
+ {
711
+ VALUE klass = define_error_class( "DuplicateAlias", "42" );
712
+ register_error_class( "42712", klass );
713
+ }
714
+ {
715
+ VALUE klass = define_error_class( "DuplicateObject", "42" );
716
+ register_error_class( "42710", klass );
717
+ }
718
+ {
719
+ VALUE klass = define_error_class( "AmbiguousColumn", "42" );
720
+ register_error_class( "42702", klass );
721
+ }
722
+ {
723
+ VALUE klass = define_error_class( "AmbiguousFunction", "42" );
724
+ register_error_class( "42725", klass );
725
+ }
726
+ {
727
+ VALUE klass = define_error_class( "AmbiguousParameter", "42" );
728
+ register_error_class( "42P08", klass );
729
+ }
730
+ {
731
+ VALUE klass = define_error_class( "AmbiguousAlias", "42" );
732
+ register_error_class( "42P09", klass );
733
+ }
734
+ {
735
+ VALUE klass = define_error_class( "InvalidColumnReference", "42" );
736
+ register_error_class( "42P10", klass );
737
+ }
738
+ {
739
+ VALUE klass = define_error_class( "InvalidColumnDefinition", "42" );
740
+ register_error_class( "42611", klass );
741
+ }
742
+ {
743
+ VALUE klass = define_error_class( "InvalidCursorDefinition", "42" );
744
+ register_error_class( "42P11", klass );
745
+ }
746
+ {
747
+ VALUE klass = define_error_class( "InvalidDatabaseDefinition", "42" );
748
+ register_error_class( "42P12", klass );
749
+ }
750
+ {
751
+ VALUE klass = define_error_class( "InvalidFunctionDefinition", "42" );
752
+ register_error_class( "42P13", klass );
753
+ }
754
+ {
755
+ VALUE klass = define_error_class( "InvalidPstatementDefinition", "42" );
756
+ register_error_class( "42P14", klass );
757
+ }
758
+ {
759
+ VALUE klass = define_error_class( "InvalidSchemaDefinition", "42" );
760
+ register_error_class( "42P15", klass );
761
+ }
762
+ {
763
+ VALUE klass = define_error_class( "InvalidTableDefinition", "42" );
764
+ register_error_class( "42P16", klass );
765
+ }
766
+ {
767
+ VALUE klass = define_error_class( "InvalidObjectDefinition", "42" );
768
+ register_error_class( "42P17", klass );
769
+ }
770
+ {
771
+ VALUE klass = define_error_class( "WithCheckOptionViolation", NULL );
772
+ register_error_class( "44000", klass );
773
+ register_error_class( "44", klass );
774
+ }
775
+ {
776
+ VALUE klass = define_error_class( "InsufficientResources", NULL );
777
+ register_error_class( "53000", klass );
778
+ register_error_class( "53", klass );
779
+ }
780
+ {
781
+ VALUE klass = define_error_class( "DiskFull", "53" );
782
+ register_error_class( "53100", klass );
783
+ }
784
+ {
785
+ VALUE klass = define_error_class( "OutOfMemory", "53" );
786
+ register_error_class( "53200", klass );
787
+ }
788
+ {
789
+ VALUE klass = define_error_class( "TooManyConnections", "53" );
790
+ register_error_class( "53300", klass );
791
+ }
792
+ {
793
+ VALUE klass = define_error_class( "ConfigurationLimitExceeded", "53" );
794
+ register_error_class( "53400", klass );
795
+ }
796
+ {
797
+ VALUE klass = define_error_class( "ProgramLimitExceeded", NULL );
798
+ register_error_class( "54000", klass );
799
+ register_error_class( "54", klass );
800
+ }
801
+ {
802
+ VALUE klass = define_error_class( "StatementTooComplex", "54" );
803
+ register_error_class( "54001", klass );
804
+ }
805
+ {
806
+ VALUE klass = define_error_class( "TooManyColumns", "54" );
807
+ register_error_class( "54011", klass );
808
+ }
809
+ {
810
+ VALUE klass = define_error_class( "TooManyArguments", "54" );
811
+ register_error_class( "54023", klass );
812
+ }
813
+ {
814
+ VALUE klass = define_error_class( "ObjectNotInPrerequisiteState", NULL );
815
+ register_error_class( "55000", klass );
816
+ register_error_class( "55", klass );
817
+ }
818
+ {
819
+ VALUE klass = define_error_class( "ObjectInUse", "55" );
820
+ register_error_class( "55006", klass );
821
+ }
822
+ {
823
+ VALUE klass = define_error_class( "CantChangeRuntimeParam", "55" );
824
+ register_error_class( "55P02", klass );
825
+ }
826
+ {
827
+ VALUE klass = define_error_class( "LockNotAvailable", "55" );
828
+ register_error_class( "55P03", klass );
829
+ }
830
+ {
831
+ VALUE klass = define_error_class( "UnsafeNewEnumValueUsage", "55" );
832
+ register_error_class( "55P04", klass );
833
+ }
834
+ {
835
+ VALUE klass = define_error_class( "OperatorIntervention", NULL );
836
+ register_error_class( "57000", klass );
837
+ register_error_class( "57", klass );
838
+ }
839
+ {
840
+ VALUE klass = define_error_class( "QueryCanceled", "57" );
841
+ register_error_class( "57014", klass );
842
+ }
843
+ {
844
+ VALUE klass = define_error_class( "AdminShutdown", "57" );
845
+ register_error_class( "57P01", klass );
846
+ }
847
+ {
848
+ VALUE klass = define_error_class( "CrashShutdown", "57" );
849
+ register_error_class( "57P02", klass );
850
+ }
851
+ {
852
+ VALUE klass = define_error_class( "CannotConnectNow", "57" );
853
+ register_error_class( "57P03", klass );
854
+ }
855
+ {
856
+ VALUE klass = define_error_class( "DatabaseDropped", "57" );
857
+ register_error_class( "57P04", klass );
858
+ }
859
+ {
860
+ VALUE klass = define_error_class( "SystemError", NULL );
861
+ register_error_class( "58000", klass );
862
+ register_error_class( "58", klass );
863
+ }
864
+ {
865
+ VALUE klass = define_error_class( "IoError", "58" );
866
+ register_error_class( "58030", klass );
867
+ }
868
+ {
869
+ VALUE klass = define_error_class( "UndefinedFile", "58" );
870
+ register_error_class( "58P01", klass );
871
+ }
872
+ {
873
+ VALUE klass = define_error_class( "DuplicateFile", "58" );
874
+ register_error_class( "58P02", klass );
875
+ }
876
+ {
877
+ VALUE klass = define_error_class( "SnapshotTooOld", NULL );
878
+ register_error_class( "72000", klass );
879
+ register_error_class( "72", klass );
880
+ }
881
+ {
882
+ VALUE klass = define_error_class( "ConfigFileError", NULL );
883
+ register_error_class( "F0000", klass );
884
+ register_error_class( "F0", klass );
885
+ }
886
+ {
887
+ VALUE klass = define_error_class( "LockFileExists", "F0" );
888
+ register_error_class( "F0001", klass );
889
+ }
890
+ {
891
+ VALUE klass = define_error_class( "FdwError", NULL );
892
+ register_error_class( "HV000", klass );
893
+ register_error_class( "HV", klass );
894
+ }
895
+ {
896
+ VALUE klass = define_error_class( "FdwColumnNameNotFound", "HV" );
897
+ register_error_class( "HV005", klass );
898
+ }
899
+ {
900
+ VALUE klass = define_error_class( "FdwDynamicParameterValueNeeded", "HV" );
901
+ register_error_class( "HV002", klass );
902
+ }
903
+ {
904
+ VALUE klass = define_error_class( "FdwFunctionSequenceError", "HV" );
905
+ register_error_class( "HV010", klass );
906
+ }
907
+ {
908
+ VALUE klass = define_error_class( "FdwInconsistentDescriptorInformation", "HV" );
909
+ register_error_class( "HV021", klass );
910
+ }
911
+ {
912
+ VALUE klass = define_error_class( "FdwInvalidAttributeValue", "HV" );
913
+ register_error_class( "HV024", klass );
914
+ }
915
+ {
916
+ VALUE klass = define_error_class( "FdwInvalidColumnName", "HV" );
917
+ register_error_class( "HV007", klass );
918
+ }
919
+ {
920
+ VALUE klass = define_error_class( "FdwInvalidColumnNumber", "HV" );
921
+ register_error_class( "HV008", klass );
922
+ }
923
+ {
924
+ VALUE klass = define_error_class( "FdwInvalidDataType", "HV" );
925
+ register_error_class( "HV004", klass );
926
+ }
927
+ {
928
+ VALUE klass = define_error_class( "FdwInvalidDataTypeDescriptors", "HV" );
929
+ register_error_class( "HV006", klass );
930
+ }
931
+ {
932
+ VALUE klass = define_error_class( "FdwInvalidDescriptorFieldIdentifier", "HV" );
933
+ register_error_class( "HV091", klass );
934
+ }
935
+ {
936
+ VALUE klass = define_error_class( "FdwInvalidHandle", "HV" );
937
+ register_error_class( "HV00B", klass );
938
+ }
939
+ {
940
+ VALUE klass = define_error_class( "FdwInvalidOptionIndex", "HV" );
941
+ register_error_class( "HV00C", klass );
942
+ }
943
+ {
944
+ VALUE klass = define_error_class( "FdwInvalidOptionName", "HV" );
945
+ register_error_class( "HV00D", klass );
946
+ }
947
+ {
948
+ VALUE klass = define_error_class( "FdwInvalidStringLengthOrBufferLength", "HV" );
949
+ register_error_class( "HV090", klass );
950
+ }
951
+ {
952
+ VALUE klass = define_error_class( "FdwInvalidStringFormat", "HV" );
953
+ register_error_class( "HV00A", klass );
954
+ }
955
+ {
956
+ VALUE klass = define_error_class( "FdwInvalidUseOfNullPointer", "HV" );
957
+ register_error_class( "HV009", klass );
958
+ }
959
+ {
960
+ VALUE klass = define_error_class( "FdwTooManyHandles", "HV" );
961
+ register_error_class( "HV014", klass );
962
+ }
963
+ {
964
+ VALUE klass = define_error_class( "FdwOutOfMemory", "HV" );
965
+ register_error_class( "HV001", klass );
966
+ }
967
+ {
968
+ VALUE klass = define_error_class( "FdwNoSchemas", "HV" );
969
+ register_error_class( "HV00P", klass );
970
+ }
971
+ {
972
+ VALUE klass = define_error_class( "FdwOptionNameNotFound", "HV" );
973
+ register_error_class( "HV00J", klass );
974
+ }
975
+ {
976
+ VALUE klass = define_error_class( "FdwReplyHandle", "HV" );
977
+ register_error_class( "HV00K", klass );
978
+ }
979
+ {
980
+ VALUE klass = define_error_class( "FdwSchemaNotFound", "HV" );
981
+ register_error_class( "HV00Q", klass );
982
+ }
983
+ {
984
+ VALUE klass = define_error_class( "FdwTableNotFound", "HV" );
985
+ register_error_class( "HV00R", klass );
986
+ }
987
+ {
988
+ VALUE klass = define_error_class( "FdwUnableToCreateExecution", "HV" );
989
+ register_error_class( "HV00L", klass );
990
+ }
991
+ {
992
+ VALUE klass = define_error_class( "FdwUnableToCreateReply", "HV" );
993
+ register_error_class( "HV00M", klass );
994
+ }
995
+ {
996
+ VALUE klass = define_error_class( "FdwUnableToEstablishConnection", "HV" );
997
+ register_error_class( "HV00N", klass );
998
+ }
999
+ {
1000
+ VALUE klass = define_error_class( "PlpgsqlError", NULL );
1001
+ register_error_class( "P0000", klass );
1002
+ register_error_class( "P0", klass );
1003
+ }
1004
+ {
1005
+ VALUE klass = define_error_class( "RaiseException", "P0" );
1006
+ register_error_class( "P0001", klass );
1007
+ }
1008
+ {
1009
+ VALUE klass = define_error_class( "NoDataFound", "P0" );
1010
+ register_error_class( "P0002", klass );
1011
+ }
1012
+ {
1013
+ VALUE klass = define_error_class( "TooManyRows", "P0" );
1014
+ register_error_class( "P0003", klass );
1015
+ }
1016
+ {
1017
+ VALUE klass = define_error_class( "AssertFailure", "P0" );
1018
+ register_error_class( "P0004", klass );
1019
+ }
1020
+ {
1021
+ VALUE klass = define_error_class( "InternalError", NULL );
1022
+ register_error_class( "XX000", klass );
1023
+ register_error_class( "XX", klass );
1024
+ }
1025
+ {
1026
+ VALUE klass = define_error_class( "DataCorrupted", "XX" );
1027
+ register_error_class( "XX001", klass );
1028
+ }
1029
+ {
1030
+ VALUE klass = define_error_class( "IndexCorrupted", "XX" );
1031
+ register_error_class( "XX002", klass );
1032
+ }