pg 1.1.3 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.appveyor.yml +36 -0
- data/.gems +6 -0
- data/.github/workflows/binary-gems.yml +86 -0
- data/.github/workflows/source-gem.yml +129 -0
- data/.gitignore +13 -0
- data/.hgsigs +34 -0
- data/.hgtags +41 -0
- data/.irbrc +23 -0
- data/.pryrc +23 -0
- data/.tm_properties +21 -0
- data/.travis.yml +49 -0
- data/Gemfile +14 -0
- data/History.rdoc +291 -6
- data/Manifest.txt +3 -3
- data/README-Windows.rdoc +4 -4
- data/README.ja.rdoc +1 -2
- data/README.rdoc +51 -15
- data/Rakefile +31 -140
- data/Rakefile.cross +60 -56
- data/certs/ged.pem +24 -0
- data/certs/larskanis-2022.pem +26 -0
- data/ext/errorcodes.def +76 -0
- data/ext/errorcodes.rb +0 -0
- data/ext/errorcodes.txt +21 -2
- data/ext/extconf.rb +101 -26
- data/ext/gvl_wrappers.c +4 -0
- data/ext/gvl_wrappers.h +23 -0
- data/ext/pg.c +190 -122
- data/ext/pg.h +43 -17
- data/ext/pg_binary_decoder.c +20 -16
- data/ext/pg_binary_encoder.c +13 -12
- data/ext/pg_coder.c +95 -29
- data/ext/pg_connection.c +1214 -919
- data/ext/pg_copy_coder.c +50 -18
- data/ext/pg_record_coder.c +521 -0
- data/ext/pg_result.c +344 -153
- data/ext/pg_text_decoder.c +15 -9
- data/ext/pg_text_encoder.c +185 -53
- data/ext/pg_tuple.c +63 -35
- data/ext/pg_type_map.c +42 -9
- data/ext/pg_type_map_all_strings.c +19 -5
- data/ext/pg_type_map_by_class.c +54 -24
- data/ext/pg_type_map_by_column.c +73 -34
- data/ext/pg_type_map_by_mri_type.c +48 -19
- data/ext/pg_type_map_by_oid.c +55 -25
- data/ext/pg_type_map_in_ruby.c +51 -20
- data/ext/{util.c → pg_util.c} +7 -7
- data/ext/{util.h → pg_util.h} +0 -0
- data/lib/pg/basic_type_map_based_on_result.rb +47 -0
- data/lib/pg/basic_type_map_for_queries.rb +193 -0
- data/lib/pg/basic_type_map_for_results.rb +81 -0
- data/lib/pg/basic_type_registry.rb +301 -0
- data/lib/pg/binary_decoder.rb +1 -0
- data/lib/pg/coder.rb +23 -2
- data/lib/pg/connection.rb +669 -71
- data/lib/pg/constants.rb +1 -0
- data/lib/pg/exceptions.rb +8 -1
- data/lib/pg/result.rb +13 -1
- data/lib/pg/text_decoder.rb +2 -3
- data/lib/pg/text_encoder.rb +8 -18
- data/lib/pg/type_map_by_column.rb +2 -1
- data/lib/pg/version.rb +4 -0
- data/lib/pg.rb +48 -33
- data/misc/openssl-pg-segfault.rb +31 -0
- data/misc/postgres/History.txt +9 -0
- data/misc/postgres/Manifest.txt +5 -0
- data/misc/postgres/README.txt +21 -0
- data/misc/postgres/Rakefile +21 -0
- data/misc/postgres/lib/postgres.rb +16 -0
- data/misc/ruby-pg/History.txt +9 -0
- data/misc/ruby-pg/Manifest.txt +5 -0
- data/misc/ruby-pg/README.txt +21 -0
- data/misc/ruby-pg/Rakefile +21 -0
- data/misc/ruby-pg/lib/ruby/pg.rb +16 -0
- data/pg.gemspec +32 -0
- data/rakelib/task_extension.rb +46 -0
- data/sample/array_insert.rb +20 -0
- data/sample/async_api.rb +102 -0
- data/sample/async_copyto.rb +39 -0
- data/sample/async_mixed.rb +56 -0
- data/sample/check_conn.rb +21 -0
- data/sample/copydata.rb +71 -0
- data/sample/copyfrom.rb +81 -0
- data/sample/copyto.rb +19 -0
- data/sample/cursor.rb +21 -0
- data/sample/disk_usage_report.rb +177 -0
- data/sample/issue-119.rb +94 -0
- data/sample/losample.rb +69 -0
- data/sample/minimal-testcase.rb +17 -0
- data/sample/notify_wait.rb +72 -0
- data/sample/pg_statistics.rb +285 -0
- data/sample/replication_monitor.rb +222 -0
- data/sample/test_binary_values.rb +33 -0
- data/sample/wal_shipper.rb +434 -0
- data/sample/warehouse_partitions.rb +311 -0
- data.tar.gz.sig +0 -0
- metadata +94 -237
- metadata.gz.sig +0 -0
- data/ChangeLog +0 -6595
- data/lib/pg/basic_type_mapping.rb +0 -459
- data/spec/data/expected_trace.out +0 -26
- data/spec/data/random_binary_data +0 -0
- data/spec/helpers.rb +0 -381
- data/spec/pg/basic_type_mapping_spec.rb +0 -508
- data/spec/pg/connection_spec.rb +0 -1849
- data/spec/pg/connection_sync_spec.rb +0 -41
- data/spec/pg/result_spec.rb +0 -491
- data/spec/pg/tuple_spec.rb +0 -280
- data/spec/pg/type_map_by_class_spec.rb +0 -138
- data/spec/pg/type_map_by_column_spec.rb +0 -222
- data/spec/pg/type_map_by_mri_type_spec.rb +0 -136
- data/spec/pg/type_map_by_oid_spec.rb +0 -149
- data/spec/pg/type_map_in_ruby_spec.rb +0 -164
- data/spec/pg/type_map_spec.rb +0 -22
- data/spec/pg/type_spec.rb +0 -949
- data/spec/pg_spec.rb +0 -50
data/Rakefile
CHANGED
|
@@ -3,20 +3,11 @@
|
|
|
3
3
|
require 'rbconfig'
|
|
4
4
|
require 'pathname'
|
|
5
5
|
require 'tmpdir'
|
|
6
|
-
|
|
7
|
-
begin
|
|
8
|
-
require 'rake/extensiontask'
|
|
9
|
-
rescue LoadError
|
|
10
|
-
abort "This Rakefile requires rake-compiler (gem install rake-compiler)"
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
begin
|
|
14
|
-
require 'hoe'
|
|
15
|
-
rescue LoadError
|
|
16
|
-
abort "This Rakefile requires hoe (gem install hoe)"
|
|
17
|
-
end
|
|
18
|
-
|
|
6
|
+
require 'rake/extensiontask'
|
|
19
7
|
require 'rake/clean'
|
|
8
|
+
require 'rspec/core/rake_task'
|
|
9
|
+
require 'bundler'
|
|
10
|
+
require 'bundler/gem_helper'
|
|
20
11
|
|
|
21
12
|
# Build directory constants
|
|
22
13
|
BASEDIR = Pathname( __FILE__ ).dirname
|
|
@@ -25,80 +16,23 @@ LIBDIR = BASEDIR + 'lib'
|
|
|
25
16
|
EXTDIR = BASEDIR + 'ext'
|
|
26
17
|
PKGDIR = BASEDIR + 'pkg'
|
|
27
18
|
TMPDIR = BASEDIR + 'tmp'
|
|
19
|
+
TESTDIR = BASEDIR + "tmp_test_specs"
|
|
28
20
|
|
|
29
21
|
DLEXT = RbConfig::CONFIG['DLEXT']
|
|
30
22
|
EXT = LIBDIR + "pg_ext.#{DLEXT}"
|
|
31
23
|
|
|
32
24
|
GEMSPEC = 'pg.gemspec'
|
|
33
25
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
CLOBBER.include( TEST_DIRECTORY.to_s )
|
|
26
|
+
CLOBBER.include( TESTDIR.to_s )
|
|
37
27
|
CLEAN.include( PKGDIR.to_s, TMPDIR.to_s )
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
Hoe.plugin :signing
|
|
42
|
-
Hoe.plugin :deveiate
|
|
43
|
-
Hoe.plugin :bundler
|
|
44
|
-
|
|
45
|
-
Hoe.plugins.delete :rubyforge
|
|
46
|
-
Hoe.plugins.delete :compiler
|
|
28
|
+
CLEAN.include "lib/*/libpq.dll"
|
|
29
|
+
CLEAN.include "lib/pg_ext.*"
|
|
30
|
+
CLEAN.include "lib/pg/postgresql_lib_path.rb"
|
|
47
31
|
|
|
48
32
|
load 'Rakefile.cross'
|
|
49
33
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
$hoespec = Hoe.spec 'pg' do
|
|
53
|
-
self.readme_file = 'README.rdoc'
|
|
54
|
-
self.history_file = 'History.rdoc'
|
|
55
|
-
self.extra_rdoc_files = Rake::FileList[ '*.rdoc' ]
|
|
56
|
-
self.extra_rdoc_files.include( 'POSTGRES', 'LICENSE' )
|
|
57
|
-
self.extra_rdoc_files.include( 'ext/*.c' )
|
|
58
|
-
self.license 'BSD-3-Clause'
|
|
59
|
-
|
|
60
|
-
self.developer 'Michael Granger', 'ged@FaerieMUD.org'
|
|
61
|
-
self.developer 'Lars Kanis', 'lars@greiz-reinsdorf.de'
|
|
62
|
-
|
|
63
|
-
self.dependency 'rake-compiler', '~> 1.0', :developer
|
|
64
|
-
self.dependency 'rake-compiler-dock', ['~> 0.6', '>= 0.6.2'], :developer
|
|
65
|
-
self.dependency 'hoe-deveiate', '~> 0.9', :developer
|
|
66
|
-
self.dependency 'hoe-bundler', '~> 1.0', :developer
|
|
67
|
-
self.dependency 'rspec', '~> 3.5', :developer
|
|
68
|
-
self.dependency 'rdoc', '~> 5.1', :developer
|
|
69
|
-
|
|
70
|
-
self.spec_extras[:extensions] = [ 'ext/extconf.rb' ]
|
|
71
|
-
|
|
72
|
-
self.require_ruby_version( '>= 2.0.0' )
|
|
73
|
-
|
|
74
|
-
self.hg_sign_tags = true if self.respond_to?( :hg_sign_tags= )
|
|
75
|
-
self.check_history_on_release = true if self.respond_to?( :check_history_on_release= )
|
|
76
|
-
|
|
77
|
-
self.rdoc_locations << "deveiate:/usr/local/www/public/code/#{remote_rdoc_dir}"
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
ENV['VERSION'] ||= $hoespec.spec.version.to_s
|
|
81
|
-
|
|
82
|
-
# Tests should pass before checking in
|
|
83
|
-
task 'hg:precheckin' => [ :check_history, :check_manifest, :spec, :gemspec ]
|
|
84
|
-
|
|
85
|
-
# Support for 'rvm specs'
|
|
86
|
-
task :specs => :spec
|
|
87
|
-
|
|
88
|
-
# Compile before testing
|
|
89
|
-
task :spec => :compile
|
|
90
|
-
|
|
91
|
-
# gem-testers support
|
|
92
|
-
task :test do
|
|
93
|
-
# rake-compiler always wants to copy the compiled extension into lib/, but
|
|
94
|
-
# we don't want testers to have to re-compile, especially since that
|
|
95
|
-
# often fails because they can't (and shouldn't have to) write to tmp/ in
|
|
96
|
-
# the installed gem dir. So we clear the task rake-compiler set up
|
|
97
|
-
# to break the dependency between :spec and :compile when running under
|
|
98
|
-
# rubygems-test, and then run :spec.
|
|
99
|
-
Rake::Task[ EXT.to_s ].clear if File.exist?(EXT.to_s)
|
|
100
|
-
Rake::Task[ :spec ].execute
|
|
101
|
-
end
|
|
34
|
+
Bundler::GemHelper.install_tasks
|
|
35
|
+
$gem_spec = Bundler.load_gemspec(GEMSPEC)
|
|
102
36
|
|
|
103
37
|
desc "Turn on warnings and debugging in the build."
|
|
104
38
|
task :maint do
|
|
@@ -108,12 +42,12 @@ end
|
|
|
108
42
|
# Rake-compiler task
|
|
109
43
|
Rake::ExtensionTask.new do |ext|
|
|
110
44
|
ext.name = 'pg_ext'
|
|
111
|
-
ext.gem_spec = $
|
|
45
|
+
ext.gem_spec = $gem_spec
|
|
112
46
|
ext.ext_dir = 'ext'
|
|
113
47
|
ext.lib_dir = 'lib'
|
|
114
48
|
ext.source_pattern = "*.{c,h}"
|
|
115
49
|
ext.cross_compile = true
|
|
116
|
-
ext.cross_platform = CrossLibraries.map
|
|
50
|
+
ext.cross_platform = CrossLibraries.map(&:for_platform)
|
|
117
51
|
|
|
118
52
|
ext.cross_config_options += CrossLibraries.map do |lib|
|
|
119
53
|
{
|
|
@@ -129,62 +63,36 @@ Rake::ExtensionTask.new do |ext|
|
|
|
129
63
|
|
|
130
64
|
# Add libpq.dll to windows binary gemspec
|
|
131
65
|
ext.cross_compiling do |spec|
|
|
132
|
-
spec.files << "lib/libpq.dll"
|
|
66
|
+
spec.files << "lib/#{spec.platform}/libpq.dll"
|
|
133
67
|
end
|
|
134
68
|
end
|
|
135
69
|
|
|
70
|
+
RSpec::Core::RakeTask.new(:spec).rspec_opts = "--profile -cfdoc"
|
|
71
|
+
task :test => :spec
|
|
136
72
|
|
|
137
73
|
# Use the fivefish formatter for docs generated from development checkout
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
rdoc.title = "PG: The Ruby PostgreSQL Driver"
|
|
147
|
-
rdoc.rdoc_dir = 'doc'
|
|
148
|
-
end
|
|
74
|
+
require 'rdoc/task'
|
|
75
|
+
|
|
76
|
+
RDoc::Task.new( 'docs' ) do |rdoc|
|
|
77
|
+
rdoc.main = "README.rdoc"
|
|
78
|
+
rdoc.rdoc_files.include( "*.rdoc", "lib/**/*.rb", 'ext/**/*.{c,h}' )
|
|
79
|
+
rdoc.generator = :fivefish
|
|
80
|
+
rdoc.title = "PG: The Ruby PostgreSQL Driver"
|
|
81
|
+
rdoc.rdoc_dir = 'doc'
|
|
149
82
|
end
|
|
150
83
|
|
|
84
|
+
desc "Build the source gem #{$gem_spec.full_name}.gem into the pkg directory"
|
|
85
|
+
task :gem => :build
|
|
151
86
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
Rake::Task["ChangeLog"].clear
|
|
157
|
-
file 'ChangeLog' do |task|
|
|
158
|
-
if File.exist?('.hg/branch')
|
|
159
|
-
$stderr.puts "Updating the changelog..."
|
|
160
|
-
begin
|
|
161
|
-
include Hoe::MercurialHelpers
|
|
162
|
-
content = make_changelog()
|
|
163
|
-
rescue NameError
|
|
164
|
-
abort "Packaging tasks require the hoe-mercurial plugin (gem install hoe-mercurial)"
|
|
165
|
-
end
|
|
166
|
-
File.open( task.name, 'w', 0644 ) do |fh|
|
|
167
|
-
fh.print( content )
|
|
168
|
-
end
|
|
169
|
-
else
|
|
170
|
-
touch 'ChangeLog'
|
|
171
|
-
end
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
# Rebuild the ChangeLog immediately before release
|
|
175
|
-
task :prerelease => 'ChangeLog'
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
desc "Stop any Postmaster instances that remain after testing."
|
|
179
|
-
task :cleanup_testing_dbs do
|
|
180
|
-
require 'spec/lib/helpers'
|
|
181
|
-
PgTestingHelpers.stop_existing_postmasters()
|
|
182
|
-
Rake::Task[:clean].invoke
|
|
87
|
+
task :clobber do
|
|
88
|
+
puts "Stop any Postmaster instances that remain after testing."
|
|
89
|
+
require_relative 'spec/helpers'
|
|
90
|
+
PG::TestingHelpers.stop_existing_postmasters()
|
|
183
91
|
end
|
|
184
92
|
|
|
185
93
|
desc "Update list of server error codes"
|
|
186
94
|
task :update_error_codes do
|
|
187
|
-
URL_ERRORCODES_TXT = "http://git.postgresql.org/gitweb/?p=postgresql.git;a=blob_plain;f=src/backend/utils/errcodes.txt;hb=refs/tags/
|
|
95
|
+
URL_ERRORCODES_TXT = "http://git.postgresql.org/gitweb/?p=postgresql.git;a=blob_plain;f=src/backend/utils/errcodes.txt;hb=refs/tags/REL_14_0"
|
|
188
96
|
|
|
189
97
|
ERRORCODES_TXT = "ext/errorcodes.txt"
|
|
190
98
|
sh "wget #{URL_ERRORCODES_TXT.inspect} -O #{ERRORCODES_TXT.inspect} || curl #{URL_ERRORCODES_TXT.inspect} -o #{ERRORCODES_TXT.inspect}"
|
|
@@ -196,20 +104,3 @@ file 'ext/pg_errors.c' => ['ext/errorcodes.def'] do
|
|
|
196
104
|
# trigger compilation of changed errorcodes.def
|
|
197
105
|
touch 'ext/pg_errors.c'
|
|
198
106
|
end
|
|
199
|
-
|
|
200
|
-
task :gemspec => GEMSPEC
|
|
201
|
-
file GEMSPEC => __FILE__
|
|
202
|
-
task GEMSPEC do |task|
|
|
203
|
-
spec = $hoespec.spec
|
|
204
|
-
spec.files.delete( '.gemtest' )
|
|
205
|
-
spec.signing_key = nil
|
|
206
|
-
spec.version = "#{spec.version.bump}.0.pre#{Time.now.strftime("%Y%m%d%H%M%S")}"
|
|
207
|
-
spec.cert_chain = [ 'certs/ged.pem' ]
|
|
208
|
-
File.open( task.name, 'w' ) do |fh|
|
|
209
|
-
fh.write( spec.to_ruby )
|
|
210
|
-
end
|
|
211
|
-
end
|
|
212
|
-
|
|
213
|
-
CLOBBER.include( '*.gemspec' )
|
|
214
|
-
task :default => :gemspec
|
|
215
|
-
|
data/Rakefile.cross
CHANGED
|
@@ -7,6 +7,7 @@ require 'rake/clean'
|
|
|
7
7
|
require 'rake/extensiontask'
|
|
8
8
|
require 'rake/extensioncompiler'
|
|
9
9
|
require 'ostruct'
|
|
10
|
+
require_relative 'rakelib/task_extension'
|
|
10
11
|
|
|
11
12
|
MISCDIR = BASEDIR + 'misc'
|
|
12
13
|
|
|
@@ -20,6 +21,7 @@ end
|
|
|
20
21
|
|
|
21
22
|
class CrossLibrary < OpenStruct
|
|
22
23
|
include Rake::DSL
|
|
24
|
+
prepend TaskExtension
|
|
23
25
|
|
|
24
26
|
def initialize(for_platform, openssl_config, toolchain)
|
|
25
27
|
super()
|
|
@@ -29,15 +31,15 @@ class CrossLibrary < OpenStruct
|
|
|
29
31
|
self.host_platform = toolchain
|
|
30
32
|
|
|
31
33
|
# Cross-compilation constants
|
|
32
|
-
self.openssl_version = ENV['OPENSSL_VERSION'] || '1.1.
|
|
33
|
-
self.postgresql_version = ENV['POSTGRESQL_VERSION'] || '
|
|
34
|
+
self.openssl_version = ENV['OPENSSL_VERSION'] || '1.1.1q'
|
|
35
|
+
self.postgresql_version = ENV['POSTGRESQL_VERSION'] || '14.4'
|
|
34
36
|
|
|
35
37
|
# Check if symlinks work in the current working directory.
|
|
36
38
|
# This fails, if rake-compiler-dock is running on a Windows box.
|
|
37
39
|
begin
|
|
38
40
|
FileUtils.rm_f '.test_symlink'
|
|
39
41
|
FileUtils.ln_s '/', '.test_symlink'
|
|
40
|
-
rescue SystemCallError
|
|
42
|
+
rescue NotImplementedError, SystemCallError
|
|
41
43
|
# Symlinks don't work -> use home directory instead
|
|
42
44
|
self.compile_home = Pathname( "~/.ruby-pg-build" ).expand_path
|
|
43
45
|
else
|
|
@@ -45,6 +47,8 @@ class CrossLibrary < OpenStruct
|
|
|
45
47
|
end
|
|
46
48
|
self.static_sourcesdir = compile_home + 'sources'
|
|
47
49
|
self.static_builddir = compile_home + 'builds' + for_platform
|
|
50
|
+
CLOBBER.include( static_sourcesdir )
|
|
51
|
+
CLEAN.include( static_builddir )
|
|
48
52
|
|
|
49
53
|
# Static OpenSSL build vars
|
|
50
54
|
self.static_openssl_builddir = static_builddir + "openssl-#{openssl_version}"
|
|
@@ -81,17 +85,6 @@ class CrossLibrary < OpenStruct
|
|
|
81
85
|
# clean intermediate files and folders
|
|
82
86
|
CLEAN.include( static_builddir.to_s )
|
|
83
87
|
|
|
84
|
-
|
|
85
|
-
def download(url, save_to)
|
|
86
|
-
part = save_to+".part"
|
|
87
|
-
sh "wget #{url.to_s.inspect} -O #{part.inspect} || curl #{url.to_s.inspect} -o #{part.inspect}"
|
|
88
|
-
FileUtils.mv part, save_to
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
def run(*args)
|
|
92
|
-
sh *args
|
|
93
|
-
end
|
|
94
|
-
|
|
95
88
|
#####################################################################
|
|
96
89
|
### C R O S S - C O M P I L A T I O N - T A S K S
|
|
97
90
|
#####################################################################
|
|
@@ -141,9 +134,9 @@ class CrossLibrary < OpenStruct
|
|
|
141
134
|
end
|
|
142
135
|
|
|
143
136
|
desc "compile static openssl libraries"
|
|
144
|
-
task
|
|
137
|
+
task "openssl_libs:#{for_platform}" => [ libssl, libcrypto ]
|
|
145
138
|
|
|
146
|
-
task
|
|
139
|
+
task "compile_static_openssl:#{for_platform}" => openssl_makefile do |t|
|
|
147
140
|
chdir( static_openssl_builddir ) do
|
|
148
141
|
cmd = cmd_prelude.dup
|
|
149
142
|
cmd << 'make' << "-j#{NUM_CPUS}" << 'build_libs'
|
|
@@ -153,12 +146,12 @@ class CrossLibrary < OpenStruct
|
|
|
153
146
|
end
|
|
154
147
|
|
|
155
148
|
desc "compile static #{libssl}"
|
|
156
|
-
file libssl =>
|
|
149
|
+
file libssl => "compile_static_openssl:#{for_platform}" do |t|
|
|
157
150
|
rm t.name.gsub(/\.a$/, ".dll.a")
|
|
158
151
|
end
|
|
159
152
|
|
|
160
153
|
desc "compile static #{libcrypto}"
|
|
161
|
-
file libcrypto =>
|
|
154
|
+
file libcrypto => "compile_static_openssl:#{for_platform}" do |t|
|
|
162
155
|
rm t.name.gsub(/\.a$/, ".dll.a")
|
|
163
156
|
end
|
|
164
157
|
|
|
@@ -189,7 +182,7 @@ class CrossLibrary < OpenStruct
|
|
|
189
182
|
end
|
|
190
183
|
|
|
191
184
|
# generate the makefile in a clean build location
|
|
192
|
-
file postgresql_global_makefile => [ static_postgresql_builddir,
|
|
185
|
+
file postgresql_global_makefile => [ static_postgresql_builddir, "openssl_libs:#{for_platform}" ] do |t|
|
|
193
186
|
options = [
|
|
194
187
|
"--target=#{host_platform}",
|
|
195
188
|
"--host=#{host_platform}",
|
|
@@ -217,6 +210,9 @@ class CrossLibrary < OpenStruct
|
|
|
217
210
|
chdir( static_postgresql_srcdir + "common" ) do
|
|
218
211
|
sh 'make', "-j#{NUM_CPUS}"
|
|
219
212
|
end
|
|
213
|
+
chdir( static_postgresql_srcdir + "port" ) do
|
|
214
|
+
sh 'make', "-j#{NUM_CPUS}"
|
|
215
|
+
end
|
|
220
216
|
|
|
221
217
|
chdir( postgresql_lib.dirname ) do
|
|
222
218
|
sh 'make',
|
|
@@ -228,10 +224,10 @@ class CrossLibrary < OpenStruct
|
|
|
228
224
|
|
|
229
225
|
|
|
230
226
|
#desc 'compile libpg.a'
|
|
231
|
-
task
|
|
227
|
+
task "native:#{for_platform}" => postgresql_lib
|
|
232
228
|
|
|
233
229
|
# copy libpq.dll to lib dir
|
|
234
|
-
dest_libpq = "lib/#{postgresql_lib.basename}"
|
|
230
|
+
dest_libpq = "lib/#{for_platform}/#{postgresql_lib.basename}"
|
|
235
231
|
directory File.dirname(dest_libpq)
|
|
236
232
|
file dest_libpq => [postgresql_lib, File.dirname(dest_libpq)] do
|
|
237
233
|
cp postgresql_lib, dest_libpq
|
|
@@ -243,22 +239,28 @@ class CrossLibrary < OpenStruct
|
|
|
243
239
|
cp postgresql_lib, stage_libpq
|
|
244
240
|
end
|
|
245
241
|
end
|
|
246
|
-
end
|
|
247
242
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
].map do |platform, openssl_config, toolchain|
|
|
253
|
-
CrossLibrary.new platform, openssl_config, toolchain
|
|
243
|
+
def download(url, save_to)
|
|
244
|
+
part = save_to+".part"
|
|
245
|
+
sh "wget #{url.to_s.inspect} -O #{part.inspect} || curl #{url.to_s.inspect} -o #{part.inspect}"
|
|
246
|
+
FileUtils.mv part, save_to
|
|
254
247
|
end
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
248
|
+
|
|
249
|
+
def run(*args)
|
|
250
|
+
sh(*args)
|
|
251
|
+
end
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
CrossLibraries = [
|
|
255
|
+
['x64-mingw-ucrt', 'mingw64', 'x86_64-w64-mingw32'],
|
|
256
|
+
['x86-mingw32', 'mingw', 'i686-w64-mingw32'],
|
|
257
|
+
['x64-mingw32', 'mingw64', 'x86_64-w64-mingw32'],
|
|
258
|
+
].map do |platform, openssl_config, toolchain|
|
|
259
|
+
CrossLibrary.new platform, openssl_config, toolchain
|
|
258
260
|
end
|
|
259
261
|
|
|
260
262
|
desc 'cross compile pg for win32'
|
|
261
|
-
task :cross => [ :mingw32
|
|
263
|
+
task :cross => [ :mingw32 ]
|
|
262
264
|
|
|
263
265
|
task :mingw32 do
|
|
264
266
|
# Use Rake::ExtensionCompiler helpers to find the proper host
|
|
@@ -269,30 +271,32 @@ task :mingw32 do
|
|
|
269
271
|
end
|
|
270
272
|
end
|
|
271
273
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
274
|
+
task 'gem:windows:prepare' do
|
|
275
|
+
require 'io/console'
|
|
276
|
+
require 'rake_compiler_dock'
|
|
277
|
+
|
|
278
|
+
# Copy gem signing key and certs to be accessible from the docker container
|
|
279
|
+
mkdir_p 'build/gem'
|
|
280
|
+
sh "cp ~/.gem/gem-*.pem build/gem/ || true"
|
|
281
|
+
sh "bundle package"
|
|
282
|
+
begin
|
|
283
|
+
OpenSSL::PKey.read(File.read(File.expand_path("~/.gem/gem-private_key.pem")), ENV["GEM_PRIVATE_KEY_PASSPHRASE"] || "")
|
|
284
|
+
rescue OpenSSL::PKey::PKeyError
|
|
285
|
+
ENV["GEM_PRIVATE_KEY_PASSPHRASE"] = STDIN.getpass("Enter passphrase of gem signature key: ")
|
|
286
|
+
retry
|
|
287
|
+
end
|
|
281
288
|
end
|
|
282
289
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
bundle install --local &&
|
|
296
|
-
rake cross native gem RUBY_CC_VERSION=2.5.0:2.4.0:2.3.0:2.2.2:2.1.6:2.0.0 MAKE="make -j`nproc`"
|
|
297
|
-
EOT
|
|
290
|
+
CrossLibraries.each do |xlib|
|
|
291
|
+
platform = xlib.for_platform
|
|
292
|
+
desc "Build fat binary gem for platform #{platform}"
|
|
293
|
+
task "gem:windows:#{platform}" => ['gem:windows:prepare', xlib.openssl_tarball, xlib.postgresql_tarball] do
|
|
294
|
+
RakeCompilerDock.sh <<-EOT, platform: platform
|
|
295
|
+
(cp build/gem/gem-*.pem ~/.gem/ || true) &&
|
|
296
|
+
bundle install --local &&
|
|
297
|
+
rake native:#{platform} pkg/#{$gem_spec.full_name}-#{platform}.gem MAKE="make -j`nproc`" RUBY_CC_VERSION=3.1.0:3.0.0:2.7.0:2.6.0:2.5.0
|
|
298
|
+
EOT
|
|
299
|
+
end
|
|
300
|
+
desc "Build the windows binary gems"
|
|
301
|
+
multitask 'gem:windows' => "gem:windows:#{platform}"
|
|
298
302
|
end
|
data/certs/ged.pem
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIID+DCCAmCgAwIBAgIBBDANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdnZWQv
|
|
3
|
+
REM9RmFlcmllTVVEL0RDPW9yZzAeFw0yMjAxMDcyMzU4MTRaFw0yMzAxMDcyMzU4
|
|
4
|
+
MTRaMCIxIDAeBgNVBAMMF2dlZC9EQz1GYWVyaWVNVUQvREM9b3JnMIIBojANBgkq
|
|
5
|
+
hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAvyVhkRzvlEs0fe7145BYLfN6njX9ih5H
|
|
6
|
+
L60U0p0euIurpv84op9CNKF9tx+1WKwyQvQP7qFGuZxkSUuWcP/sFhDXL1lWUuIl
|
|
7
|
+
M4uHbGCRmOshDrF4dgnBeOvkHr1fIhPlJm5FO+Vew8tSQmlDsosxLUx+VB7DrVFO
|
|
8
|
+
5PU2AEbf04GGSrmqADGWXeaslaoRdb1fu/0M5qfPTRn5V39sWD9umuDAF9qqil/x
|
|
9
|
+
Sl6phTvgBrG8GExHbNZpLARd3xrBYLEFsX7RvBn2UPfgsrtvpdXjsHGfpT3IPN+B
|
|
10
|
+
vQ66lts4alKC69TE5cuKasWBm+16A4aEe3XdZBRNmtOu/g81gvwA7fkJHKllJuaI
|
|
11
|
+
dXzdHqq+zbGZVSQ7pRYHYomD0IiDe1DbIouFnPWmagaBnGHwXkDT2bKKP+s2v21m
|
|
12
|
+
ozilJg4aar2okb/RA6VS87o+d7g6LpDDMMQjH4G9OPnJENLdhu8KnPw/ivSVvQw7
|
|
13
|
+
N2I4L/ZOIe2DIVuYH7aLHfjZDQv/mNgpAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYD
|
|
14
|
+
VR0PBAQDAgSwMB0GA1UdDgQWBBRyjf55EbrHagiRLqt5YAd3yb8k4DANBgkqhkiG
|
|
15
|
+
9w0BAQsFAAOCAYEASrm1AbEoxACZ9WXJH3R5axV3U0CA4xaETlL2YT+2nOfVBMQ9
|
|
16
|
+
0ZlkPx6j4ghKJgAIi1TMfDM2JyPJsppQh8tiNccDjWc62UZRY/dq26cMqf/lcI+a
|
|
17
|
+
6YBuEYvzZfearwVs8tHnXtwYV3WSCoCOQaB+nq2lA1O+nkKNl41WOsVbNama5jx3
|
|
18
|
+
8cQtVSEEmZy6jIDJ8c5TmBJ7BQUDEUEWA/A3V42Xyctoj7DvUXWE0lP+X6ypAVSr
|
|
19
|
+
lFh3TS64D7NTvxkmg7natUoCvobl6kGl4yMaqE4YRTlfuzhpf91TSOntClqrAOsS
|
|
20
|
+
K1s56WndQj3IoBocdY9mQhDZLtLHofSkymoP8btBlj5SsN24TiF0VMSZlctSCYZg
|
|
21
|
+
GKyHim/MMlIfGOWsgfioq5jzwmql7W4CDubbb8Lkg70v+hN2E/MnNVAcNE3gyaGc
|
|
22
|
+
P5YP5BAbNW+gvd3QHRiWTTuhgHrdDnGdXg93N2M5KHn1ug8BtPLQwlcFwEpKnlLn
|
|
23
|
+
btEP+7EplFuoiMfd
|
|
24
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIETTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQsFADAoMSYwJAYDVQQDDB1sYXJz
|
|
3
|
+
L0RDPWdyZWl6LXJlaW5zZG9yZi9EQz1kZTAeFw0yMjAyMTQxMzMwNTZaFw0yMzAy
|
|
4
|
+
MTQxMzMwNTZaMCgxJjAkBgNVBAMMHWxhcnMvREM9Z3JlaXotcmVpbnNkb3JmL0RD
|
|
5
|
+
PWRlMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAwum6Y1KznfpzXOT/
|
|
6
|
+
mZgJTBbxZuuZF49Fq3K0WA67YBzNlDv95qzSp7V/7Ek3NCcnT7G+2kSuhNo1FhdN
|
|
7
|
+
eSDO/moYebZNAcu3iqLsuzuULXPLuoU0GsMnVMqV9DZPh7cQHE5EBZ7hlzDBK7k/
|
|
8
|
+
8nBMvR0mHo77kIkapHc26UzVq/G0nKLfDsIHXVylto3PjzOumjG6GhmFN4r3cP6e
|
|
9
|
+
SDfl1FSeRYVpt4kmQULz/zdSaOH3AjAq7PM2Z91iGwQvoUXMANH2v89OWjQO/NHe
|
|
10
|
+
JMNDFsmHK/6Ji4Kk48Z3TyscHQnipAID5GhS1oD21/WePdj7GhmbF5gBzkV5uepd
|
|
11
|
+
eJQPgWGwrQW/Z2oPjRuJrRofzWfrMWqbOahj9uth6WSxhNexUtbjk6P8emmXOJi5
|
|
12
|
+
chQPnWX+N3Gj+jjYxqTFdwT7Mj3pv1VHa+aNUbqSPpvJeDyxRIuo9hvzDaBHb/Cg
|
|
13
|
+
9qRVcm8a96n4t7y2lrX1oookY6bkBaxWOMtWlqIprq8JZXM9AgMBAAGjgYEwfzAJ
|
|
14
|
+
BgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUOIdbSMr3VFrTCO9/cTM0
|
|
15
|
+
0exHzBcwIgYDVR0RBBswGYEXbGFyc0BncmVpei1yZWluc2RvcmYuZGUwIgYDVR0S
|
|
16
|
+
BBswGYEXbGFyc0BncmVpei1yZWluc2RvcmYuZGUwDQYJKoZIhvcNAQELBQADggGB
|
|
17
|
+
AFWP7F/y3Oq3NgrqUOnjKOeDaBa7AqNhHS+PZg+C90lnJzMgOs4KKgZYxqSQVSab
|
|
18
|
+
SCEmzIO/StkXY4NpJ4fYLrHemf/fJy1wPyu+fNdp5SEEUwEo+2toRFlzTe4u4LdS
|
|
19
|
+
QC636nPPTMt8H3xz2wf/lUIUeo2Qc95Qt2BQM465ibbG9kmA3c7Sopx6yOabYOAl
|
|
20
|
+
KPRbOSEPiWYcF9Suuz8Gdf8jxEtPlnZiwRvnYJ+IHMq3XQCJWPpMzdDMbtlgHbXE
|
|
21
|
+
vq1zOTLMSYAS0UB3uionR4yo1hLz60odwkCm7qf0o2Ci/5OjtB0a89VuyqRU2vUJ
|
|
22
|
+
QH95WBjDJ6lCCW7J0mrMPnJQSUFTmufsU6jOChvPaCeAzW1YwrsP/YKnvwueG7ip
|
|
23
|
+
VOdW6RitjtFxhS7evRL0201+KUvLz12zZWWjOcujlQs64QprxOtiv/MiisKb1Ng+
|
|
24
|
+
oL1mUdzB8KrZL4/WbG5YNX6UTtJbIOu9qEFbBAy4/jtIkJX+dlNoFwd4GXQW1YNO
|
|
25
|
+
nA==
|
|
26
|
+
-----END CERTIFICATE-----
|
data/ext/errorcodes.def
CHANGED
|
@@ -186,6 +186,10 @@
|
|
|
186
186
|
VALUE klass = define_error_class( "InvalidParameterValue", "22" );
|
|
187
187
|
register_error_class( "22023", klass );
|
|
188
188
|
}
|
|
189
|
+
{
|
|
190
|
+
VALUE klass = define_error_class( "InvalidPrecedingOrFollowingSize", "22" );
|
|
191
|
+
register_error_class( "22013", klass );
|
|
192
|
+
}
|
|
189
193
|
{
|
|
190
194
|
VALUE klass = define_error_class( "InvalidRegularExpression", "22" );
|
|
191
195
|
register_error_class( "2201B", klass );
|
|
@@ -298,6 +302,70 @@
|
|
|
298
302
|
VALUE klass = define_error_class( "InvalidXmlProcessingInstruction", "22" );
|
|
299
303
|
register_error_class( "2200T", klass );
|
|
300
304
|
}
|
|
305
|
+
{
|
|
306
|
+
VALUE klass = define_error_class( "DuplicateJsonObjectKeyValue", "22" );
|
|
307
|
+
register_error_class( "22030", klass );
|
|
308
|
+
}
|
|
309
|
+
{
|
|
310
|
+
VALUE klass = define_error_class( "InvalidArgumentForSqlJsonDatetimeFunction", "22" );
|
|
311
|
+
register_error_class( "22031", klass );
|
|
312
|
+
}
|
|
313
|
+
{
|
|
314
|
+
VALUE klass = define_error_class( "InvalidJsonText", "22" );
|
|
315
|
+
register_error_class( "22032", klass );
|
|
316
|
+
}
|
|
317
|
+
{
|
|
318
|
+
VALUE klass = define_error_class( "InvalidSqlJsonSubscript", "22" );
|
|
319
|
+
register_error_class( "22033", klass );
|
|
320
|
+
}
|
|
321
|
+
{
|
|
322
|
+
VALUE klass = define_error_class( "MoreThanOneSqlJsonItem", "22" );
|
|
323
|
+
register_error_class( "22034", klass );
|
|
324
|
+
}
|
|
325
|
+
{
|
|
326
|
+
VALUE klass = define_error_class( "NoSqlJsonItem", "22" );
|
|
327
|
+
register_error_class( "22035", klass );
|
|
328
|
+
}
|
|
329
|
+
{
|
|
330
|
+
VALUE klass = define_error_class( "NonNumericSqlJsonItem", "22" );
|
|
331
|
+
register_error_class( "22036", klass );
|
|
332
|
+
}
|
|
333
|
+
{
|
|
334
|
+
VALUE klass = define_error_class( "NonUniqueKeysInAJsonObject", "22" );
|
|
335
|
+
register_error_class( "22037", klass );
|
|
336
|
+
}
|
|
337
|
+
{
|
|
338
|
+
VALUE klass = define_error_class( "SingletonSqlJsonItemRequired", "22" );
|
|
339
|
+
register_error_class( "22038", klass );
|
|
340
|
+
}
|
|
341
|
+
{
|
|
342
|
+
VALUE klass = define_error_class( "SqlJsonArrayNotFound", "22" );
|
|
343
|
+
register_error_class( "22039", klass );
|
|
344
|
+
}
|
|
345
|
+
{
|
|
346
|
+
VALUE klass = define_error_class( "SqlJsonMemberNotFound", "22" );
|
|
347
|
+
register_error_class( "2203A", klass );
|
|
348
|
+
}
|
|
349
|
+
{
|
|
350
|
+
VALUE klass = define_error_class( "SqlJsonNumberNotFound", "22" );
|
|
351
|
+
register_error_class( "2203B", klass );
|
|
352
|
+
}
|
|
353
|
+
{
|
|
354
|
+
VALUE klass = define_error_class( "SqlJsonObjectNotFound", "22" );
|
|
355
|
+
register_error_class( "2203C", klass );
|
|
356
|
+
}
|
|
357
|
+
{
|
|
358
|
+
VALUE klass = define_error_class( "TooManyJsonArrayElements", "22" );
|
|
359
|
+
register_error_class( "2203D", klass );
|
|
360
|
+
}
|
|
361
|
+
{
|
|
362
|
+
VALUE klass = define_error_class( "TooManyJsonObjectMembers", "22" );
|
|
363
|
+
register_error_class( "2203E", klass );
|
|
364
|
+
}
|
|
365
|
+
{
|
|
366
|
+
VALUE klass = define_error_class( "SqlJsonScalarRequired", "22" );
|
|
367
|
+
register_error_class( "2203F", klass );
|
|
368
|
+
}
|
|
301
369
|
{
|
|
302
370
|
VALUE klass = define_error_class( "IntegrityConstraintViolation", NULL );
|
|
303
371
|
register_error_class( "23000", klass );
|
|
@@ -763,6 +831,10 @@
|
|
|
763
831
|
VALUE klass = define_error_class( "LockNotAvailable", "55" );
|
|
764
832
|
register_error_class( "55P03", klass );
|
|
765
833
|
}
|
|
834
|
+
{
|
|
835
|
+
VALUE klass = define_error_class( "UnsafeNewEnumValueUsage", "55" );
|
|
836
|
+
register_error_class( "55P04", klass );
|
|
837
|
+
}
|
|
766
838
|
{
|
|
767
839
|
VALUE klass = define_error_class( "OperatorIntervention", NULL );
|
|
768
840
|
register_error_class( "57000", klass );
|
|
@@ -788,6 +860,10 @@
|
|
|
788
860
|
VALUE klass = define_error_class( "DatabaseDropped", "57" );
|
|
789
861
|
register_error_class( "57P04", klass );
|
|
790
862
|
}
|
|
863
|
+
{
|
|
864
|
+
VALUE klass = define_error_class( "IdleSessionTimeout", "57" );
|
|
865
|
+
register_error_class( "57P05", klass );
|
|
866
|
+
}
|
|
791
867
|
{
|
|
792
868
|
VALUE klass = define_error_class( "SystemError", NULL );
|
|
793
869
|
register_error_class( "58000", klass );
|
data/ext/errorcodes.rb
CHANGED
|
File without changes
|
data/ext/errorcodes.txt
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# errcodes.txt
|
|
3
3
|
# PostgreSQL error codes
|
|
4
4
|
#
|
|
5
|
-
# Copyright (c) 2003-
|
|
5
|
+
# Copyright (c) 2003-2021, PostgreSQL Global Development Group
|
|
6
6
|
#
|
|
7
7
|
# This list serves as the basis for generating source files containing error
|
|
8
8
|
# codes. It is kept in a common format to make sure all these source files have
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
# src/pl/tcl/pltclerrcodes.h
|
|
19
19
|
# the same, for PL/Tcl
|
|
20
20
|
#
|
|
21
|
-
# doc/src/sgml/errcodes-
|
|
21
|
+
# doc/src/sgml/errcodes-table.sgml
|
|
22
22
|
# a SGML table of error codes for inclusion in the documentation
|
|
23
23
|
#
|
|
24
24
|
# The format of this file is one error code per line, with the following
|
|
@@ -177,6 +177,7 @@ Section: Class 22 - Data Exception
|
|
|
177
177
|
22P06 E ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER nonstandard_use_of_escape_character
|
|
178
178
|
22010 E ERRCODE_INVALID_INDICATOR_PARAMETER_VALUE invalid_indicator_parameter_value
|
|
179
179
|
22023 E ERRCODE_INVALID_PARAMETER_VALUE invalid_parameter_value
|
|
180
|
+
22013 E ERRCODE_INVALID_PRECEDING_OR_FOLLOWING_SIZE invalid_preceding_or_following_size
|
|
180
181
|
2201B E ERRCODE_INVALID_REGULAR_EXPRESSION invalid_regular_expression
|
|
181
182
|
2201W E ERRCODE_INVALID_ROW_COUNT_IN_LIMIT_CLAUSE invalid_row_count_in_limit_clause
|
|
182
183
|
2201X E ERRCODE_INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE invalid_row_count_in_result_offset_clause
|
|
@@ -205,6 +206,22 @@ Section: Class 22 - Data Exception
|
|
|
205
206
|
2200N E ERRCODE_INVALID_XML_CONTENT invalid_xml_content
|
|
206
207
|
2200S E ERRCODE_INVALID_XML_COMMENT invalid_xml_comment
|
|
207
208
|
2200T E ERRCODE_INVALID_XML_PROCESSING_INSTRUCTION invalid_xml_processing_instruction
|
|
209
|
+
22030 E ERRCODE_DUPLICATE_JSON_OBJECT_KEY_VALUE duplicate_json_object_key_value
|
|
210
|
+
22031 E ERRCODE_INVALID_ARGUMENT_FOR_SQL_JSON_DATETIME_FUNCTION invalid_argument_for_sql_json_datetime_function
|
|
211
|
+
22032 E ERRCODE_INVALID_JSON_TEXT invalid_json_text
|
|
212
|
+
22033 E ERRCODE_INVALID_SQL_JSON_SUBSCRIPT invalid_sql_json_subscript
|
|
213
|
+
22034 E ERRCODE_MORE_THAN_ONE_SQL_JSON_ITEM more_than_one_sql_json_item
|
|
214
|
+
22035 E ERRCODE_NO_SQL_JSON_ITEM no_sql_json_item
|
|
215
|
+
22036 E ERRCODE_NON_NUMERIC_SQL_JSON_ITEM non_numeric_sql_json_item
|
|
216
|
+
22037 E ERRCODE_NON_UNIQUE_KEYS_IN_A_JSON_OBJECT non_unique_keys_in_a_json_object
|
|
217
|
+
22038 E ERRCODE_SINGLETON_SQL_JSON_ITEM_REQUIRED singleton_sql_json_item_required
|
|
218
|
+
22039 E ERRCODE_SQL_JSON_ARRAY_NOT_FOUND sql_json_array_not_found
|
|
219
|
+
2203A E ERRCODE_SQL_JSON_MEMBER_NOT_FOUND sql_json_member_not_found
|
|
220
|
+
2203B E ERRCODE_SQL_JSON_NUMBER_NOT_FOUND sql_json_number_not_found
|
|
221
|
+
2203C E ERRCODE_SQL_JSON_OBJECT_NOT_FOUND sql_json_object_not_found
|
|
222
|
+
2203D E ERRCODE_TOO_MANY_JSON_ARRAY_ELEMENTS too_many_json_array_elements
|
|
223
|
+
2203E E ERRCODE_TOO_MANY_JSON_OBJECT_MEMBERS too_many_json_object_members
|
|
224
|
+
2203F E ERRCODE_SQL_JSON_SCALAR_REQUIRED sql_json_scalar_required
|
|
208
225
|
|
|
209
226
|
Section: Class 23 - Integrity Constraint Violation
|
|
210
227
|
|
|
@@ -400,6 +417,7 @@ Section: Class 55 - Object Not In Prerequisite State
|
|
|
400
417
|
55006 E ERRCODE_OBJECT_IN_USE object_in_use
|
|
401
418
|
55P02 E ERRCODE_CANT_CHANGE_RUNTIME_PARAM cant_change_runtime_param
|
|
402
419
|
55P03 E ERRCODE_LOCK_NOT_AVAILABLE lock_not_available
|
|
420
|
+
55P04 E ERRCODE_UNSAFE_NEW_ENUM_VALUE_USAGE unsafe_new_enum_value_usage
|
|
403
421
|
|
|
404
422
|
Section: Class 57 - Operator Intervention
|
|
405
423
|
|
|
@@ -410,6 +428,7 @@ Section: Class 57 - Operator Intervention
|
|
|
410
428
|
57P02 E ERRCODE_CRASH_SHUTDOWN crash_shutdown
|
|
411
429
|
57P03 E ERRCODE_CANNOT_CONNECT_NOW cannot_connect_now
|
|
412
430
|
57P04 E ERRCODE_DATABASE_DROPPED database_dropped
|
|
431
|
+
57P05 E ERRCODE_IDLE_SESSION_TIMEOUT idle_session_timeout
|
|
413
432
|
|
|
414
433
|
Section: Class 58 - System Error (errors external to PostgreSQL itself)
|
|
415
434
|
|