pg 0.17.0-x86-mingw32 → 0.17.1-x86-mingw32
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 +7 -7
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/ChangeLog +121 -196
- data/History.rdoc +16 -0
- data/Rakefile.cross +1 -0
- data/ext/gvl_wrappers.c +0 -6
- data/ext/gvl_wrappers.h +42 -42
- data/ext/pg_connection.c +14 -18
- data/lib/1.8/pg_ext.so +0 -0
- data/lib/1.9/pg_ext.so +0 -0
- data/lib/2.0/pg_ext.so +0 -0
- data/lib/pg.rb +1 -1
- data/lib/pg/connection.rb +8 -0
- data/spec/pg/connection_spec.rb +24 -1
- metadata +99 -104
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
5
|
-
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4c7c29f40f9a51dc5ee533c2941b10ef46b94c82
|
4
|
+
data.tar.gz: e8e9df256383c926e8ed75c8f723a97e646cff41
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0b583b54222a42592c2d5cc23160b513b127b896098d5a89f68205274416622821c3a47b3ac60c9a37e9da36fca94cd08398a5462328e48729c6f2edd5ea1d36
|
7
|
+
data.tar.gz: 3ba6db810aad50bede098a71433e23b1ff4a49fd673589718d52170b7eaec878466a2dedb43a6c0d3476b772311e9a1ecfe06e8b72c2f34bc55f04dd6744aa8e
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/ChangeLog
CHANGED
@@ -1,8 +1,46 @@
|
|
1
|
+
2013-12-09 Lars Kanis <kanis@comcard.de>
|
2
|
+
|
3
|
+
* ext/gvl_wrappers.c, ext/gvl_wrappers.h, ext/pg_connection.c,
|
4
|
+
spec/pg/connection_spec.rb:
|
5
|
+
Revert commit e0492d4 "Ensure a query is canceled, if a thread is
|
6
|
+
about to be killed."
|
7
|
+
|
8
|
+
This is due to this discussion: https://groups.google.com/d/topic
|
9
|
+
/ruby-pg/5_ylGmog1S4/discussion
|
10
|
+
|
11
|
+
We were using rb_thread_call_without_gvl() with an ubf which
|
12
|
+
canceled the query currently being processed. This turned out to be
|
13
|
+
incompatible with possibly registered signal handlers (by
|
14
|
+
Signal.trap). A ubf is unconditionally invoked if ANY signal fires
|
15
|
+
on a process (eg even: USR1 or PROF) and Ruby has handlers
|
16
|
+
registered. Cancelling queries in those conditions does no make
|
17
|
+
sense.
|
18
|
+
|
19
|
+
This commit re-enables Connection#async_exec based on the async API
|
20
|
+
for all ruby versions, because async_exec allowes cancelation of
|
21
|
+
queries by signals like Control+C.
|
22
|
+
|
23
|
+
Thanks to Sam Saffron for highlighting this issue.
|
24
|
+
[97c3ec224be9] [tip] <revert_query_cancel_on_ubf>
|
25
|
+
|
26
|
+
2013-09-23 Michael Granger <ged@FaerieMUD.org>
|
27
|
+
|
28
|
+
* ext/pg_connection.c, lib/pg/connection.rb:
|
29
|
+
Fix documentation for PG::Connection::conndefaults.
|
30
|
+
[9812218e0654]
|
31
|
+
|
32
|
+
2013-09-20 Lars Kanis <lars@greiz-reinsdorf.de>
|
33
|
+
|
34
|
+
* ext/gvl_wrappers.h, ext/pg_connection.c:
|
35
|
+
Wrap PQcancel to be called without GVL. It internally waits for
|
36
|
+
close of the connection to be canceled.
|
37
|
+
[0ed6451d10a5]
|
38
|
+
|
1
39
|
2013-09-16 Michael Granger <ged@FaerieMUD.org>
|
2
40
|
|
3
41
|
* .hgtags:
|
4
42
|
Added tag v0.17.0 for changeset 30da9c169efc
|
5
|
-
[46f35f5b396e]
|
43
|
+
[46f35f5b396e]
|
6
44
|
|
7
45
|
* .hgsigs:
|
8
46
|
Added signature for changeset eed93df350a6
|
@@ -78,17 +116,6 @@
|
|
78
116
|
* merge tip
|
79
117
|
[90252df3c5c8]
|
80
118
|
|
81
|
-
2013-08-15 Lars Kanis <lars@greiz-reinsdorf.de>
|
82
|
-
|
83
|
-
* Rakefile.cross:
|
84
|
-
Use RbConfig::CONFIG['CC'] instead of ['host'] for determining cross
|
85
|
-
compilation platform.
|
86
|
-
|
87
|
-
This is 'i586-mingw32msvc-gcc' versus 'i586-pc-mingw32msvc'.
|
88
|
-
[fbee9586e8f7]
|
89
|
-
|
90
|
-
2013-08-18 Lars Kanis <lars@greiz-reinsdorf.de>
|
91
|
-
|
92
119
|
* lib/pg/connection.rb, spec/pg/connection_spec.rb:
|
93
120
|
Add PG::Connection#copy_data as a convenience method.
|
94
121
|
[5096385267ab]
|
@@ -98,6 +125,15 @@
|
|
98
125
|
stack method calls.
|
99
126
|
[8255d4f73334]
|
100
127
|
|
128
|
+
2013-08-15 Lars Kanis <lars@greiz-reinsdorf.de>
|
129
|
+
|
130
|
+
* Rakefile.cross:
|
131
|
+
Use RbConfig::CONFIG['CC'] instead of ['host'] for determining cross
|
132
|
+
compilation platform.
|
133
|
+
|
134
|
+
This is 'i586-mingw32msvc-gcc' versus 'i586-pc-mingw32msvc'.
|
135
|
+
[fbee9586e8f7]
|
136
|
+
|
101
137
|
2013-08-14 Lars Kanis <lars@greiz-reinsdorf.de>
|
102
138
|
|
103
139
|
* Gemfile, Rakefile:
|
@@ -139,10 +175,6 @@
|
|
139
175
|
Travis: Allow failures on rbx.
|
140
176
|
[7be3b156c8fb]
|
141
177
|
|
142
|
-
* spec/pg/column_mapping_spec.rb:
|
143
|
-
Too less quoting. Should fix compat with PostgreSQL 8.4.
|
144
|
-
[45fc78971757]
|
145
|
-
|
146
178
|
2013-07-18 Lars Kanis <kanis@comcard.de>
|
147
179
|
|
148
180
|
* spec/pg/connection_spec.rb:
|
@@ -178,92 +210,6 @@
|
|
178
210
|
This test failed on Windows x64.
|
179
211
|
[6894f73d7039]
|
180
212
|
|
181
|
-
* Manifest.txt:
|
182
|
-
Add missing files to Manifest.txt.
|
183
|
-
[3b4bc9524bb3]
|
184
|
-
|
185
|
-
* Manifest.txt, ext/pg_column_mapping.c, ext/util.c, ext/util.h:
|
186
|
-
Add compat with Windows platform.
|
187
|
-
[3ac02d0ccf19]
|
188
|
-
|
189
|
-
* ext/pg_column_mapping.c, spec/pg/column_mapping_spec.rb:
|
190
|
-
Add compat with Ruby-1.8.7.
|
191
|
-
[7bcb3040fe34]
|
192
|
-
|
193
|
-
* spec/pg/column_mapping_spec.rb:
|
194
|
-
Use old BYTEA escaping for compat with PostgreSQL 8.4
|
195
|
-
[2fad9e274ad3]
|
196
|
-
|
197
|
-
2013-07-04 Lars Kanis <lars@greiz-reinsdorf.de>
|
198
|
-
|
199
|
-
* ext/pg_column_mapping.c, spec/pg/column_mapping_spec.rb:
|
200
|
-
Add BinaryBolean converter.
|
201
|
-
|
202
|
-
Refactor converter tests.
|
203
|
-
[06c99b04f572]
|
204
|
-
|
205
|
-
* ext/pg_column_mapping.c, spec/pg/column_mapping_spec.rb:
|
206
|
-
Add BinaryFloat converter.
|
207
|
-
[493b0354c678]
|
208
|
-
|
209
|
-
2013-07-03 Lars Kanis <lars@greiz-reinsdorf.de>
|
210
|
-
|
211
|
-
* ext/pg_column_mapping.c, lib/pg/result.rb,
|
212
|
-
spec/pg/column_mapping_spec.rb, spec/pg/result_spec.rb:
|
213
|
-
Change ColumnMapping#initialize to take one Array arg rather than a
|
214
|
-
parameter list.
|
215
|
-
|
216
|
-
Suggested by Aaron: https://groups.google.com/d/msg/ruby-
|
217
|
-
pg/PE5K6q9RzBs/M5prOno39DEJ
|
218
|
-
[c2ca10bf93c5]
|
219
|
-
|
220
|
-
* spec/pg/result_spec.rb:
|
221
|
-
Add test case for all value retrieving methods of PG::Result .
|
222
|
-
[e1055f877c58]
|
223
|
-
|
224
|
-
* spec/pg/column_mapping_spec.rb:
|
225
|
-
Add test case for default_mapping in Result#map_types!
|
226
|
-
[489220119795]
|
227
|
-
|
228
|
-
* lib/pg/result.rb, spec/pg/column_mapping_spec.rb:
|
229
|
-
Add convenience method PG::Result#map_types!
|
230
|
-
[de02df7fb198]
|
231
|
-
|
232
|
-
* spec/pg/column_mapping_spec.rb:
|
233
|
-
Add Boolean ColumnMapping spec and do Integer a bit more compact.
|
234
|
-
[4256841e088f]
|
235
|
-
|
236
|
-
2013-07-01 Lars Kanis <kanis@comcard.de>
|
237
|
-
|
238
|
-
* ext/pg_column_mapping.c, spec/pg/column_mapping_spec.rb:
|
239
|
-
Add converter BinaryInteger.
|
240
|
-
[6f0c8f72962f]
|
241
|
-
|
242
|
-
* ext/pg_column_mapping.c, spec/pg/column_mapping_spec.rb,
|
243
|
-
spec/pg/result_spec.rb:
|
244
|
-
Use instances of PG::ColumnMapping::CConverter as representation of
|
245
|
-
the buildin converters instead of plain symbols. Symbol arguments
|
246
|
-
are converted to these instances, for convenience.
|
247
|
-
|
248
|
-
This allows to store and retrieve additional informations to the
|
249
|
-
conversion and also which conversions are supported.
|
250
|
-
[e4f6c37b5449]
|
251
|
-
|
252
|
-
* ext/pg_column_mapping.c:
|
253
|
-
Don't depend on TYPE(obj)==T_DATA of a proc object for compat with
|
254
|
-
rubinius.
|
255
|
-
[c33c4ac01aaf]
|
256
|
-
|
257
|
-
2013-06-29 Lars Kanis <lars@greiz-reinsdorf.de>
|
258
|
-
|
259
|
-
* ext/pg.c, ext/pg.h, ext/pg_column_mapping.c, ext/pg_result.c,
|
260
|
-
spec/pg/result_spec.rb:
|
261
|
-
Add column based type mapping.
|
262
|
-
|
263
|
-
This allowes to speed up result retrieval by directly converting
|
264
|
-
integer and float values to proper ruby types.
|
265
|
-
[160c71c0b584]
|
266
|
-
|
267
213
|
2013-07-06 Lars Kanis <lars@greiz-reinsdorf.de>
|
268
214
|
|
269
215
|
* ext/pg_connection.c, spec/pg/connection_spec.rb:
|
@@ -549,14 +495,14 @@
|
|
549
495
|
avoid warnings about truncated identifier.
|
550
496
|
|
551
497
|
Thanks to Svoop for this report.
|
552
|
-
[
|
498
|
+
[134e067259ee] <v0.15-stable>
|
553
499
|
|
554
500
|
* lib/pg/connection.rb, spec/pg/connection_spec.rb:
|
555
501
|
Send a shortened $0 as application_name to the server in order to
|
556
502
|
avoid warnings about truncated identifier.
|
557
503
|
|
558
504
|
Thanks to Svoop for this report.
|
559
|
-
[
|
505
|
+
[9a6791fe9409]
|
560
506
|
|
561
507
|
2013-03-26 Michael Granger <ged@FaerieMUD.org>
|
562
508
|
|
@@ -644,6 +590,17 @@
|
|
644
590
|
Merge with https://bitbucket.org/ged/ruby-pg
|
645
591
|
[3230e6c245e0]
|
646
592
|
|
593
|
+
* Rakefile, Rakefile.cross:
|
594
|
+
Add support for cross build for multiple platforms (i386-mingw32 and
|
595
|
+
x64-mingw32).
|
596
|
+
|
597
|
+
Update OpenSSL for cross build to 1.0.1e Update PostgreSQL for cross
|
598
|
+
build to 9.2.3
|
599
|
+
|
600
|
+
Remove -lws2_32 for PostgreSQL build. It fails to compile for
|
601
|
+
x64-mingw32 elsewise.
|
602
|
+
[6a2a1a53dedc]
|
603
|
+
|
647
604
|
2013-03-12 Michael Granger <ged@FaerieMUD.org>
|
648
605
|
|
649
606
|
* Rakefile.cross:
|
@@ -658,19 +615,6 @@
|
|
658
615
|
Bump versions of dev dependencies
|
659
616
|
[cba92fb4b89e]
|
660
617
|
|
661
|
-
2013-03-13 Lars Kanis <kanis@comcard.de>
|
662
|
-
|
663
|
-
* Rakefile, Rakefile.cross:
|
664
|
-
Add support for cross build for multiple platforms (i386-mingw32 and
|
665
|
-
x64-mingw32).
|
666
|
-
|
667
|
-
Update OpenSSL for cross build to 1.0.1e Update PostgreSQL for cross
|
668
|
-
build to 9.2.3
|
669
|
-
|
670
|
-
Remove -lws2_32 for PostgreSQL build. It fails to compile for
|
671
|
-
x64-mingw32 elsewise.
|
672
|
-
[6a2a1a53dedc]
|
673
|
-
|
674
618
|
2013-03-06 Michael Granger <ged@FaerieMUD.org>
|
675
619
|
|
676
620
|
* README.rdoc:
|
@@ -922,6 +866,61 @@
|
|
922
866
|
Make source settings override TM2 defaults
|
923
867
|
[c5706b3f73af]
|
924
868
|
|
869
|
+
2012-12-26 Lars Kanis <kanis@comcard.de>
|
870
|
+
|
871
|
+
* ext/extconf.rb, ext/pg_connection.c, spec/pg/connection_spec.rb:
|
872
|
+
merge in default branch
|
873
|
+
[ca39e311d1eb] <use_gvl_for_blocking_functions>
|
874
|
+
|
875
|
+
* ext/gvl_wrappers.h:
|
876
|
+
Add some documentation to gvl_wrappers
|
877
|
+
[ffeb6a0afd1f] <use_gvl_for_blocking_functions>
|
878
|
+
|
879
|
+
* spec/pg/connection_spec.rb:
|
880
|
+
Add test case for threading with Connection#exec in ruby 1.9
|
881
|
+
[73b9aa38e8c0] <use_gvl_for_blocking_functions>
|
882
|
+
|
883
|
+
* ext/extconf.rb, ext/gvl_wrappers.c, ext/gvl_wrappers.h, ext/pg.h,
|
884
|
+
ext/pg_connection.c:
|
885
|
+
Add wrappers to blocking functions and callbacks in order to release
|
886
|
+
the GVL of ruby 1.9 as long as not in ruby code
|
887
|
+
[2f2c681424ed] <use_gvl_for_blocking_functions>
|
888
|
+
|
889
|
+
2012-07-02 Lars Kanis <kanis@comcard.de>
|
890
|
+
|
891
|
+
* ext/pg_connection.c, spec/pg/connection_spec.rb:
|
892
|
+
Fix encoding of values delivered to the row processor and add specs
|
893
|
+
for binary and text data.
|
894
|
+
[bb9c6625fbc9] <row_processor>
|
895
|
+
|
896
|
+
* ext/pg_connection.c:
|
897
|
+
Polish the documentation a little bit
|
898
|
+
[b7633be3c941] <row_processor>
|
899
|
+
|
900
|
+
2012-07-01 Lars Kanis <kanis@comcard.de>
|
901
|
+
|
902
|
+
* ext/pg_connection.c:
|
903
|
+
Get rid of gcc warning about (non-)const PGresult to
|
904
|
+
pg_new_result_for_callback()
|
905
|
+
[1a25786ed8f3] <row_processor>
|
906
|
+
|
907
|
+
* ext/pg_connection.c, spec/pg/connection_spec.rb:
|
908
|
+
Fix wrong encoding for Result object passed to a notice-receiver
|
909
|
+
block. Add proper specs for #set_notice_receiver.
|
910
|
+
[4280826bb9b9] <row_processor>
|
911
|
+
|
912
|
+
* ext/extconf.rb, ext/pg.h, ext/pg_connection.c, ext/pg_result.c,
|
913
|
+
spec/lib/helpers.rb, spec/pg/connection_spec.rb:
|
914
|
+
Implement PostgreSQL-9.2 functions PG::Connection#set_row_processor,
|
915
|
+
get_row_processor, skip_result
|
916
|
+
[b7ce4843f4d1] <row_processor>
|
917
|
+
|
918
|
+
2012-06-28 Lars Kanis <kanis@comcard.de>
|
919
|
+
|
920
|
+
* ext/pg_result.c:
|
921
|
+
Add PGRES_COPY_BOTH to documentation of PG::Result#result_status
|
922
|
+
[63998b47da6e] <copy_both_docu>
|
923
|
+
|
925
924
|
2013-01-29 Aaron Patterson <aaron.patterson@gmail.com>
|
926
925
|
|
927
926
|
* ext/pg_result.c, lib/pg/result.rb, spec/pg/result_spec.rb:
|
@@ -950,22 +949,8 @@
|
|
950
949
|
Fix encoding of messages delivered by notice callbacks
|
951
950
|
[048d07d14867]
|
952
951
|
|
953
|
-
2012-12-29 Lars Kanis <kanis@comcard.de>
|
954
|
-
|
955
|
-
* ext/gvl_wrappers.h:
|
956
|
-
Simplify function declaration for gvl_wrappers a bit more
|
957
|
-
[39ba7e52207e] <use_gvl_for_blocking_functions>
|
958
|
-
|
959
952
|
2012-12-26 Lars Kanis <kanis@comcard.de>
|
960
953
|
|
961
|
-
* ext/extconf.rb, ext/pg_connection.c, spec/pg/connection_spec.rb:
|
962
|
-
merge in default branch
|
963
|
-
[ca39e311d1eb] <use_gvl_for_blocking_functions>
|
964
|
-
|
965
|
-
* ext/gvl_wrappers.h:
|
966
|
-
Add some documentation to gvl_wrappers
|
967
|
-
[ffeb6a0afd1f] <use_gvl_for_blocking_functions>
|
968
|
-
|
969
954
|
* ext/pg.c:
|
970
955
|
Use proper const check instead of implicit relation
|
971
956
|
[d0c5d5f7f1e8]
|
@@ -985,23 +970,12 @@
|
|
985
970
|
single row mode of PostgreSQL 9.2)
|
986
971
|
[49e3fe1dafdf]
|
987
972
|
|
988
|
-
2012-12-
|
989
|
-
|
990
|
-
* spec/pg/connection_spec.rb:
|
991
|
-
Add test case for threading with Connection#exec in ruby 1.9
|
992
|
-
[73b9aa38e8c0] <use_gvl_for_blocking_functions>
|
993
|
-
|
994
|
-
* ext/extconf.rb, ext/gvl_wrappers.c, ext/gvl_wrappers.h, ext/pg.h,
|
995
|
-
ext/pg_connection.c:
|
996
|
-
Add wrappers to blocking functions and callbacks in order to release
|
997
|
-
the GVL of ruby 1.9 as long as not in ruby code
|
998
|
-
[2f2c681424ed] <use_gvl_for_blocking_functions>
|
973
|
+
2012-12-19 Lars Kanis <kanis@comcard.de>
|
999
974
|
|
1000
|
-
* ext/extconf.rb, ext/
|
1001
|
-
|
1002
|
-
Add
|
1003
|
-
|
1004
|
-
[6ad8aa8e10a5] <use_gvl_for_blocking_functions>
|
975
|
+
* ext/extconf.rb, ext/pg.c, ext/pg_connection.c,
|
976
|
+
spec/pg/connection_spec.rb:
|
977
|
+
Add single row mode of PostgreSQL 9.2
|
978
|
+
[5cf348b75c1c] <single_row_mode>
|
1005
979
|
|
1006
980
|
2012-12-19 Michael Granger <ged@FaerieMUD.org>
|
1007
981
|
|
@@ -1025,14 +999,6 @@
|
|
1025
999
|
fix spacing on README.rdoc:21 to improve display on Github
|
1026
1000
|
[807f040166da]
|
1027
1001
|
|
1028
|
-
2012-12-26 Lars Kanis <kanis@comcard.de>
|
1029
|
-
|
1030
|
-
* ext/extconf.rb, ext/gvl_wrappers.c, ext/gvl_wrappers.h, ext/pg.h,
|
1031
|
-
ext/pg_connection.c:
|
1032
|
-
Add wrappers to blocking functions and callbacks in order to release
|
1033
|
-
the GVL of ruby 1.9 while not in ruby code
|
1034
|
-
[c31ea26b15e9] <use_gvl_for_blocking_functions>
|
1035
|
-
|
1036
1002
|
2012-12-19 Lars Kanis <kanis@comcard.de>
|
1037
1003
|
|
1038
1004
|
* spec/pg/connection_spec.rb:
|
@@ -1049,11 +1015,6 @@
|
|
1049
1015
|
Add spec for PG::Result#field_values
|
1050
1016
|
[3618eb238aba]
|
1051
1017
|
|
1052
|
-
* ext/extconf.rb, ext/pg.c, ext/pg_connection.c,
|
1053
|
-
spec/pg/connection_spec.rb:
|
1054
|
-
Add single row mode of PostgreSQL 9.2
|
1055
|
-
[5cf348b75c1c] <single_row_mode>
|
1056
|
-
|
1057
1018
|
* lib/pg/connection.rb, spec/lib/helpers.rb:
|
1058
1019
|
Restore compatibility with PostgreSQL down to 8.3
|
1059
1020
|
[e4900f62e56d]
|
@@ -1175,15 +1136,6 @@
|
|
1175
1136
|
Add PGRES_COPY_BOTH to documentation of PG::Result#result_status
|
1176
1137
|
[5e0e06440b1a]
|
1177
1138
|
|
1178
|
-
* ext/pg_connection.c, spec/pg/connection_spec.rb:
|
1179
|
-
Fix encoding of values delivered to the row processor and add specs
|
1180
|
-
for binary and text data.
|
1181
|
-
[bb9c6625fbc9] <row_processor>
|
1182
|
-
|
1183
|
-
* ext/pg_connection.c:
|
1184
|
-
Polish the documentation a little bit
|
1185
|
-
[b7633be3c941] <row_processor>
|
1186
|
-
|
1187
1139
|
2012-06-23 Michael Granger <ged@FaerieMUD.org>
|
1188
1140
|
|
1189
1141
|
* .hgtags:
|
@@ -1194,33 +1146,6 @@
|
|
1194
1146
|
Added signature for changeset a45710f8db30
|
1195
1147
|
[634e0a42a101] [v0.14.0]
|
1196
1148
|
|
1197
|
-
2012-07-01 Lars Kanis <kanis@comcard.de>
|
1198
|
-
|
1199
|
-
* merge copy_both_docu
|
1200
|
-
[6e8ef5d4d216]
|
1201
|
-
|
1202
|
-
* ext/pg_connection.c:
|
1203
|
-
Get rid of gcc warning about (non-)const PGresult to
|
1204
|
-
pg_new_result_for_callback()
|
1205
|
-
[1a25786ed8f3] <row_processor>
|
1206
|
-
|
1207
|
-
* ext/pg_connection.c, spec/pg/connection_spec.rb:
|
1208
|
-
Fix wrong encoding for Result object passed to a notice-receiver
|
1209
|
-
block. Add proper specs for #set_notice_receiver.
|
1210
|
-
[4280826bb9b9] <row_processor>
|
1211
|
-
|
1212
|
-
* ext/extconf.rb, ext/pg.h, ext/pg_connection.c, ext/pg_result.c,
|
1213
|
-
spec/lib/helpers.rb, spec/pg/connection_spec.rb:
|
1214
|
-
Implement PostgreSQL-9.2 functions PG::Connection#set_row_processor,
|
1215
|
-
get_row_processor, skip_result
|
1216
|
-
[b7ce4843f4d1] <row_processor>
|
1217
|
-
|
1218
|
-
2012-06-28 Lars Kanis <kanis@comcard.de>
|
1219
|
-
|
1220
|
-
* ext/pg_result.c:
|
1221
|
-
Add PGRES_COPY_BOTH to documentation of PG::Result#result_status
|
1222
|
-
[63998b47da6e] <copy_both_docu>
|
1223
|
-
|
1224
1149
|
2012-06-17 Lars Kanis <kanis@comcard.de>
|
1225
1150
|
|
1226
1151
|
* Rakefile.cross, ext/extconf.rb,
|
data/History.rdoc
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
== v0.17.1 [2013-12-18] Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
Bugfixes:
|
4
|
+
|
5
|
+
- Fix compatibility with signal handlers defined in Ruby. This reverts
|
6
|
+
cancelation of queries running on top of the blocking libpq API (like
|
7
|
+
Connection#exec) in case of signals. As an alternative the #async_exec
|
8
|
+
can be used, which is reverted to use the non-blocking API, again.
|
9
|
+
- Wrap PQcancel to be called without GVL. It internally waits for
|
10
|
+
the canceling connection.
|
11
|
+
|
12
|
+
Documentation fixes:
|
13
|
+
|
14
|
+
- Fix documentation for PG::Connection::conndefaults.
|
15
|
+
|
16
|
+
|
1
17
|
== v0.17.0 [2013-09-15] Michael Granger <ged@FaerieMUD.org>
|
2
18
|
|
3
19
|
Bugfixes:
|
data/Rakefile.cross
CHANGED
@@ -210,6 +210,7 @@ class CrossLibrary < OpenStruct
|
|
210
210
|
cmd << "LDFLAGS=-L#{static_openssl_builddir}"
|
211
211
|
cmd << "LDFLAGS_SL=-L#{static_openssl_builddir}"
|
212
212
|
cmd << "LIBS=-lwsock32 -lgdi32"
|
213
|
+
cmd << "DLLWRAP_FLAGS=-lcrypt32"
|
213
214
|
cmd << "CPPFLAGS=-I#{static_openssl_builddir}/include"
|
214
215
|
|
215
216
|
run( *cmd )
|
data/ext/gvl_wrappers.c
CHANGED
@@ -11,9 +11,3 @@ FOR_EACH_BLOCKING_FUNCTION( DEFINE_GVL_STUB );
|
|
11
11
|
FOR_EACH_CALLBACK_FUNCTION( DEFINE_GVL_WRAPPER_STRUCT );
|
12
12
|
FOR_EACH_CALLBACK_FUNCTION( DEFINE_GVLCB_SKELETON );
|
13
13
|
FOR_EACH_CALLBACK_FUNCTION( DEFINE_GVLCB_STUB );
|
14
|
-
|
15
|
-
void ubf_cancel_running_command(void *c)
|
16
|
-
{
|
17
|
-
PGconn *conn = (PGconn*) c;
|
18
|
-
PQrequestCancel(conn);
|
19
|
-
}
|
data/ext/gvl_wrappers.h
CHANGED
@@ -24,8 +24,6 @@ extern void *rb_thread_call_without_gvl(void *(*func)(void *), void *data1,
|
|
24
24
|
rb_unblock_function_t *ubf, void *data2);
|
25
25
|
#endif
|
26
26
|
|
27
|
-
void ubf_cancel_running_command(void *c);
|
28
|
-
|
29
27
|
#define DEFINE_PARAM_LIST1(type, name) \
|
30
28
|
name,
|
31
29
|
|
@@ -38,7 +36,7 @@ void ubf_cancel_running_command(void *c);
|
|
38
36
|
#define DEFINE_PARAM_DECL(type, name) \
|
39
37
|
type name;
|
40
38
|
|
41
|
-
#define DEFINE_GVL_WRAPPER_STRUCT(name,
|
39
|
+
#define DEFINE_GVL_WRAPPER_STRUCT(name, when_non_void, rettype, lastparamtype, lastparamname) \
|
42
40
|
struct gvl_wrapper_##name##_params { \
|
43
41
|
struct { \
|
44
42
|
FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_DECL) \
|
@@ -47,7 +45,7 @@ void ubf_cancel_running_command(void *c);
|
|
47
45
|
when_non_void( rettype retval; ) \
|
48
46
|
};
|
49
47
|
|
50
|
-
#define DEFINE_GVL_SKELETON(name,
|
48
|
+
#define DEFINE_GVL_SKELETON(name, when_non_void, rettype, lastparamtype, lastparamname) \
|
51
49
|
static void * gvl_##name##_skeleton( void *data ){ \
|
52
50
|
struct gvl_wrapper_##name##_params *p = (struct gvl_wrapper_##name##_params*)data; \
|
53
51
|
when_non_void( p->retval = ) \
|
@@ -56,25 +54,25 @@ void ubf_cancel_running_command(void *c);
|
|
56
54
|
}
|
57
55
|
|
58
56
|
#if defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL)
|
59
|
-
#define DEFINE_GVL_STUB(name,
|
57
|
+
#define DEFINE_GVL_STUB(name, when_non_void, rettype, lastparamtype, lastparamname) \
|
60
58
|
rettype gvl_##name(FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST3) lastparamtype lastparamname){ \
|
61
59
|
struct gvl_wrapper_##name##_params params = { \
|
62
60
|
{FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST1) lastparamname}, when_non_void((rettype)0) \
|
63
61
|
}; \
|
64
|
-
rb_thread_call_without_gvl(gvl_##name##_skeleton, ¶ms,
|
62
|
+
rb_thread_call_without_gvl(gvl_##name##_skeleton, ¶ms, RUBY_UBF_IO, 0); \
|
65
63
|
when_non_void( return params.retval; ) \
|
66
64
|
}
|
67
65
|
#else
|
68
|
-
#define DEFINE_GVL_STUB(name,
|
66
|
+
#define DEFINE_GVL_STUB(name, when_non_void, rettype, lastparamtype, lastparamname) \
|
69
67
|
rettype gvl_##name(FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST3) lastparamtype lastparamname){ \
|
70
68
|
return name( FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST1) lastparamname ); \
|
71
69
|
}
|
72
70
|
#endif
|
73
71
|
|
74
|
-
#define DEFINE_GVL_STUB_DECL(name,
|
72
|
+
#define DEFINE_GVL_STUB_DECL(name, when_non_void, rettype, lastparamtype, lastparamname) \
|
75
73
|
rettype gvl_##name(FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST3) lastparamtype lastparamname);
|
76
74
|
|
77
|
-
#define DEFINE_GVLCB_SKELETON(name,
|
75
|
+
#define DEFINE_GVLCB_SKELETON(name, when_non_void, rettype, lastparamtype, lastparamname) \
|
78
76
|
static void * gvl_##name##_skeleton( void *data ){ \
|
79
77
|
struct gvl_wrapper_##name##_params *p = (struct gvl_wrapper_##name##_params*)data; \
|
80
78
|
when_non_void( p->retval = ) \
|
@@ -83,7 +81,7 @@ void ubf_cancel_running_command(void *c);
|
|
83
81
|
}
|
84
82
|
|
85
83
|
#if defined(HAVE_RB_THREAD_CALL_WITH_GVL)
|
86
|
-
#define DEFINE_GVLCB_STUB(name,
|
84
|
+
#define DEFINE_GVLCB_STUB(name, when_non_void, rettype, lastparamtype, lastparamname) \
|
87
85
|
rettype gvl_##name(FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST3) lastparamtype lastparamname){ \
|
88
86
|
struct gvl_wrapper_##name##_params params = { \
|
89
87
|
{FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST1) lastparamname}, when_non_void((rettype)0) \
|
@@ -92,7 +90,7 @@ void ubf_cancel_running_command(void *c);
|
|
92
90
|
when_non_void( return params.retval; ) \
|
93
91
|
}
|
94
92
|
#else
|
95
|
-
#define DEFINE_GVLCB_STUB(name,
|
93
|
+
#define DEFINE_GVLCB_STUB(name, when_non_void, rettype, lastparamtype, lastparamname) \
|
96
94
|
rettype gvl_##name(FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST3) lastparamtype lastparamname){ \
|
97
95
|
return name( FOR_EACH_PARAM_OF_##name(DEFINE_PARAM_LIST1) lastparamname ); \
|
98
96
|
}
|
@@ -101,9 +99,6 @@ void ubf_cancel_running_command(void *c);
|
|
101
99
|
#define GVL_TYPE_VOID(string)
|
102
100
|
#define GVL_TYPE_NONVOID(string) string
|
103
101
|
|
104
|
-
#define GVL_CANCELABLE ubf_cancel_running_command, conn
|
105
|
-
#define GVL_NONCANCELABLE RUBY_UBF_IO, 0
|
106
|
-
|
107
102
|
|
108
103
|
/*
|
109
104
|
* Definitions of blocking functions and their parameters
|
@@ -202,32 +197,37 @@ void ubf_cancel_running_command(void *c);
|
|
202
197
|
|
203
198
|
#define FOR_EACH_PARAM_OF_PQisBusy(param)
|
204
199
|
|
205
|
-
|
200
|
+
#define FOR_EACH_PARAM_OF_PQcancel(param) \
|
201
|
+
param(PGcancel *, cancel) \
|
202
|
+
param(char *, errbuf)
|
203
|
+
|
204
|
+
/* function( name, void_or_nonvoid, returntype, lastparamtype, lastparamname ) */
|
206
205
|
#define FOR_EACH_BLOCKING_FUNCTION(function) \
|
207
|
-
function(PQconnectdb,
|
208
|
-
function(PQconnectStart,
|
209
|
-
function(PQconnectPoll,
|
210
|
-
function(PQreset,
|
211
|
-
function(PQresetStart,
|
212
|
-
function(PQresetPoll,
|
213
|
-
function(PQexec,
|
214
|
-
function(PQexecParams,
|
215
|
-
function(PQexecPrepared,
|
216
|
-
function(PQprepare,
|
217
|
-
function(PQdescribePrepared,
|
218
|
-
function(PQdescribePortal,
|
219
|
-
function(PQgetResult,
|
220
|
-
function(PQputCopyData,
|
221
|
-
function(PQputCopyEnd,
|
222
|
-
function(PQgetCopyData,
|
223
|
-
function(PQnotifies,
|
224
|
-
function(PQsendQuery,
|
225
|
-
function(PQsendQueryParams,
|
226
|
-
function(PQsendPrepare,
|
227
|
-
function(PQsendQueryPrepared,
|
228
|
-
function(PQsendDescribePrepared,
|
229
|
-
function(PQsendDescribePortal,
|
230
|
-
function(PQisBusy,
|
206
|
+
function(PQconnectdb, GVL_TYPE_NONVOID, PGconn *, const char *, conninfo) \
|
207
|
+
function(PQconnectStart, GVL_TYPE_NONVOID, PGconn *, const char *, conninfo) \
|
208
|
+
function(PQconnectPoll, GVL_TYPE_NONVOID, PostgresPollingStatusType, PGconn *, conn) \
|
209
|
+
function(PQreset, GVL_TYPE_VOID, void, PGconn *, conn) \
|
210
|
+
function(PQresetStart, GVL_TYPE_NONVOID, int, PGconn *, conn) \
|
211
|
+
function(PQresetPoll, GVL_TYPE_NONVOID, PostgresPollingStatusType, PGconn *, conn) \
|
212
|
+
function(PQexec, GVL_TYPE_NONVOID, PGresult *, const char *, command) \
|
213
|
+
function(PQexecParams, GVL_TYPE_NONVOID, PGresult *, int, resultFormat) \
|
214
|
+
function(PQexecPrepared, GVL_TYPE_NONVOID, PGresult *, int, resultFormat) \
|
215
|
+
function(PQprepare, GVL_TYPE_NONVOID, PGresult *, const Oid *, paramTypes) \
|
216
|
+
function(PQdescribePrepared, GVL_TYPE_NONVOID, PGresult *, const char *, stmtName) \
|
217
|
+
function(PQdescribePortal, GVL_TYPE_NONVOID, PGresult *, const char *, portalName) \
|
218
|
+
function(PQgetResult, GVL_TYPE_NONVOID, PGresult *, PGconn *, conn) \
|
219
|
+
function(PQputCopyData, GVL_TYPE_NONVOID, int, int, nbytes) \
|
220
|
+
function(PQputCopyEnd, GVL_TYPE_NONVOID, int, const char *, errormsg) \
|
221
|
+
function(PQgetCopyData, GVL_TYPE_NONVOID, int, int, async) \
|
222
|
+
function(PQnotifies, GVL_TYPE_NONVOID, PGnotify *, PGconn *, conn) \
|
223
|
+
function(PQsendQuery, GVL_TYPE_NONVOID, int, const char *, query) \
|
224
|
+
function(PQsendQueryParams, GVL_TYPE_NONVOID, int, int, resultFormat) \
|
225
|
+
function(PQsendPrepare, GVL_TYPE_NONVOID, int, const Oid *, paramTypes) \
|
226
|
+
function(PQsendQueryPrepared, GVL_TYPE_NONVOID, int, int, resultFormat) \
|
227
|
+
function(PQsendDescribePrepared, GVL_TYPE_NONVOID, int, const char *, stmt) \
|
228
|
+
function(PQsendDescribePortal, GVL_TYPE_NONVOID, int, const char *, portal) \
|
229
|
+
function(PQisBusy, GVL_TYPE_NONVOID, int, PGconn *, conn) \
|
230
|
+
function(PQcancel, GVL_TYPE_NONVOID, int, int, errbufsize);
|
231
231
|
|
232
232
|
|
233
233
|
FOR_EACH_BLOCKING_FUNCTION( DEFINE_GVL_STUB_DECL );
|
@@ -243,10 +243,10 @@ FOR_EACH_BLOCKING_FUNCTION( DEFINE_GVL_STUB_DECL );
|
|
243
243
|
#define FOR_EACH_PARAM_OF_notice_receiver_proxy(param) \
|
244
244
|
param(void *, arg)
|
245
245
|
|
246
|
-
/* function( name,
|
246
|
+
/* function( name, void_or_nonvoid, returntype, lastparamtype, lastparamname ) */
|
247
247
|
#define FOR_EACH_CALLBACK_FUNCTION(function) \
|
248
|
-
function(notice_processor_proxy
|
249
|
-
function(notice_receiver_proxy
|
248
|
+
function(notice_processor_proxy, GVL_TYPE_VOID, void, const char *, message) \
|
249
|
+
function(notice_receiver_proxy, GVL_TYPE_VOID, void, const PGresult *, result) \
|
250
250
|
|
251
251
|
FOR_EACH_CALLBACK_FUNCTION( DEFINE_GVL_STUB_DECL );
|
252
252
|
|
data/ext/pg_connection.c
CHANGED
@@ -292,7 +292,10 @@ pgconn_s_ping( int argc, VALUE *argv, VALUE klass )
|
|
292
292
|
}
|
293
293
|
#endif
|
294
294
|
|
295
|
+
|
295
296
|
/*
|
297
|
+
* Document-method: conndefaults
|
298
|
+
*
|
296
299
|
* call-seq:
|
297
300
|
* PG::Connection.conndefaults() -> Array
|
298
301
|
*
|
@@ -503,6 +506,7 @@ pgconn_reset_poll(VALUE self)
|
|
503
506
|
return INT2FIX((int)status);
|
504
507
|
}
|
505
508
|
|
509
|
+
|
506
510
|
/*
|
507
511
|
* call-seq:
|
508
512
|
* conn.db()
|
@@ -838,6 +842,13 @@ static VALUE pgconn_exec_params( int, VALUE *, VALUE );
|
|
838
842
|
* If the optional code block is given, it will be passed <i>result</i> as an argument,
|
839
843
|
* and the PG::Result object will automatically be cleared when the block terminates.
|
840
844
|
* In this instance, <code>conn.exec</code> returns the value of the block.
|
845
|
+
*
|
846
|
+
* #exec is implemented on the synchronous command processing API of libpq, whereas
|
847
|
+
* #async_exec is implemented on the asynchronous API.
|
848
|
+
* #exec is somewhat faster that #async_exec, but blocks any signals to be processed until
|
849
|
+
* the query is finished. This is most notably visible by a delayed reaction to Control+C.
|
850
|
+
* Both methods ensure that other threads can process while waiting for the server to
|
851
|
+
* complete the request.
|
841
852
|
*/
|
842
853
|
static VALUE
|
843
854
|
pgconn_exec(int argc, VALUE *argv, VALUE self)
|
@@ -2103,7 +2114,7 @@ pgconn_cancel(VALUE self)
|
|
2103
2114
|
if(cancel == NULL)
|
2104
2115
|
rb_raise(rb_ePGerror,"Invalid connection!");
|
2105
2116
|
|
2106
|
-
ret =
|
2117
|
+
ret = gvl_PQcancel(cancel, errbuf, 256);
|
2107
2118
|
if(ret == 1)
|
2108
2119
|
retval = Qnil;
|
2109
2120
|
else
|
@@ -3010,22 +3021,14 @@ pgconn_get_last_result(VALUE self)
|
|
3010
3021
|
return rb_pgresult;
|
3011
3022
|
}
|
3012
3023
|
|
3013
|
-
#if !defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL)
|
3014
|
-
|
3015
3024
|
/*
|
3016
3025
|
* call-seq:
|
3017
3026
|
* conn.async_exec(sql [, params, result_format ] ) -> PG::Result
|
3018
3027
|
* conn.async_exec(sql [, params, result_format ] ) {|pg_result| block }
|
3019
3028
|
*
|
3020
3029
|
* This function has the same behavior as #exec,
|
3021
|
-
* but
|
3022
|
-
*
|
3023
|
-
*
|
3024
|
-
* On Ruby platforms with native threads (MRI-1.9+ and all others)
|
3025
|
-
* this method is an alias to #exec.
|
3026
|
-
*
|
3027
|
-
* On MRI-1.8 it's implemented using asynchronous command
|
3028
|
-
* processing and ruby's +rb_thread_select+ .
|
3030
|
+
* but is implemented using the asynchronous command
|
3031
|
+
* processing API of libpq.
|
3029
3032
|
*/
|
3030
3033
|
static VALUE
|
3031
3034
|
pgconn_async_exec(int argc, VALUE *argv, VALUE self)
|
@@ -3046,8 +3049,6 @@ pgconn_async_exec(int argc, VALUE *argv, VALUE self)
|
|
3046
3049
|
return rb_pgresult;
|
3047
3050
|
}
|
3048
3051
|
|
3049
|
-
#endif
|
3050
|
-
|
3051
3052
|
/**************************************************************************
|
3052
3053
|
* LARGE OBJECT SUPPORT
|
3053
3054
|
**************************************************************************/
|
@@ -3508,7 +3509,6 @@ init_pg_connection()
|
|
3508
3509
|
rb_define_method(rb_cPGconn, "reset", pgconn_reset, 0);
|
3509
3510
|
rb_define_method(rb_cPGconn, "reset_start", pgconn_reset_start, 0);
|
3510
3511
|
rb_define_method(rb_cPGconn, "reset_poll", pgconn_reset_poll, 0);
|
3511
|
-
rb_define_method(rb_cPGconn, "conndefaults", pgconn_s_conndefaults, 0);
|
3512
3512
|
rb_define_alias(rb_cPGconn, "close", "finish");
|
3513
3513
|
|
3514
3514
|
/****** PG::Connection INSTANCE METHODS: Connection Status ******/
|
@@ -3600,11 +3600,7 @@ init_pg_connection()
|
|
3600
3600
|
rb_define_method(rb_cPGconn, "wait_for_notify", pgconn_wait_for_notify, -1);
|
3601
3601
|
rb_define_alias(rb_cPGconn, "notifies_wait", "wait_for_notify");
|
3602
3602
|
rb_define_method(rb_cPGconn, "quote_ident", pgconn_s_quote_ident, 1);
|
3603
|
-
#if defined(HAVE_RB_THREAD_CALL_WITHOUT_GVL)
|
3604
|
-
rb_define_alias(rb_cPGconn, "async_exec", "exec");
|
3605
|
-
#else
|
3606
3603
|
rb_define_method(rb_cPGconn, "async_exec", pgconn_async_exec, -1);
|
3607
|
-
#endif
|
3608
3604
|
rb_define_alias(rb_cPGconn, "async_query", "async_exec");
|
3609
3605
|
rb_define_method(rb_cPGconn, "get_last_result", pgconn_get_last_result, 0);
|
3610
3606
|
|
data/lib/1.8/pg_ext.so
CHANGED
Binary file
|
data/lib/1.9/pg_ext.so
CHANGED
Binary file
|
data/lib/2.0/pg_ext.so
CHANGED
Binary file
|
data/lib/pg.rb
CHANGED
data/lib/pg/connection.rb
CHANGED
@@ -164,6 +164,14 @@ class PG::Connection
|
|
164
164
|
class << self
|
165
165
|
define_method( :isthreadsafe, &PG.method(:isthreadsafe) )
|
166
166
|
end
|
167
|
+
|
168
|
+
|
169
|
+
### Returns an array of Hashes with connection defaults. See ::conndefaults
|
170
|
+
### for details.
|
171
|
+
def conndefaults
|
172
|
+
return self.class.conndefaults
|
173
|
+
end
|
174
|
+
|
167
175
|
end # class PG::Connection
|
168
176
|
|
169
177
|
# Backward-compatible alias
|
data/spec/pg/connection_spec.rb
CHANGED
@@ -262,7 +262,7 @@ describe PG::Connection do
|
|
262
262
|
error.should == true
|
263
263
|
end
|
264
264
|
|
265
|
-
it "can stop a thread that runs a blocking query" do
|
265
|
+
it "can stop a thread that runs a blocking query with async_exec" do
|
266
266
|
start = Time.now
|
267
267
|
t = Thread.new do
|
268
268
|
@conn.async_exec( 'select pg_sleep(10)' )
|
@@ -274,6 +274,29 @@ describe PG::Connection do
|
|
274
274
|
(Time.now - start).should < 10
|
275
275
|
end
|
276
276
|
|
277
|
+
it "should work together with signal handlers" do
|
278
|
+
signal_received = false
|
279
|
+
trap 'USR1' do
|
280
|
+
signal_received = true
|
281
|
+
end
|
282
|
+
|
283
|
+
Thread.new do
|
284
|
+
sleep 0.1
|
285
|
+
Process.kill("USR1", Process.pid)
|
286
|
+
end
|
287
|
+
@conn.exec("select pg_sleep(0.3)")
|
288
|
+
signal_received.should be_true
|
289
|
+
|
290
|
+
signal_received = false
|
291
|
+
Thread.new do
|
292
|
+
sleep 0.1
|
293
|
+
Process.kill("USR1", Process.pid)
|
294
|
+
end
|
295
|
+
@conn.async_exec("select pg_sleep(0.3)")
|
296
|
+
signal_received.should be_true
|
297
|
+
end
|
298
|
+
|
299
|
+
|
277
300
|
it "automatically rolls back a transaction started with Connection#transaction if an exception " +
|
278
301
|
"is raised" do
|
279
302
|
# abort the per-example transaction so we can test our own
|
metadata
CHANGED
@@ -1,119 +1,119 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.17.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.17.1
|
5
5
|
platform: x86-mingw32
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Michael Granger
|
8
8
|
- Lars Kanis
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
|
-
cert_chain:
|
11
|
+
cert_chain:
|
12
12
|
- |
|
13
13
|
-----BEGIN CERTIFICATE-----
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
14
|
+
MIIDaDCCAlCgAwIBAgIBATANBgkqhkiG9w0BAQUFADA9MQ4wDAYDVQQDDAVrYW5p
|
15
|
+
czEXMBUGCgmSJomT8ixkARkWB2NvbWNhcmQxEjAQBgoJkiaJk/IsZAEZFgJkZTAe
|
16
|
+
Fw0xMzAyMjYwODQ1NTlaFw0xNDAyMjYwODQ1NTlaMD0xDjAMBgNVBAMMBWthbmlz
|
17
|
+
MRcwFQYKCZImiZPyLGQBGRYHY29tY2FyZDESMBAGCgmSJomT8ixkARkWAmRlMIIB
|
18
|
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApop+rNmg35bzRugZ21VMGqI6
|
19
|
+
HGzPLO4VHYncWn/xmgPU/ZMcZdfj6MzIaZJ/czXyt4eHpBk1r8QOV3gBXnRXEjVW
|
20
|
+
9xi+EdVOkTV2/AVFKThcbTAQGiF/bT1n2M+B1GTybRzMg6hyhOJeGPqIhLfJEpxn
|
21
|
+
lJi4+ENAVT4MpqHEAGB8yFoPC0GqiOHQsdHxQV3P3c2OZqG+yJey74QtwA2tLcLn
|
22
|
+
Q53c63+VLGsOjODl1yPn/2ejyq8qWu6ahfTxiIlSar2UbwtaQGBDFdb2CXgEufXT
|
23
|
+
L7oaPxlmj+Q2oLOfOnInd2Oxop59HoJCQPsg8f921J43NCQGA8VHK6paxIRDLQID
|
24
|
+
AQABo3MwcTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUvgTdT7fe
|
25
|
+
x17ugO3IOsjEJwW7KP4wGwYDVR0RBBQwEoEQa2FuaXNAY29tY2FyZC5kZTAbBgNV
|
26
|
+
HRIEFDASgRBrYW5pc0Bjb21jYXJkLmRlMA0GCSqGSIb3DQEBBQUAA4IBAQCa3ThZ
|
27
|
+
9qjyuFXe0kN4IwgHTTSqob3zPOyXAxAq1k65w1/hI/6e4HxCSH7Ds+dKj/xhScEu
|
28
|
+
K5gaya1D69Fo+JTnzLvuSt2X8+mEHclduC9j++oSGc+szd7LKdeEQ7J4RefJjhD+
|
29
|
+
vWI6lqglL4PijN0nOWtm0ygzXEELDcGYpb2WJ++KKNVLIU6pkiWpZUmGcFB7NclV
|
30
|
+
I64m9iNdgWnDwedgUlqSMfVCUUB9S1Y5jI+doxYloPvIB6+6VsI4cmN2LcK0rQO6
|
31
|
+
N3pmmsS0N5772vAmRMyNl8PV1OzCLIMhgPgdeLpfU7LUSYWj67q5VuyjAaH5h68g
|
32
|
+
MlGgwc//cCsBG8sa
|
32
33
|
-----END CERTIFICATE-----
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
40
|
-
requirements:
|
34
|
+
date: 2013-12-19 00:00:00.000000000 Z
|
35
|
+
dependencies:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rdoc
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
41
40
|
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version:
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '4.0'
|
44
43
|
type: :development
|
45
|
-
version_requirements: *id001
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: hoe-highline
|
48
44
|
prerelease: false
|
49
|
-
|
50
|
-
requirements:
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
51
47
|
- - ~>
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version:
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
prerelease: false
|
59
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
60
|
-
requirements:
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '4.0'
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: rake-compiler
|
52
|
+
requirement: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
61
54
|
- - ~>
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version:
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0.9'
|
64
57
|
type: :development
|
65
|
-
version_requirements: *id003
|
66
|
-
- !ruby/object:Gem::Dependency
|
67
|
-
name: rake-compiler
|
68
58
|
prerelease: false
|
69
|
-
|
70
|
-
requirements:
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
71
61
|
- - ~>
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version:
|
74
|
-
|
75
|
-
version_requirements: *id004
|
76
|
-
- !ruby/object:Gem::Dependency
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0.9'
|
64
|
+
- !ruby/object:Gem::Dependency
|
77
65
|
name: hoe
|
78
|
-
|
79
|
-
|
80
|
-
requirements:
|
66
|
+
requirement: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
81
68
|
- - ~>
|
82
|
-
- !ruby/object:Gem::Version
|
69
|
+
- !ruby/object:Gem::Version
|
83
70
|
version: 3.5.1
|
84
71
|
type: :development
|
85
|
-
version_requirements: *id005
|
86
|
-
- !ruby/object:Gem::Dependency
|
87
|
-
name: hoe-deveiate
|
88
72
|
prerelease: false
|
89
|
-
|
90
|
-
requirements:
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
91
75
|
- - ~>
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version:
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 3.5.1
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: hoe-deveiate
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ~>
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0.2'
|
94
85
|
type: :development
|
95
|
-
version_requirements: *id006
|
96
|
-
- !ruby/object:Gem::Dependency
|
97
|
-
name: hoe-bundler
|
98
86
|
prerelease: false
|
99
|
-
|
100
|
-
requirements:
|
87
|
+
version_requirements: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
101
89
|
- - ~>
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version:
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0.2'
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: hoe-bundler
|
94
|
+
requirement: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ~>
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '1.0'
|
104
99
|
type: :development
|
105
|
-
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ~>
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '1.0'
|
106
106
|
description: |-
|
107
107
|
Pg is the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/].
|
108
|
-
|
108
|
+
|
109
109
|
It works with {PostgreSQL 8.4 and later}[http://www.postgresql.org/support/versioning/].
|
110
|
-
|
110
|
+
|
111
111
|
A small example usage:
|
112
|
-
|
112
|
+
|
113
113
|
#!/usr/bin/env ruby
|
114
|
-
|
114
|
+
|
115
115
|
require 'pg'
|
116
|
-
|
116
|
+
|
117
117
|
# Output a table of current connections to the DB
|
118
118
|
conn = PG.connect( dbname: 'sales' )
|
119
119
|
conn.exec( "SELECT * FROM pg_stat_activity" ) do |result|
|
@@ -123,14 +123,12 @@ description: |-
|
|
123
123
|
row.values_at('procpid', 'usename', 'current_query')
|
124
124
|
end
|
125
125
|
end
|
126
|
-
email:
|
126
|
+
email:
|
127
127
|
- ged@FaerieMUD.org
|
128
128
|
- lars@greiz-reinsdorf.de
|
129
129
|
executables: []
|
130
|
-
|
131
130
|
extensions: []
|
132
|
-
|
133
|
-
extra_rdoc_files:
|
131
|
+
extra_rdoc_files:
|
134
132
|
- Contributors.rdoc
|
135
133
|
- History.rdoc
|
136
134
|
- Manifest.txt
|
@@ -146,7 +144,7 @@ extra_rdoc_files:
|
|
146
144
|
- ext/pg_connection.c
|
147
145
|
- ext/pg_errors.c
|
148
146
|
- ext/pg_result.c
|
149
|
-
files:
|
147
|
+
files:
|
150
148
|
- .gemtest
|
151
149
|
- BSDL
|
152
150
|
- ChangeLog
|
@@ -208,38 +206,35 @@ files:
|
|
208
206
|
- lib/1.9/pg_ext.so
|
209
207
|
- lib/2.0/pg_ext.so
|
210
208
|
homepage: https://bitbucket.org/ged/ruby-pg
|
211
|
-
licenses:
|
209
|
+
licenses:
|
212
210
|
- BSD
|
213
211
|
- Ruby
|
214
212
|
- GPL
|
215
213
|
metadata: {}
|
216
|
-
|
217
214
|
post_install_message:
|
218
|
-
rdoc_options:
|
215
|
+
rdoc_options:
|
219
216
|
- -f
|
220
217
|
- fivefish
|
221
218
|
- -t
|
222
|
-
-
|
219
|
+
- 'pg: The Ruby Interface to PostgreSQL'
|
223
220
|
- -m
|
224
221
|
- README.rdoc
|
225
|
-
require_paths:
|
222
|
+
require_paths:
|
226
223
|
- lib
|
227
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
228
|
-
requirements:
|
229
|
-
- -
|
230
|
-
- !ruby/object:Gem::Version
|
224
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - '>='
|
227
|
+
- !ruby/object:Gem::Version
|
231
228
|
version: 1.8.7
|
232
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
233
|
-
requirements:
|
234
|
-
- -
|
235
|
-
- !ruby/object:Gem::Version
|
236
|
-
version:
|
229
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
230
|
+
requirements:
|
231
|
+
- - '>='
|
232
|
+
- !ruby/object:Gem::Version
|
233
|
+
version: '0'
|
237
234
|
requirements: []
|
238
|
-
|
239
235
|
rubyforge_project: pg
|
240
236
|
rubygems_version: 2.0.3
|
241
237
|
signing_key:
|
242
238
|
specification_version: 4
|
243
239
|
summary: Pg is the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/]
|
244
240
|
test_files: []
|
245
|
-
|
metadata.gz.sig
CHANGED
Binary file
|