pg 0.21.0 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/History.rdoc +98 -0
- data/Manifest.txt +5 -1
- data/README.rdoc +14 -4
- data/Rakefile +4 -5
- data/Rakefile.cross +17 -21
- data/ext/errorcodes.def +12 -0
- data/ext/errorcodes.rb +1 -1
- data/ext/errorcodes.txt +4 -1
- data/ext/extconf.rb +14 -32
- data/ext/gvl_wrappers.c +4 -0
- data/ext/gvl_wrappers.h +23 -39
- data/ext/pg.c +23 -50
- data/ext/pg.h +51 -81
- data/ext/pg_binary_decoder.c +73 -6
- data/ext/pg_coder.c +52 -3
- data/ext/pg_connection.c +369 -219
- data/ext/pg_copy_coder.c +10 -5
- data/ext/pg_result.c +343 -119
- data/ext/pg_text_decoder.c +597 -37
- data/ext/pg_text_encoder.c +6 -7
- data/ext/pg_tuple.c +541 -0
- data/ext/util.c +6 -6
- data/ext/util.h +2 -2
- data/lib/pg.rb +5 -7
- data/lib/pg/basic_type_mapping.rb +40 -7
- data/lib/pg/binary_decoder.rb +22 -0
- data/lib/pg/coder.rb +1 -1
- data/lib/pg/connection.rb +27 -3
- data/lib/pg/constants.rb +1 -1
- data/lib/pg/exceptions.rb +1 -1
- data/lib/pg/result.rb +1 -1
- data/lib/pg/text_decoder.rb +19 -23
- data/lib/pg/text_encoder.rb +35 -1
- data/lib/pg/tuple.rb +30 -0
- data/lib/pg/type_map_by_column.rb +1 -1
- data/spec/helpers.rb +49 -21
- data/spec/pg/basic_type_mapping_spec.rb +230 -27
- data/spec/pg/connection_spec.rb +473 -277
- data/spec/pg/connection_sync_spec.rb +41 -0
- data/spec/pg/result_spec.rb +48 -13
- data/spec/pg/tuple_spec.rb +280 -0
- data/spec/pg/type_map_by_class_spec.rb +1 -1
- data/spec/pg/type_map_by_column_spec.rb +1 -1
- data/spec/pg/type_map_by_mri_type_spec.rb +1 -1
- data/spec/pg/type_map_by_oid_spec.rb +1 -1
- data/spec/pg/type_map_in_ruby_spec.rb +1 -1
- data/spec/pg/type_map_spec.rb +1 -1
- data/spec/pg/type_spec.rb +184 -12
- data/spec/pg_spec.rb +2 -2
- metadata +37 -33
- metadata.gz.sig +0 -0
- data/lib/pg/deprecated_constants.rb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a66c426de7c3035db5c8412a38b7f551bc50f7e6563b0b0de78515fd3ae7e825
|
4
|
+
data.tar.gz: 5c528696d8ebd74de4e53dec34efede57cbf06c62defe35b25b37f7986e746e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4d8f2671a07a483efab8dd62701eea5a327eba332c5d9dce9f670d3db0b968e335e630d04f7f68b2f74ce9fb0c9da0f936a6ed839040fffbaf5710467f6e2c3
|
7
|
+
data.tar.gz: 482f9f0bc7f3cb6645897debb05d7e1258790b7c63cd275ee7f9e29f47b82f2f9f78fb4b49a2f7c629a0494663c98aee198e4788931074164ec9e9f9e09b0f43
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/History.rdoc
CHANGED
@@ -1,3 +1,98 @@
|
|
1
|
+
== v1.1.4 [2019-01-08] Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
- Fix PG::BinaryDecoder::Timestamp on 32 bit systems. # 284
|
4
|
+
- Add new error-codes of PostgreSQL-11.
|
5
|
+
- Add ruby-2.6 support for Windows fat binary gems and remove ruby-2.0 and 2.1.
|
6
|
+
|
7
|
+
|
8
|
+
== v1.1.3 [2018-09-06] Michael Granger <ged@FaerieMUD.org>
|
9
|
+
|
10
|
+
- Revert opimization that was sometimes causing EBADF in rb_wait_for_single_fd().
|
11
|
+
|
12
|
+
|
13
|
+
== v1.1.2 [2018-08-28] Michael Granger <ged@FaerieMUD.org>
|
14
|
+
|
15
|
+
- Don't generate aliases for JOHAB encoding.
|
16
|
+
This avoids linking to deprecated/private function rb_enc(db)_alias().
|
17
|
+
|
18
|
+
|
19
|
+
== v1.1.1 [2018-08-27] Michael Granger <ged@FaerieMUD.org>
|
20
|
+
|
21
|
+
- Reduce deprecation warnings to only one message per deprecation.
|
22
|
+
|
23
|
+
|
24
|
+
== v1.1.0 [2018-08-24] Michael Granger <ged@FaerieMUD.org>
|
25
|
+
|
26
|
+
Deprecated (disable warnings per PG_SKIP_DEPRECATION_WARNING=1):
|
27
|
+
- Forwarding conn.exec to conn.exec_params is deprecated.
|
28
|
+
- Forwarding conn.exec_params to conn.exec is deprecated.
|
29
|
+
- Forwarding conn.async_exec to conn.async_exec_params.
|
30
|
+
- Forwarding conn.send_query to conn.send_query_params is deprecated.
|
31
|
+
- Forwarding conn.async_exec_params to conn.async_exec is deprecated.
|
32
|
+
|
33
|
+
PG::Connection enhancements:
|
34
|
+
- Provide PG::Connection#sync_* and PG::Connection#async_* query methods for explicit calling syncronous or asynchronous libpq API.
|
35
|
+
- Make PG::Connection#exec and siblings switchable between sync and async API per PG::Connection.async_api= and change the default to async flavors.
|
36
|
+
- Add async flavors of exec_params, prepare, exec_prepared, describe_prepared and describe_portal.
|
37
|
+
They are identical to their syncronous counterpart, but make use of PostgreSQL's async API.
|
38
|
+
- Replace `rb_thread_fd_select()` by faster `rb_wait_for_single_fd()` in `conn.block` and `conn.async_exec` .
|
39
|
+
- Add PG::Connection#discard_results .
|
40
|
+
- Raise an ArgumentError for strings containing zero bytes by #escape, #escape_literal, #escape_identifier, #quote_ident and PG::TextEncoder::Identifier. These methods previously truncated strings.
|
41
|
+
|
42
|
+
Result retrieval enhancements:
|
43
|
+
- Add PG::Result#tuple_values to retrieve all field values of a row as array.
|
44
|
+
- Add PG::Tuple, PG::Result#tuple and PG::Result#stream_each_tuple .
|
45
|
+
PG::Tuple offers a way to lazy cast result values.
|
46
|
+
- Estimate PG::Result size allocated by libpq and notify the garbage collector about it when running on Ruby-2.4 or newer.
|
47
|
+
- Make the estimated PG::Result size available to ObjectSpace.memsize_of(result) .
|
48
|
+
|
49
|
+
Type cast enhancements:
|
50
|
+
- Replace Ruby code by a faster C implementation of the SimpleDecoder's timestamp decode functions. github #20
|
51
|
+
- Interpret years with up to 7 digists and BC dates by timestamp decoder.
|
52
|
+
- Add text timestamp decoders for UTC vs. local timezone variations.
|
53
|
+
- Add text timestamp encoders for UTC timezone.
|
54
|
+
- Add decoders for binary timestamps: PG::BinaryDecoder::Timestamp and variations.
|
55
|
+
- Add PG::Coder#flags accessor to allow modifications of de- respectively encoder behaviour.
|
56
|
+
- Add a flag to raise TypeError for invalid input values to PG::TextDecoder::Array .
|
57
|
+
- Add a text decoder for inet/cidr written in C.
|
58
|
+
- Add a numeric decoder written in C.
|
59
|
+
- Ensure input text is zero terminated for text format in PG::Coder#decode .
|
60
|
+
|
61
|
+
Source code enhancements:
|
62
|
+
- Fix headers and permission bits of various repository files.
|
63
|
+
|
64
|
+
Bugfixes:
|
65
|
+
- Properly decode array with prepended dimensions. #272
|
66
|
+
For now dimension decorations are ignored, but a correct Array is returned.
|
67
|
+
- Array-Decoder: Avoid leaking memory when an Exception is raised while parsing. Fixes #279
|
68
|
+
|
69
|
+
|
70
|
+
== v1.0.0 [2018-01-10] Michael Granger <ged@FaerieMUD.org>
|
71
|
+
|
72
|
+
Deprecated:
|
73
|
+
- Deprecate Ruby older than 2.2.
|
74
|
+
- Deprecate Connection#socket in favor of #socket_io.
|
75
|
+
|
76
|
+
Removed:
|
77
|
+
- Remove compatibility code for Ruby < 2.0 and PostgreSQL < 9.2.
|
78
|
+
- Remove partial compatibility with Rubinius.
|
79
|
+
- Remove top-level constants PGconn, PGresult, and PGError.
|
80
|
+
|
81
|
+
Enhancements:
|
82
|
+
- Update error codes to PostgreSQL-10
|
83
|
+
- Update Windows binary gems to Ruby-2.5, PostgreSQL 10.1 and
|
84
|
+
OpenSSL 1.1.0g.
|
85
|
+
|
86
|
+
Bugfixes:
|
87
|
+
- Fix URI detection for connection strings. #265 (thanks to jjoos)
|
88
|
+
- MINGW: Workaround segfault due to GCC linker error in conjunction with MSVC.
|
89
|
+
This happens when linking to PostgreSQL-10.0-x64 from EnterpriseDB.
|
90
|
+
|
91
|
+
Documentation fixes:
|
92
|
+
- Add PostgreSQL version since when the given function is supported. #263
|
93
|
+
- Better documentation to `encoder` and `decoder` arguments of COPY related methods.
|
94
|
+
|
95
|
+
|
1
96
|
== v0.21.0 [2017-06-12] Michael Granger <ged@FaerieMUD.org>
|
2
97
|
|
3
98
|
Enhancements:
|
@@ -10,6 +105,9 @@ Enhancements:
|
|
10
105
|
Documentation fixes:
|
11
106
|
- Update the docs for PG::Result#cmd_tuples
|
12
107
|
|
108
|
+
New Samples:
|
109
|
+
- Add an example of the nicer #copy_data way of doing `COPY`.
|
110
|
+
|
13
111
|
|
14
112
|
== v0.20.0 [2017-03-10] Michael Granger <ged@FaerieMUD.org>
|
15
113
|
|
data/Manifest.txt
CHANGED
@@ -29,6 +29,7 @@ ext/pg_errors.c
|
|
29
29
|
ext/pg_result.c
|
30
30
|
ext/pg_text_decoder.c
|
31
31
|
ext/pg_text_encoder.c
|
32
|
+
ext/pg_tuple.c
|
32
33
|
ext/pg_type_map.c
|
33
34
|
ext/pg_type_map_all_strings.c
|
34
35
|
ext/pg_type_map_by_class.c
|
@@ -43,21 +44,24 @@ ext/vc/pg_18/pg.vcproj
|
|
43
44
|
ext/vc/pg_19/pg_19.vcproj
|
44
45
|
lib/pg.rb
|
45
46
|
lib/pg/basic_type_mapping.rb
|
47
|
+
lib/pg/binary_decoder.rb
|
46
48
|
lib/pg/coder.rb
|
47
49
|
lib/pg/connection.rb
|
48
50
|
lib/pg/constants.rb
|
49
|
-
lib/pg/deprecated_constants.rb
|
50
51
|
lib/pg/exceptions.rb
|
51
52
|
lib/pg/result.rb
|
52
53
|
lib/pg/text_decoder.rb
|
53
54
|
lib/pg/text_encoder.rb
|
55
|
+
lib/pg/tuple.rb
|
54
56
|
lib/pg/type_map_by_column.rb
|
55
57
|
spec/data/expected_trace.out
|
56
58
|
spec/data/random_binary_data
|
57
59
|
spec/helpers.rb
|
58
60
|
spec/pg/basic_type_mapping_spec.rb
|
59
61
|
spec/pg/connection_spec.rb
|
62
|
+
spec/pg/connection_sync_spec.rb
|
60
63
|
spec/pg/result_spec.rb
|
64
|
+
spec/pg/tuple_spec.rb
|
61
65
|
spec/pg/type_map_by_class_spec.rb
|
62
66
|
spec/pg/type_map_by_column_spec.rb
|
63
67
|
spec/pg/type_map_by_mri_type_spec.rb
|
data/README.rdoc
CHANGED
@@ -11,7 +11,7 @@ docs :: http://deveiate.org/code/pg
|
|
11
11
|
|
12
12
|
Pg is the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/].
|
13
13
|
|
14
|
-
It works with {PostgreSQL 9.
|
14
|
+
It works with {PostgreSQL 9.2 and later}[http://www.postgresql.org/support/versioning/].
|
15
15
|
|
16
16
|
A small example usage:
|
17
17
|
|
@@ -37,13 +37,24 @@ A small example usage:
|
|
37
37
|
|
38
38
|
== Requirements
|
39
39
|
|
40
|
-
* Ruby 2.2
|
41
|
-
* PostgreSQL 9.
|
40
|
+
* Ruby 2.2 or newer
|
41
|
+
* PostgreSQL 9.2.x or later (with headers, -dev packages, etc).
|
42
42
|
|
43
43
|
It usually work with earlier versions of Ruby/PostgreSQL as well, but those are
|
44
44
|
not regularly tested.
|
45
45
|
|
46
46
|
|
47
|
+
== Versioning
|
48
|
+
|
49
|
+
We tag and release gems according to the {Semantic Versioning}[http://semver.org/] principle.
|
50
|
+
|
51
|
+
As a result of this policy, you can (and should) specify a dependency on this gem using the {Pessimistic Version Constraint}[http://guides.rubygems.org/patterns/#pessimistic-version-constraint] with two digits of precision.
|
52
|
+
|
53
|
+
For example:
|
54
|
+
|
55
|
+
spec.add_dependency 'pg', '~> 1.0'
|
56
|
+
|
57
|
+
|
47
58
|
== How To Install
|
48
59
|
|
49
60
|
Install via RubyGems:
|
@@ -165,4 +176,3 @@ to this library over the years.
|
|
165
176
|
|
166
177
|
We are thankful to the people at the ruby-list and ruby-dev mailing lists.
|
167
178
|
And to the people who developed PostgreSQL.
|
168
|
-
|
data/Rakefile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# -*- rake -*-
|
2
2
|
|
3
3
|
require 'rbconfig'
|
4
4
|
require 'pathname'
|
@@ -61,7 +61,7 @@ $hoespec = Hoe.spec 'pg' do
|
|
61
61
|
self.developer 'Lars Kanis', 'lars@greiz-reinsdorf.de'
|
62
62
|
|
63
63
|
self.dependency 'rake-compiler', '~> 1.0', :developer
|
64
|
-
self.dependency 'rake-compiler-dock', '~> 0.
|
64
|
+
self.dependency 'rake-compiler-dock', ['~> 0.7.0'], :developer
|
65
65
|
self.dependency 'hoe-deveiate', '~> 0.9', :developer
|
66
66
|
self.dependency 'hoe-bundler', '~> 1.0', :developer
|
67
67
|
self.dependency 'rspec', '~> 3.5', :developer
|
@@ -105,8 +105,6 @@ task :maint do
|
|
105
105
|
ENV['MAINTAINER_MODE'] = 'yes'
|
106
106
|
end
|
107
107
|
|
108
|
-
ENV['RUBY_CC_VERSION'] ||= '1.8.7:1.9.2:2.0.0'
|
109
|
-
|
110
108
|
# Rake-compiler task
|
111
109
|
Rake::ExtensionTask.new do |ext|
|
112
110
|
ext.name = 'pg_ext'
|
@@ -155,6 +153,7 @@ end
|
|
155
153
|
file '.hg/branch' do
|
156
154
|
warn "WARNING: You need the Mercurial repo to update the ChangeLog"
|
157
155
|
end
|
156
|
+
Rake::Task["ChangeLog"].clear
|
158
157
|
file 'ChangeLog' do |task|
|
159
158
|
if File.exist?('.hg/branch')
|
160
159
|
$stderr.puts "Updating the changelog..."
|
@@ -185,7 +184,7 @@ end
|
|
185
184
|
|
186
185
|
desc "Update list of server error codes"
|
187
186
|
task :update_error_codes do
|
188
|
-
URL_ERRORCODES_TXT = "http://git.postgresql.org/gitweb/?p=postgresql.git;a=blob_plain;f=src/backend/utils/errcodes.txt;hb=refs/tags/
|
187
|
+
URL_ERRORCODES_TXT = "http://git.postgresql.org/gitweb/?p=postgresql.git;a=blob_plain;f=src/backend/utils/errcodes.txt;hb=refs/tags/REL_11_1"
|
189
188
|
|
190
189
|
ERRORCODES_TXT = "ext/errorcodes.txt"
|
191
190
|
sh "wget #{URL_ERRORCODES_TXT.inspect} -O #{ERRORCODES_TXT.inspect} || curl #{URL_ERRORCODES_TXT.inspect} -o #{ERRORCODES_TXT.inspect}"
|
data/Rakefile.cross
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# -*- rake -*-
|
2
2
|
|
3
3
|
require 'uri'
|
4
4
|
require 'tempfile'
|
@@ -29,8 +29,8 @@ class CrossLibrary < OpenStruct
|
|
29
29
|
self.host_platform = toolchain
|
30
30
|
|
31
31
|
# Cross-compilation constants
|
32
|
-
self.openssl_version = ENV['OPENSSL_VERSION'] || '1.
|
33
|
-
self.postgresql_version = ENV['POSTGRESQL_VERSION'] || '
|
32
|
+
self.openssl_version = ENV['OPENSSL_VERSION'] || '1.1.1a'
|
33
|
+
self.postgresql_version = ENV['POSTGRESQL_VERSION'] || '11.1'
|
34
34
|
|
35
35
|
# Check if symlinks work in the current working directory.
|
36
36
|
# This fails, if rake-compiler-dock is running on a Windows box.
|
@@ -54,8 +54,8 @@ class CrossLibrary < OpenStruct
|
|
54
54
|
self.openssl_tarball = static_sourcesdir + File.basename( openssl_source_uri.path )
|
55
55
|
self.openssl_makefile = static_openssl_builddir + 'Makefile'
|
56
56
|
|
57
|
-
self.
|
58
|
-
self.
|
57
|
+
self.libssl = static_openssl_builddir + 'libssl.a'
|
58
|
+
self.libcrypto = static_openssl_builddir + 'libcrypto.a'
|
59
59
|
|
60
60
|
self.openssl_patches = Rake::FileList[ (MISCDIR + "openssl-#{openssl_version}.*.patch").to_s ]
|
61
61
|
|
@@ -82,8 +82,6 @@ class CrossLibrary < OpenStruct
|
|
82
82
|
CLEAN.include( static_builddir.to_s )
|
83
83
|
|
84
84
|
|
85
|
-
ENV['RUBY_CC_VERSION'] ||= '1.9.3:2.0.0'
|
86
|
-
|
87
85
|
def download(url, save_to)
|
88
86
|
part = save_to+".part"
|
89
87
|
sh "wget #{url.to_s.inspect} -O #{part.inspect} || curl #{url.to_s.inspect} -o #{part.inspect}"
|
@@ -126,11 +124,9 @@ class CrossLibrary < OpenStruct
|
|
126
124
|
end
|
127
125
|
|
128
126
|
self.cmd_prelude = [
|
129
|
-
|
130
|
-
"
|
127
|
+
"env",
|
128
|
+
"CROSS_COMPILE=#{host_platform}-",
|
131
129
|
"CFLAGS=-DDSO_WIN32",
|
132
|
-
"AR=#{host_platform}-ar",
|
133
|
-
"RANLIB=#{host_platform}-ranlib"
|
134
130
|
]
|
135
131
|
|
136
132
|
|
@@ -145,7 +141,7 @@ class CrossLibrary < OpenStruct
|
|
145
141
|
end
|
146
142
|
|
147
143
|
desc "compile static openssl libraries"
|
148
|
-
task :openssl_libs => [
|
144
|
+
task :openssl_libs => [ libssl, libcrypto ]
|
149
145
|
|
150
146
|
task :compile_static_openssl => openssl_makefile do |t|
|
151
147
|
chdir( static_openssl_builddir ) do
|
@@ -156,14 +152,14 @@ class CrossLibrary < OpenStruct
|
|
156
152
|
end
|
157
153
|
end
|
158
154
|
|
159
|
-
desc "compile static #{
|
160
|
-
file
|
161
|
-
|
155
|
+
desc "compile static #{libssl}"
|
156
|
+
file libssl => :compile_static_openssl do |t|
|
157
|
+
rm t.name.gsub(/\.a$/, ".dll.a")
|
162
158
|
end
|
163
159
|
|
164
|
-
desc "compile static #{
|
165
|
-
file
|
166
|
-
|
160
|
+
desc "compile static #{libcrypto}"
|
161
|
+
file libcrypto => :compile_static_openssl do |t|
|
162
|
+
rm t.name.gsub(/\.a$/, ".dll.a")
|
167
163
|
end
|
168
164
|
|
169
165
|
|
@@ -207,7 +203,7 @@ class CrossLibrary < OpenStruct
|
|
207
203
|
cmd << "CFLAGS=-L#{static_openssl_builddir}"
|
208
204
|
cmd << "LDFLAGS=-L#{static_openssl_builddir}"
|
209
205
|
cmd << "LDFLAGS_SL=-L#{static_openssl_builddir}"
|
210
|
-
cmd << "LIBS=-lwsock32 -lgdi32"
|
206
|
+
cmd << "LIBS=-lwsock32 -lgdi32 -lws2_32"
|
211
207
|
cmd << "CPPFLAGS=-I#{static_openssl_builddir}/include"
|
212
208
|
|
213
209
|
run( *cmd )
|
@@ -226,7 +222,7 @@ class CrossLibrary < OpenStruct
|
|
226
222
|
sh 'make',
|
227
223
|
"-j#{NUM_CPUS}",
|
228
224
|
postgresql_lib.basename.to_s,
|
229
|
-
'SHLIB_LINK=-
|
225
|
+
'SHLIB_LINK=-lssl -lcrypto -lcrypt32 -lgdi32 -lsecur32 -lwsock32 -lws2_32'
|
230
226
|
end
|
231
227
|
end
|
232
228
|
|
@@ -297,6 +293,6 @@ task 'gem:windows' => ['ChangeLog'] do
|
|
297
293
|
mkdir ~/.gem &&
|
298
294
|
(cp build/gem/gem-*.pem ~/.gem/ || true) &&
|
299
295
|
bundle install --local &&
|
300
|
-
rake cross native gem
|
296
|
+
rake cross native gem MAKE="make -j`nproc`"
|
301
297
|
EOT
|
302
298
|
end
|
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 );
|
@@ -230,6 +234,10 @@
|
|
230
234
|
VALUE klass = define_error_class( "NumericValueOutOfRange", "22" );
|
231
235
|
register_error_class( "22003", klass );
|
232
236
|
}
|
237
|
+
{
|
238
|
+
VALUE klass = define_error_class( "SequenceGeneratorLimitExceeded", "22" );
|
239
|
+
register_error_class( "2200H", klass );
|
240
|
+
}
|
233
241
|
{
|
234
242
|
VALUE klass = define_error_class( "StringDataLengthMismatch", "22" );
|
235
243
|
register_error_class( "22026", klass );
|
@@ -587,6 +595,10 @@
|
|
587
595
|
VALUE klass = define_error_class( "WrongObjectType", "42" );
|
588
596
|
register_error_class( "42809", klass );
|
589
597
|
}
|
598
|
+
{
|
599
|
+
VALUE klass = define_error_class( "GeneratedAlways", "42" );
|
600
|
+
register_error_class( "428C9", klass );
|
601
|
+
}
|
590
602
|
{
|
591
603
|
VALUE klass = define_error_class( "UndefinedColumn", "42" );
|
592
604
|
register_error_class( "42703", klass );
|
data/ext/errorcodes.rb
CHANGED
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-2018, 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
|
@@ -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
|
@@ -188,6 +189,7 @@ Section: Class 22 - Data Exception
|
|
188
189
|
22004 E ERRCODE_NULL_VALUE_NOT_ALLOWED null_value_not_allowed
|
189
190
|
22002 E ERRCODE_NULL_VALUE_NO_INDICATOR_PARAMETER null_value_no_indicator_parameter
|
190
191
|
22003 E ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE numeric_value_out_of_range
|
192
|
+
2200H E ERRCODE_SEQUENCE_GENERATOR_LIMIT_EXCEEDED sequence_generator_limit_exceeded
|
191
193
|
22026 E ERRCODE_STRING_DATA_LENGTH_MISMATCH string_data_length_mismatch
|
192
194
|
22001 E ERRCODE_STRING_DATA_RIGHT_TRUNCATION string_data_right_truncation
|
193
195
|
22011 E ERRCODE_SUBSTRING_ERROR substring_error
|
@@ -326,6 +328,7 @@ Section: Class 42 - Syntax Error or Access Rule Violation
|
|
326
328
|
42P21 E ERRCODE_COLLATION_MISMATCH collation_mismatch
|
327
329
|
42P22 E ERRCODE_INDETERMINATE_COLLATION indeterminate_collation
|
328
330
|
42809 E ERRCODE_WRONG_OBJECT_TYPE wrong_object_type
|
331
|
+
428C9 E ERRCODE_GENERATED_ALWAYS generated_always
|
329
332
|
|
330
333
|
# Note: for ERRCODE purposes, we divide namable objects into these categories:
|
331
334
|
# databases, schemas, prepared statements, cursors, tables, columns,
|
data/ext/extconf.rb
CHANGED
@@ -60,48 +60,30 @@ abort "Can't find the PostgreSQL client library (libpq)" unless
|
|
60
60
|
have_library( 'libpq', 'PQconnectdb', ['libpq-fe.h'] ) ||
|
61
61
|
have_library( 'ms/libpq', 'PQconnectdb', ['libpq-fe.h'] )
|
62
62
|
|
63
|
+
if /mingw/ =~ RUBY_PLATFORM && RbConfig::MAKEFILE_CONFIG['CC'] =~ /gcc/
|
64
|
+
# Work around: https://sourceware.org/bugzilla/show_bug.cgi?id=22504
|
65
|
+
checking_for "workaround gcc version with link issue" do
|
66
|
+
`#{RbConfig::MAKEFILE_CONFIG['CC']} --version`.chomp =~ /\s(\d+)\.\d+\.\d+(\s|$)/ &&
|
67
|
+
$1.to_i >= 6 &&
|
68
|
+
have_library(':libpq.lib') # Prefer linking to libpq.lib over libpq.dll if available
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
63
72
|
# optional headers/functions
|
64
|
-
have_func '
|
73
|
+
have_func 'PQsetSingleRowMode' or
|
65
74
|
abort "Your PostgreSQL is too old. Either install an older version " +
|
66
|
-
"of this gem or upgrade your database."
|
67
|
-
have_func 'PQisthreadsafe'
|
68
|
-
have_func 'PQprepare'
|
69
|
-
have_func 'PQexecParams'
|
70
|
-
have_func 'PQescapeString'
|
71
|
-
have_func 'PQescapeStringConn'
|
72
|
-
have_func 'PQescapeLiteral'
|
73
|
-
have_func 'PQescapeIdentifier'
|
74
|
-
have_func 'PQgetCancel'
|
75
|
-
have_func 'lo_create'
|
76
|
-
have_func 'pg_encoding_to_char'
|
77
|
-
have_func 'pg_char_to_encoding'
|
78
|
-
have_func 'PQsetClientEncoding'
|
79
|
-
have_func 'PQlibVersion'
|
80
|
-
have_func 'PQping'
|
81
|
-
have_func 'PQsetSingleRowMode'
|
75
|
+
"of this gem or upgrade your database to at least PostgreSQL-9.2."
|
82
76
|
have_func 'PQconninfo'
|
83
77
|
have_func 'PQsslAttribute'
|
78
|
+
have_func 'PQencryptPasswordConn'
|
79
|
+
have_func 'timegm'
|
80
|
+
have_func 'rb_gc_adjust_memory_usage'
|
84
81
|
|
85
|
-
have_func 'rb_encdb_alias'
|
86
|
-
have_func 'rb_enc_alias'
|
87
|
-
have_func 'rb_thread_call_without_gvl'
|
88
|
-
have_func 'rb_thread_call_with_gvl'
|
89
|
-
have_func 'rb_thread_fd_select'
|
90
|
-
have_func 'rb_w32_wrap_io_handle'
|
91
|
-
have_func 'rb_str_modify_expand'
|
92
|
-
have_func 'rb_hash_dup'
|
93
|
-
|
94
|
-
have_const 'PGRES_COPY_BOTH', 'libpq-fe.h'
|
95
|
-
have_const 'PGRES_SINGLE_TUPLE', 'libpq-fe.h'
|
96
82
|
have_const 'PG_DIAG_TABLE_NAME', 'libpq-fe.h'
|
97
83
|
|
98
|
-
$defs.push( "-DHAVE_ST_NOTIFY_EXTRA" ) if
|
99
|
-
have_struct_member 'struct pgNotify', 'extra', 'libpq-fe.h'
|
100
|
-
|
101
84
|
# unistd.h confilicts with ruby/win32.h when cross compiling for win32 and ruby 1.9.1
|
102
85
|
have_header 'unistd.h'
|
103
86
|
have_header 'inttypes.h'
|
104
|
-
have_header 'ruby/st.h' or have_header 'st.h' or abort "pg currently requires the ruby/st.h header"
|
105
87
|
|
106
88
|
checking_for "C99 variable length arrays" do
|
107
89
|
$defs.push( "-DHAVE_VARIABLE_LENGTH_ARRAYS" ) if try_compile('void test_vla(int l){ int vla[l]; }')
|