pg 0.18.2 → 0.18.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/ChangeLog +261 -2
- data/History.rdoc +13 -0
- data/README-Windows.rdoc +15 -26
- data/README.rdoc +2 -1
- data/Rakefile +2 -0
- data/Rakefile.cross +41 -20
- data/ext/pg_connection.c +5 -5
- data/ext/util.c +2 -2
- data/lib/pg.rb +2 -2
- data/lib/pg/basic_type_mapping.rb +35 -35
- data/lib/pg/text_decoder.rb +3 -1
- data/spec/helpers.rb +1 -1
- data/spec/pg/basic_type_mapping_spec.rb +4 -4
- data/spec/pg/connection_spec.rb +5 -2
- data/spec/pg/type_spec.rb +2 -0
- metadata +19 -5
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71b5c038eee17a71788dfba8107b05e3e5abf97f
|
4
|
+
data.tar.gz: 4c4bc07dd354ab5dda95123a4c6ae8ba40ef77a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da86cff37eeb015b02dad06bd877249d705bb54f64d8c4199254b369a5baa0617694124130e83fd850872bc88fc9845c06cfbfb64614987375421c86d88d0965
|
7
|
+
data.tar.gz: 468aa7dc975636161da5fe512a9a0efcdc3e95f9282dd20cf0e82de9854deaaac3150a32f531947904cc665763d795767c3332767dfe38d7b90a94d8faff01d9
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/ChangeLog
CHANGED
@@ -1,8 +1,267 @@
|
|
1
|
+
2015-09-03 Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
* History.rdoc:
|
4
|
+
Added recent fix to the History file
|
5
|
+
[f12dc2f1ce14] [tip]
|
6
|
+
|
7
|
+
2015-09-01 Lars Kanis <lars@greiz-reinsdorf.de>
|
8
|
+
|
9
|
+
* lib/pg/text_decoder.rb:
|
10
|
+
Add missing require
|
11
|
+
[d0ba6a2cb10f]
|
12
|
+
|
13
|
+
* Merge pull request #9 from ramfjord/date-decoder-return-dates
|
14
|
+
|
15
|
+
Date decoder to return real Dates
|
16
|
+
[676def89b826]
|
17
|
+
|
18
|
+
2015-06-21 Thomas Ramfjord <thomas.ramfjord@gmail.com>
|
19
|
+
|
20
|
+
* lib/pg/text_decoder.rb, spec/pg/basic_type_mapping_spec.rb:
|
21
|
+
modified TextDecoder::Date to return an actual ruby Date instead of
|
22
|
+
a Time
|
23
|
+
[c50593d12ba2]
|
24
|
+
|
25
|
+
2015-08-20 Lars Kanis <lars@greiz-reinsdorf.de>
|
26
|
+
|
27
|
+
* Rakefile:
|
28
|
+
Add include for Hoe::MercurialHelpers as a temporary solution for
|
29
|
+
the error:
|
30
|
+
|
31
|
+
Packaging tasks require the hoe-mercurial plugin (gem install hoe-
|
32
|
+
mercurial)
|
33
|
+
[a84f83ff5b31]
|
34
|
+
|
35
|
+
* History.rdoc:
|
36
|
+
Update History.rdoc
|
37
|
+
[cadfac537e73]
|
38
|
+
|
39
|
+
* Merge branch 'master' of github.com:larskanis/ruby-pg
|
40
|
+
[d27d6d5a6545]
|
41
|
+
|
42
|
+
* README.rdoc:
|
43
|
+
Add Appveyor status badge to the README.
|
44
|
+
[c9637c6efcfb]
|
45
|
+
|
46
|
+
* appveyor.yml:
|
47
|
+
Use 9.3 because 9.0, 9.1 and 9.2 segfault in PG.init_openssl
|
48
|
+
[158f6649b7b8]
|
49
|
+
|
50
|
+
* spec/pg/connection_spec.rb:
|
51
|
+
Skip conn#host test on Windows-x64, because it segfaults, currently.
|
52
|
+
[04110aad7fc6]
|
53
|
+
|
54
|
+
* spec/pg/connection_spec.rb:
|
55
|
+
libpq on Windows doesn't respect the PGPORT env variable, so we
|
56
|
+
accept both.
|
57
|
+
[b4b666011f3f]
|
58
|
+
|
59
|
+
* spec/helpers.rb:
|
60
|
+
Older versions of PostgreSQL don't have a pid column, so this could
|
61
|
+
raise an exception: TypeError: can't convert nil into Integer
|
62
|
+
[48f1145fa631]
|
63
|
+
|
64
|
+
* Rakefile.cross:
|
65
|
+
Update OpenSSL version for Windows cross build.
|
66
|
+
[be6b75fef0ff]
|
67
|
+
|
68
|
+
* appveyor.yml:
|
69
|
+
Add CI-tests on appveyor.
|
70
|
+
[c2dc9e491853]
|
71
|
+
|
72
|
+
2015-06-29 Lars Kanis <kanis@comcard.de>
|
73
|
+
|
74
|
+
* History.rdoc:
|
75
|
+
Merge branch 'master' of https://github.com/larskanis/ruby-pg
|
76
|
+
|
77
|
+
Conflicts: History.rdoc
|
78
|
+
[affb47533d82]
|
79
|
+
|
80
|
+
* History.rdoc, ext/util.c, spec/pg/type_spec.rb:
|
81
|
+
Fix data type resulting in wrong base64 encoding.
|
82
|
+
[5fb9170f6a7d]
|
83
|
+
|
84
|
+
2015-06-17 Lars Kanis <lars@greiz-reinsdorf.de>
|
85
|
+
|
86
|
+
* Gemfile, Rakefile, Rakefile.cross:
|
87
|
+
Update versions of rake-compiler-dock, OpenSSL and PostgreSQL.
|
88
|
+
[10c6b496314c]
|
89
|
+
|
90
|
+
2015-06-12 Lars Kanis <lars@greiz-reinsdorf.de>
|
91
|
+
|
92
|
+
* Rakefile.cross:
|
93
|
+
Update OpenSSL and PostgreSQL versions for cross build.
|
94
|
+
[02094cca1cf8]
|
95
|
+
|
96
|
+
2015-06-11 Lars Kanis <lars@greiz-reinsdorf.de>
|
97
|
+
|
98
|
+
* History.rdoc, README-Windows.rdoc:
|
99
|
+
Update README-Windows in regards to rake-compiler-dock.
|
100
|
+
[4d9fd821ec1e]
|
101
|
+
|
102
|
+
2015-06-09 Lars Kanis <kanis@comcard.de>
|
103
|
+
|
104
|
+
* Rakefile.cross:
|
105
|
+
Cross build: Ensure ChangeLog file is built on the host side before
|
106
|
+
entering the docker container.
|
107
|
+
[d32412acff38]
|
108
|
+
|
109
|
+
* Rakefile.cross:
|
110
|
+
Cross build: Add workaround for missing symlink support on Windows.
|
111
|
+
[52bb3eef00f0]
|
112
|
+
|
113
|
+
* Rakefile.cross:
|
114
|
+
Explicitly set the gcc-toolchain, instead of deriving from the rake-
|
115
|
+
compiler config.
|
116
|
+
|
117
|
+
Now, that we use the libpq.dll (instead of static linking), we can
|
118
|
+
mix the gcc-toolchains. So we better build the dll with the newer
|
119
|
+
mingw-w64 toolchain (instead of the old mingw32) and build only the
|
120
|
+
extension for ruby-1.9 with the old mingw32-gcc.
|
121
|
+
[b3d169fa189b]
|
122
|
+
|
123
|
+
* Merge https://github.com/ged/ruby-pg
|
124
|
+
[5aeb99dda0ca]
|
125
|
+
|
126
|
+
2015-05-25 Michael Granger <ged@FaerieMUD.org>
|
127
|
+
|
128
|
+
* lib/pg/basic_type_mapping.rb:
|
129
|
+
Whitespace fixes
|
130
|
+
[57cfbc230597]
|
131
|
+
|
132
|
+
2015-05-14 Michael Granger <ged@FaerieMUD.org>
|
133
|
+
|
134
|
+
* .hgtags:
|
135
|
+
Added tag v0.18.2 for changeset 22a361201fd1
|
136
|
+
[00d6997551e6]
|
137
|
+
|
138
|
+
* .hgsigs:
|
139
|
+
Added signature for changeset 7d31b04e7913
|
140
|
+
[d77ab8ab870e]
|
141
|
+
|
142
|
+
* History.rdoc, lib/pg.rb:
|
143
|
+
Bump patch version, update History
|
144
|
+
[fa56690fe72d]
|
145
|
+
|
146
|
+
* Merged with git branch.
|
147
|
+
[9b2c80df821d]
|
148
|
+
|
149
|
+
2015-06-09 Lars Kanis <kanis@comcard.de>
|
150
|
+
|
151
|
+
* Rakefile.cross:
|
152
|
+
Cross build: Copy gem signing key and certs to be accessable from
|
153
|
+
the docker container
|
154
|
+
[c5382a785f4d]
|
155
|
+
|
156
|
+
2015-06-08 Lars Kanis <lars@greiz-reinsdorf.de>
|
157
|
+
|
158
|
+
* Merged
|
159
|
+
[3d56a65c78c5]
|
160
|
+
|
161
|
+
* Gemfile, Rakefile, Rakefile.cross:
|
162
|
+
Add rake task 'gem:windows' which makes use of the new rake-
|
163
|
+
compiler-dock.
|
164
|
+
|
165
|
+
Also update the Gemfile per 'rake bundler:gemfile' .
|
166
|
+
[fafadd62cc6d]
|
167
|
+
|
168
|
+
* Rakefile.cross:
|
169
|
+
Cross build: Work around missing dependency to libcommon in
|
170
|
+
PostgreSQL-9.4.0
|
171
|
+
[630a22437026]
|
172
|
+
|
173
|
+
2015-05-25 Michael Granger <ged@FaerieMUD.org>
|
174
|
+
|
175
|
+
* ext/pg_connection.c:
|
176
|
+
Change instance_of checks to kind_of for subclassing [#220]
|
177
|
+
[eb4d3c003bd6] [github/kind-of-fix]
|
178
|
+
|
179
|
+
* lib/pg/basic_type_mapping.rb:
|
180
|
+
Whitespace fixes
|
181
|
+
[4a4368e30bcf] [github/master]
|
182
|
+
|
183
|
+
2015-05-14 Michael Granger <ged@FaerieMUD.org>
|
184
|
+
|
185
|
+
* .hgtags:
|
186
|
+
Added tag v0.18.2 for changeset 22a361201fd1
|
187
|
+
[94e26b472c78]
|
188
|
+
|
189
|
+
* .hgsigs:
|
190
|
+
Added signature for changeset 7d31b04e7913
|
191
|
+
[22a361201fd1] [v0.18.2]
|
192
|
+
|
193
|
+
* History.rdoc, lib/pg.rb:
|
194
|
+
Bump patch version, update History
|
195
|
+
[7d31b04e7913]
|
196
|
+
|
197
|
+
* Merged with git branch.
|
198
|
+
[45a1753da19a]
|
199
|
+
|
200
|
+
* .rvm.gems:
|
201
|
+
Bump the rvm gemset gem versions
|
202
|
+
[8050020330d8]
|
203
|
+
|
204
|
+
2015-03-13 Lars Kanis <lars@greiz-reinsdorf.de>
|
205
|
+
|
206
|
+
* ext/pg_text_encoder.c, ext/util.c, ext/util.h:
|
207
|
+
Avoid possible symbol name clash when linking againt static libpq.
|
208
|
+
|
209
|
+
This should fix issue #209 .
|
210
|
+
[2334a1bc38e6]
|
211
|
+
|
212
|
+
2015-02-11 Lars Kanis <lars@greiz-reinsdorf.de>
|
213
|
+
|
214
|
+
* ext/pg.c, spec/pg/connection_spec.rb:
|
215
|
+
Merge from git branch.
|
216
|
+
[a7261eb6796f]
|
217
|
+
|
218
|
+
* ext/pg.h, ext/pg_text_decoder.c:
|
219
|
+
Merge branch 'non-c99-compiler'
|
220
|
+
[7e8f1e4da59d]
|
221
|
+
|
222
|
+
2015-02-06 Lars Kanis <lars@greiz-reinsdorf.de>
|
223
|
+
|
224
|
+
* ext/extconf.rb, ext/pg.h, ext/pg_result.c, ext/pg_text_decoder.c,
|
225
|
+
ext/pg_type_map_by_mri_type.c:
|
226
|
+
Use fixed size arrays in case the compiler doesn't support C99
|
227
|
+
variable length arrays.
|
228
|
+
|
229
|
+
This is notably the MSVC compiler.
|
230
|
+
|
231
|
+
Note: The MSVC build environment is currently not tested on a
|
232
|
+
regular base, so is not fully supported.
|
233
|
+
[a08290a78221]
|
234
|
+
|
235
|
+
2015-02-11 Lars Kanis <lars@greiz-reinsdorf.de>
|
236
|
+
|
237
|
+
* ext/pg_connection.c:
|
238
|
+
Replace quote_ident implementation with that of
|
239
|
+
PG::TextEncoder::Identifier .
|
240
|
+
|
241
|
+
This allowes quoation of array of strings in addition to plain
|
242
|
+
strings and removes duplicated code.
|
243
|
+
|
244
|
+
It also removes the 63 byte limitation and therefore obsolets pull
|
245
|
+
request #21 https://bitbucket.org/ged/ruby-pg/pull-request/21
|
246
|
+
[b8ac29b020ee]
|
247
|
+
|
248
|
+
* ext/pg.c, ext/pg.h, ext/pg_text_decoder.c, ext/pg_text_encoder.c,
|
249
|
+
spec/pg/connection_spec.rb, spec/pg/type_spec.rb:
|
250
|
+
Derive PG::TextDecoder::Identifier from PG::SimpleDecoder instead of
|
251
|
+
CompositeDecoder
|
252
|
+
|
253
|
+
.. and equally for Encoder.
|
254
|
+
|
255
|
+
Identifiers are strings, so there is no good reason to compose it
|
256
|
+
from other element types. This change allows a faster quoting
|
257
|
+
implementation.
|
258
|
+
[55ec58cabad4]
|
259
|
+
|
1
260
|
2015-05-14 Michael Granger <ged@FaerieMUD.org>
|
2
261
|
|
3
262
|
* .rvmrc:
|
4
263
|
Bump default rvm Ruby to 2.2
|
5
|
-
[128b075d5800]
|
264
|
+
[128b075d5800]
|
6
265
|
|
7
266
|
2015-03-13 Lars Kanis <lars@greiz-reinsdorf.de>
|
8
267
|
|
@@ -64,7 +323,7 @@
|
|
64
323
|
|
65
324
|
* README.rdoc, ext/pg.c:
|
66
325
|
Update copyright notices
|
67
|
-
[447962e0dcba]
|
326
|
+
[447962e0dcba]
|
68
327
|
|
69
328
|
* spec/pg/connection_spec.rb:
|
70
329
|
Whitespace fixes
|
data/History.rdoc
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
== v0.18.3 [2015-09-03] Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
Enhancements:
|
4
|
+
- Use rake-compiler-dock to build windows gems easily.
|
5
|
+
- Add CI-tests on appveyor and fix test cases accordingly.
|
6
|
+
|
7
|
+
Bugfixes:
|
8
|
+
- Fix data type resulting in wrong base64 encoding.
|
9
|
+
- Change instance_of checks to kind_of for subclassing. #220
|
10
|
+
- TextDecoder::Date returns an actual Ruby Date instead of a Time
|
11
|
+
(thanks to Thomas Ramfjord)
|
12
|
+
|
13
|
+
|
1
14
|
== v0.18.2 [2015-05-14] Michael Granger <ged@FaerieMUD.org>
|
2
15
|
|
3
16
|
Enhancements:
|
data/README-Windows.rdoc
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
In order to build this extension on MS Windows you will need a couple things.
|
4
4
|
|
5
|
-
First, a compiler. For the one click installer this means you should
|
6
|
-
|
7
|
-
|
5
|
+
First, a compiler. For the one click installer this means you should use
|
6
|
+
the DevKit or the compiler that comes with cygwin if you're building on that
|
7
|
+
platform.
|
8
8
|
|
9
9
|
If you've built Ruby yourself, you should use the same compiler to build
|
10
10
|
this library that you used to build Ruby.
|
@@ -29,34 +29,23 @@ Adjust your path accordingly. BE SURE TO USE THE SHORT PATH NAMES! If you
|
|
29
29
|
try to use a path with spaces in it, the nmake.exe program will choke.
|
30
30
|
|
31
31
|
|
32
|
-
==
|
32
|
+
== Building binary 'pg' gems for MS Windows
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
sources. There are no runtime dependencies to any but the standard Windows
|
38
|
-
DLLs.
|
34
|
+
Binary gems for windows can be built on Linux, OS-X and even on Windows
|
35
|
+
with the help of docker. This is how regular windows gems are built for
|
36
|
+
rubygems.org .
|
39
37
|
|
40
|
-
|
41
|
-
|
42
|
-
|
38
|
+
To do this, install boot2docker [on Windows](https://github.com/boot2docker/windows-installer/releases)
|
39
|
+
or [on OS X](https://github.com/boot2docker/osx-installer/releases) and make
|
40
|
+
sure it is started. A native Docker installation is best on Linux.
|
43
41
|
|
44
|
-
|
42
|
+
Then run:
|
45
43
|
|
46
|
-
rake
|
47
|
-
rake-compiler cross-ruby VERSION=1.9.2-p290
|
44
|
+
rake gem:windows
|
48
45
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
or with custom versions:
|
54
|
-
|
55
|
-
rake cross native gem RUBY_CC_VERSION=1.8.7:1.9.2 \
|
56
|
-
OPENSSL_VERSION=1.0.0e POSTGRESQL_VERSION=9.1.1
|
57
|
-
|
58
|
-
If everything works, there should be pg-VERSION-x86-mingw32.gem in the pkg
|
59
|
-
directory.
|
46
|
+
This will download a docker image suited for building windows gems, and it
|
47
|
+
will download and build OpenSSL and PostgreSQL. Finally the gem is built
|
48
|
+
containing binaries for all supported ruby versions.
|
60
49
|
|
61
50
|
|
62
51
|
== Reporting Problems
|
data/README.rdoc
CHANGED
@@ -29,7 +29,8 @@ A small example usage:
|
|
29
29
|
|
30
30
|
== Build Status
|
31
31
|
|
32
|
-
{<img src="https://travis-ci.org/ged/ruby-pg.png?branch=master" alt="Build Status" />}[https://travis-ci.org/ged/ruby-pg]
|
32
|
+
{<img src="https://travis-ci.org/ged/ruby-pg.png?branch=master" alt="Build Status Travis-CI" />}[https://travis-ci.org/ged/ruby-pg]
|
33
|
+
{<img src="https://ci.appveyor.com/api/projects/status/at4g4swb2cd4xji7/branch/master?svg=true" alt="Build Status Appveyor" />}[https://ci.appveyor.com/api/projects/status/at4g4swb2cd4xji7/branch/master]
|
33
34
|
|
34
35
|
|
35
36
|
== Requirements
|
data/Rakefile
CHANGED
@@ -61,6 +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', '~> 0.9', :developer
|
64
|
+
self.dependency 'rake-compiler-dock', '~> 0.3', :developer
|
64
65
|
self.dependency 'hoe', '~> 3.12', :developer
|
65
66
|
self.dependency 'hoe-deveiate', '~> 0.6', :developer
|
66
67
|
self.dependency 'hoe-bundler', '~> 1.0', :developer
|
@@ -150,6 +151,7 @@ file 'ChangeLog' do |task|
|
|
150
151
|
if File.exist?('.hg/branch')
|
151
152
|
$stderr.puts "Updating the changelog..."
|
152
153
|
begin
|
154
|
+
include Hoe::MercurialHelpers
|
153
155
|
content = make_changelog()
|
154
156
|
rescue NameError
|
155
157
|
abort "Packaging tasks require the hoe-mercurial plugin (gem install hoe-mercurial)"
|
data/Rakefile.cross
CHANGED
@@ -21,17 +21,28 @@ 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.
|
32
|
-
self.postgresql_version = ENV['POSTGRESQL_VERSION'] || '9.
|
33
|
-
|
34
|
-
|
32
|
+
self.openssl_version = ENV['OPENSSL_VERSION'] || '1.0.2d'
|
33
|
+
self.postgresql_version = ENV['POSTGRESQL_VERSION'] || '9.4.4'
|
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 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
|
37
48
|
|
@@ -67,17 +78,6 @@ class CrossLibrary < OpenStruct
|
|
67
78
|
self.postgresql_lib = static_postgresql_libdir + 'libpq.dll'
|
68
79
|
self.postgresql_patches = Rake::FileList[ (MISCDIR + "postgresql-#{postgresql_version}.*.patch").to_s ]
|
69
80
|
|
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\["CC"\] = "(.*)"/)[1].sub(/\-gcc/, '')
|
76
|
-
rescue
|
77
|
-
nil
|
78
|
-
end
|
79
|
-
|
80
|
-
|
81
81
|
# clean intermediate files and folders
|
82
82
|
CLEAN.include( static_builddir.to_s )
|
83
83
|
|
@@ -217,6 +217,11 @@ class CrossLibrary < OpenStruct
|
|
217
217
|
|
218
218
|
# make libpq.dll
|
219
219
|
task postgresql_lib => [ postgresql_global_makefile ] do |t|
|
220
|
+
# Work around missing dependency to libcommon in PostgreSQL-9.4.0
|
221
|
+
chdir( static_postgresql_srcdir + "common" ) do
|
222
|
+
sh 'make', "-j#{NUM_CPUS}"
|
223
|
+
end
|
224
|
+
|
220
225
|
chdir( postgresql_lib.dirname ) do
|
221
226
|
sh 'make',
|
222
227
|
"-j#{NUM_CPUS}",
|
@@ -246,10 +251,10 @@ end
|
|
246
251
|
|
247
252
|
if File.exist?(File.expand_path("~/.rake-compiler/config.yml"))
|
248
253
|
CrossLibraries = [
|
249
|
-
['i386-mingw32', 'mingw'],
|
250
|
-
['x64-mingw32', 'mingw64'],
|
251
|
-
].map do |platform, openssl_config|
|
252
|
-
CrossLibrary.new platform, openssl_config
|
254
|
+
['i386-mingw32', 'mingw', 'i686-w64-mingw32'],
|
255
|
+
['x64-mingw32', 'mingw64', 'x86_64-w64-mingw32'],
|
256
|
+
].map do |platform, openssl_config, toolchain|
|
257
|
+
CrossLibrary.new platform, openssl_config, toolchain
|
253
258
|
end
|
254
259
|
else
|
255
260
|
$stderr.puts "Cross-compilation disabled -- rake-compiler not properly installed"
|
@@ -278,3 +283,19 @@ ENV['RUBY_CC_VERSION'].to_s.split(':').each do |ruby_version|
|
|
278
283
|
sh "x86_64-w64-mingw32-strip -S tmp/x64-mingw32/stage/lib/#{ruby_version[/^\d+\.\d+/]}/pg_ext.so"
|
279
284
|
end
|
280
285
|
end
|
286
|
+
|
287
|
+
desc "Build the windows binary gems"
|
288
|
+
task 'gem:windows' => ['ChangeLog'] do
|
289
|
+
require 'rake_compiler_dock'
|
290
|
+
|
291
|
+
# Copy gem signing key and certs to be accessable from the docker container
|
292
|
+
mkdir_p 'build/gem'
|
293
|
+
sh "cp ~/.gem/gem-*.pem build/gem/"
|
294
|
+
|
295
|
+
RakeCompilerDock.sh <<-EOT
|
296
|
+
mkdir ~/.gem &&
|
297
|
+
cp build/gem/gem-*.pem ~/.gem/ &&
|
298
|
+
bundle install &&
|
299
|
+
rake cross native gem RUBYOPT=--disable-rubygems RUBY_CC_VERSION=1.9.3:2.0.0:2.1.6:2.2.2
|
300
|
+
EOT
|
301
|
+
end
|
data/ext/pg_connection.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
* pg_connection.c - PG::Connection class extension
|
3
|
-
* $Id: pg_connection.c,v
|
3
|
+
* $Id: pg_connection.c,v eb4d3c003bd6 2015/05/25 20:04:04 ged $
|
4
4
|
*
|
5
5
|
*/
|
6
6
|
|
@@ -1534,7 +1534,7 @@ pgconn_s_escape(VALUE self, VALUE string)
|
|
1534
1534
|
Check_Type(string, T_STRING);
|
1535
1535
|
|
1536
1536
|
escaped = ALLOC_N(char, RSTRING_LEN(string) * 2 + 1);
|
1537
|
-
if(
|
1537
|
+
if( rb_obj_is_kind_of(self, rb_cPGconn) ) {
|
1538
1538
|
size = PQescapeStringConn(pg_get_pgconn(self), escaped,
|
1539
1539
|
RSTRING_PTR(string), RSTRING_LEN(string), &error);
|
1540
1540
|
if(error) {
|
@@ -1547,7 +1547,7 @@ pgconn_s_escape(VALUE self, VALUE string)
|
|
1547
1547
|
result = rb_str_new(escaped, size);
|
1548
1548
|
xfree(escaped);
|
1549
1549
|
OBJ_INFECT(result, string);
|
1550
|
-
PG_ENCODING_SET_NOCHECK(result, ENCODING_GET(
|
1550
|
+
PG_ENCODING_SET_NOCHECK(result, ENCODING_GET( rb_obj_is_kind_of(self, rb_cPGconn) ? self : string ));
|
1551
1551
|
|
1552
1552
|
return result;
|
1553
1553
|
}
|
@@ -1587,7 +1587,7 @@ pgconn_s_escape_bytea(VALUE self, VALUE str)
|
|
1587
1587
|
from = (unsigned char*)RSTRING_PTR(str);
|
1588
1588
|
from_len = RSTRING_LEN(str);
|
1589
1589
|
|
1590
|
-
if(
|
1590
|
+
if ( rb_obj_is_kind_of(self, rb_cPGconn) ) {
|
1591
1591
|
to = PQescapeByteaConn(pg_get_pgconn(self), from, from_len, &to_len);
|
1592
1592
|
} else {
|
1593
1593
|
to = PQescapeBytea( from, from_len, &to_len);
|
@@ -3031,7 +3031,7 @@ pgconn_s_quote_ident(VALUE self, VALUE in_str)
|
|
3031
3031
|
pg_text_enc_identifier(NULL, in_str, NULL, &ret);
|
3032
3032
|
|
3033
3033
|
OBJ_INFECT(ret, in_str);
|
3034
|
-
PG_ENCODING_SET_NOCHECK(ret, ENCODING_GET(
|
3034
|
+
PG_ENCODING_SET_NOCHECK(ret, ENCODING_GET( rb_obj_is_kind_of(self, rb_cPGconn) ? self : in_str ));
|
3035
3035
|
|
3036
3036
|
return ret;
|
3037
3037
|
}
|
data/ext/util.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
* util.c - Utils for ruby-pg
|
3
|
-
* $Id: util.c,v
|
3
|
+
* $Id: util.c,v 5fb9170f6a7d 2015/06/29 11:15:12 kanis $
|
4
4
|
*
|
5
5
|
*/
|
6
6
|
|
@@ -17,7 +17,7 @@ static const char base64_encode_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk
|
|
17
17
|
void
|
18
18
|
base64_encode( char *out, char *in, int len)
|
19
19
|
{
|
20
|
-
char *in_ptr = in + len;
|
20
|
+
unsigned char *in_ptr = (unsigned char *)in + len;
|
21
21
|
char *out_ptr = out + BASE64_ENCODED_SIZE(len);
|
22
22
|
int part_len = len % 3;
|
23
23
|
|
data/lib/pg.rb
CHANGED
@@ -25,9 +25,9 @@ module PG::BasicTypeRegistry
|
|
25
25
|
|
26
26
|
# populate the enum types
|
27
27
|
_enums, leaves = leaves.partition { |row| row['typinput'] == 'enum_in' }
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
# enums.each do |row|
|
29
|
+
# coder_map[row['oid'].to_i] = OID::Enum.new
|
30
|
+
# end
|
31
31
|
|
32
32
|
# populate the base types
|
33
33
|
leaves.find_all { |row| coders_by_name.key?(row['typname']) }.each do |row|
|
@@ -41,9 +41,9 @@ module PG::BasicTypeRegistry
|
|
41
41
|
_records_by_oid = result.group_by { |row| row['oid'] }
|
42
42
|
|
43
43
|
# populate composite types
|
44
|
-
|
45
|
-
|
46
|
-
|
44
|
+
# nodes.each do |row|
|
45
|
+
# add_oid row, records_by_oid, coder_map
|
46
|
+
# end
|
47
47
|
|
48
48
|
if arraycoder
|
49
49
|
# populate array types
|
@@ -62,11 +62,11 @@ module PG::BasicTypeRegistry
|
|
62
62
|
end
|
63
63
|
|
64
64
|
# populate range types
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
65
|
+
# ranges.find_all { |row| coder_map.key? row['rngsubtype'].to_i }.each do |row|
|
66
|
+
# subcoder = coder_map[row['rngsubtype'].to_i]
|
67
|
+
# range = OID::Range.new subcoder
|
68
|
+
# coder_map[row['oid'].to_i] = range
|
69
|
+
# end
|
70
70
|
|
71
71
|
@coders = coder_map.values
|
72
72
|
@coders_by_name = @coders.inject({}){|h, t| h[t.name] = t; h }
|
@@ -154,46 +154,46 @@ module PG::BasicTypeRegistry
|
|
154
154
|
alias_type 0, 'int8', 'int2'
|
155
155
|
alias_type 0, 'oid', 'int2'
|
156
156
|
|
157
|
-
#
|
157
|
+
# register_type 0, 'numeric', OID::Decimal.new
|
158
158
|
register_type 0, 'text', PG::TextEncoder::String, PG::TextDecoder::String
|
159
159
|
alias_type 0, 'varchar', 'text'
|
160
160
|
alias_type 0, 'char', 'text'
|
161
161
|
alias_type 0, 'bpchar', 'text'
|
162
162
|
alias_type 0, 'xml', 'text'
|
163
163
|
|
164
|
-
#
|
165
|
-
#
|
166
|
-
#
|
167
|
-
#
|
168
|
-
#
|
169
|
-
#
|
170
|
-
#
|
164
|
+
# FIXME: why are we keeping these types as strings?
|
165
|
+
# alias_type 'tsvector', 'text'
|
166
|
+
# alias_type 'interval', 'text'
|
167
|
+
# alias_type 'macaddr', 'text'
|
168
|
+
# alias_type 'uuid', 'text'
|
169
|
+
#
|
170
|
+
# register_type 'money', OID::Money.new
|
171
171
|
# There is no PG::TextEncoder::Bytea, because it's simple and more efficient to send bytea-data
|
172
172
|
# in binary format, either with PG::BinaryEncoder::Bytea or in Hash param format.
|
173
173
|
register_type 0, 'bytea', nil, PG::TextDecoder::Bytea
|
174
174
|
register_type 0, 'bool', PG::TextEncoder::Boolean, PG::TextDecoder::Boolean
|
175
|
-
#
|
176
|
-
#
|
177
|
-
|
175
|
+
# register_type 'bit', OID::Bit.new
|
176
|
+
# register_type 'varbit', OID::Bit.new
|
177
|
+
|
178
178
|
register_type 0, 'float4', PG::TextEncoder::Float, PG::TextDecoder::Float
|
179
179
|
alias_type 0, 'float8', 'float4'
|
180
180
|
|
181
181
|
register_type 0, 'timestamp', PG::TextEncoder::TimestampWithoutTimeZone, PG::TextDecoder::TimestampWithoutTimeZone
|
182
182
|
register_type 0, 'timestamptz', PG::TextEncoder::TimestampWithTimeZone, PG::TextDecoder::TimestampWithTimeZone
|
183
183
|
register_type 0, 'date', PG::TextEncoder::Date, PG::TextDecoder::Date
|
184
|
-
#
|
185
|
-
#
|
186
|
-
#
|
187
|
-
#
|
188
|
-
#
|
189
|
-
#
|
190
|
-
#
|
191
|
-
#
|
192
|
-
#
|
193
|
-
#
|
194
|
-
#
|
195
|
-
#
|
196
|
-
#
|
184
|
+
# register_type 'time', OID::Time.new
|
185
|
+
#
|
186
|
+
# register_type 'path', OID::Text.new
|
187
|
+
# register_type 'point', OID::Point.new
|
188
|
+
# register_type 'polygon', OID::Text.new
|
189
|
+
# register_type 'circle', OID::Text.new
|
190
|
+
# register_type 'hstore', OID::Hstore.new
|
191
|
+
# register_type 'json', OID::Json.new
|
192
|
+
# register_type 'citext', OID::Text.new
|
193
|
+
# register_type 'ltree', OID::Text.new
|
194
|
+
#
|
195
|
+
# register_type 'cidr', OID::Cidr.new
|
196
|
+
# alias_type 'inet', 'cidr'
|
197
197
|
|
198
198
|
|
199
199
|
|
data/lib/pg/text_decoder.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
require 'date'
|
4
|
+
|
3
5
|
module PG
|
4
6
|
module TextDecoder
|
5
7
|
class Date < SimpleDecoder
|
@@ -7,7 +9,7 @@ module PG
|
|
7
9
|
|
8
10
|
def decode(string, tuple=nil, field=nil)
|
9
11
|
if string =~ ISO_DATE
|
10
|
-
|
12
|
+
::Date.new $1.to_i, $2.to_i, $3.to_i
|
11
13
|
else
|
12
14
|
string
|
13
15
|
end
|
data/spec/helpers.rb
CHANGED
@@ -255,7 +255,7 @@ module PG::TestingHelpers
|
|
255
255
|
unless conns.empty?
|
256
256
|
puts "Lingering connections remain:"
|
257
257
|
conns.each do |row|
|
258
|
-
puts " [%
|
258
|
+
puts " [%s] {%s} %s -- %s" % row.values_at( 'pid', 'state', 'application_name', 'query' )
|
259
259
|
end
|
260
260
|
end
|
261
261
|
end
|
@@ -58,8 +58,8 @@ describe 'Basic type mapping' do
|
|
58
58
|
it "should do OID based type conversions", :ruby_19 do
|
59
59
|
res = @conn.exec( "SELECT 1, 'a', 2.0::FLOAT, TRUE, '2013-06-30'::DATE, generate_series(4,5)" )
|
60
60
|
expect( res.map_types!(basic_type_mapping).values ).to eq( [
|
61
|
-
[ 1, 'a', 2.0, true,
|
62
|
-
[ 1, 'a', 2.0, true,
|
61
|
+
[ 1, 'a', 2.0, true, Date.new(2013,6,30), 4 ],
|
62
|
+
[ 1, 'a', 2.0, true, Date.new(2013,6,30), 5 ],
|
63
63
|
] )
|
64
64
|
end
|
65
65
|
|
@@ -159,8 +159,8 @@ describe 'Basic type mapping' do
|
|
159
159
|
CAST('1913-12-31' AS DATE),
|
160
160
|
CAST('infinity' AS DATE),
|
161
161
|
CAST('-infinity' AS DATE)", [], format )
|
162
|
-
expect( res.getvalue(0,0) ).to eq(
|
163
|
-
expect( res.getvalue(0,1) ).to eq(
|
162
|
+
expect( res.getvalue(0,0) ).to eq( Date.new(2113, 12, 31) )
|
163
|
+
expect( res.getvalue(0,1) ).to eq( Date.new(1913, 12, 31) )
|
164
164
|
expect( res.getvalue(0,2) ).to eq( 'infinity' )
|
165
165
|
expect( res.getvalue(0,3) ).to eq( '-infinity' )
|
166
166
|
end
|
data/spec/pg/connection_spec.rb
CHANGED
@@ -228,11 +228,14 @@ describe PG::Connection do
|
|
228
228
|
expect( @conn.db ).to eq( "test" )
|
229
229
|
expect( @conn.user ).to be_a_kind_of( String )
|
230
230
|
expect( @conn.pass ).to eq( "" )
|
231
|
-
expect( @conn.host ).to eq( "localhost" )
|
232
231
|
expect( @conn.port ).to eq( 54321 )
|
233
232
|
expect( @conn.tty ).to eq( "" )
|
234
233
|
expect( @conn.options ).to eq( "" )
|
235
234
|
end
|
235
|
+
it "can retrieve it's connection parameters for the established connection",
|
236
|
+
skip: RUBY_PLATFORM=~/x64-mingw/ ? "host segfaults on Windows-x64" : false do
|
237
|
+
expect( @conn.host ).to eq( "localhost" )
|
238
|
+
end
|
236
239
|
|
237
240
|
EXPECTED_TRACE_OUTPUT = %{
|
238
241
|
To backend> Msg Q
|
@@ -705,7 +708,7 @@ describe PG::Connection do
|
|
705
708
|
it "can return the default connection options as a Hash" do
|
706
709
|
expect( described_class.conndefaults_hash ).to be_a( Hash )
|
707
710
|
expect( described_class.conndefaults_hash ).to include( :user, :password, :dbname, :host, :port )
|
708
|
-
expect(
|
711
|
+
expect( ['5432', '54321'] ).to include( described_class.conndefaults_hash[:port] )
|
709
712
|
expect( @conn.conndefaults_hash ).to eq( described_class.conndefaults_hash )
|
710
713
|
end
|
711
714
|
|
data/spec/pg/type_spec.rb
CHANGED
@@ -512,6 +512,7 @@ describe "PG::Type derivations" do
|
|
512
512
|
expect( e.encode("xxxx") ).to eq("eHh4eA==")
|
513
513
|
expect( e.encode("xxxxx") ).to eq("eHh4eHg=")
|
514
514
|
expect( e.encode("\0\n\t") ).to eq("AAoJ")
|
515
|
+
expect( e.encode("(\xFBm") ).to eq("KPtt")
|
515
516
|
end
|
516
517
|
|
517
518
|
it "should encode Strings as base64 in BinaryDecoder" do
|
@@ -540,6 +541,7 @@ describe "PG::Type derivations" do
|
|
540
541
|
expect( e.decode("eHh4eA==") ).to eq("xxxx")
|
541
542
|
expect( e.decode("eHh4eHg=") ).to eq("xxxxx")
|
542
543
|
expect( e.decode("AAoJ") ).to eq("\0\n\t")
|
544
|
+
expect( e.decode("KPtt") ).to eq("(\xFBm")
|
543
545
|
end
|
544
546
|
|
545
547
|
it "should decode base64 in BinaryEncoder" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.18.
|
4
|
+
version: 0.18.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Granger
|
@@ -31,7 +31,7 @@ cert_chain:
|
|
31
31
|
G8LHR7EjtPPmqCCunfyecJ6MmCNaiJCBxq2NYzyNmluPyHT8+0fuB5kccUVZm6CD
|
32
32
|
xn3DzOkDE6NYbk8gC9rTsA==
|
33
33
|
-----END CERTIFICATE-----
|
34
|
-
date: 2015-
|
34
|
+
date: 2015-09-03 00:00:00.000000000 Z
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: hoe-mercurial
|
@@ -53,14 +53,14 @@ dependencies:
|
|
53
53
|
requirements:
|
54
54
|
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: '0.
|
56
|
+
version: '0.7'
|
57
57
|
type: :development
|
58
58
|
prerelease: false
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - "~>"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: '0.
|
63
|
+
version: '0.7'
|
64
64
|
- !ruby/object:Gem::Dependency
|
65
65
|
name: hoe-highline
|
66
66
|
requirement: !ruby/object:Gem::Requirement
|
@@ -103,6 +103,20 @@ dependencies:
|
|
103
103
|
- - "~>"
|
104
104
|
- !ruby/object:Gem::Version
|
105
105
|
version: '0.9'
|
106
|
+
- !ruby/object:Gem::Dependency
|
107
|
+
name: rake-compiler-dock
|
108
|
+
requirement: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - "~>"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0.3'
|
113
|
+
type: :development
|
114
|
+
prerelease: false
|
115
|
+
version_requirements: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0.3'
|
106
120
|
- !ruby/object:Gem::Dependency
|
107
121
|
name: hoe
|
108
122
|
requirement: !ruby/object:Gem::Requirement
|
@@ -315,7 +329,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
315
329
|
version: '0'
|
316
330
|
requirements: []
|
317
331
|
rubyforge_project:
|
318
|
-
rubygems_version: 2.4.
|
332
|
+
rubygems_version: 2.4.7
|
319
333
|
signing_key:
|
320
334
|
specification_version: 4
|
321
335
|
summary: Pg is the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/]
|
metadata.gz.sig
CHANGED
Binary file
|