pg 0.17.0-x64-mingw32 → 0.17.1-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- 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/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: bcac8eb5aa5042ec253210dabf4c4c10c8d1f8db
|
4
|
+
data.tar.gz: be57835fbc8c00b842724c1bf4d123d41c92da35
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 55820d1831e4c4618804db28a48f97d89facf6350f89b4f9c97aa67a34b1f2c01fdfc224d222f140a462e6a18c55e5d32ff1d8a83a95516d358d6501868e439c
|
7
|
+
data.tar.gz: 84e7a45a5485ac90c861085c49be80ffa4eff8fb28284b83ff00536865a47689b10e7a10edfa601a69d5429fa78d7cf87e8ad68ee7e44eaa40ac85bff9d77d7f
|
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/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: x64-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
|
@@ -206,38 +204,35 @@ files:
|
|
206
204
|
- spec/pg_spec.rb
|
207
205
|
- lib/2.0/pg_ext.so
|
208
206
|
homepage: https://bitbucket.org/ged/ruby-pg
|
209
|
-
licenses:
|
207
|
+
licenses:
|
210
208
|
- BSD
|
211
209
|
- Ruby
|
212
210
|
- GPL
|
213
211
|
metadata: {}
|
214
|
-
|
215
212
|
post_install_message:
|
216
|
-
rdoc_options:
|
213
|
+
rdoc_options:
|
217
214
|
- -f
|
218
215
|
- fivefish
|
219
216
|
- -t
|
220
|
-
-
|
217
|
+
- 'pg: The Ruby Interface to PostgreSQL'
|
221
218
|
- -m
|
222
219
|
- README.rdoc
|
223
|
-
require_paths:
|
220
|
+
require_paths:
|
224
221
|
- lib
|
225
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
226
|
-
requirements:
|
227
|
-
- -
|
228
|
-
- !ruby/object:Gem::Version
|
222
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
223
|
+
requirements:
|
224
|
+
- - '>='
|
225
|
+
- !ruby/object:Gem::Version
|
229
226
|
version: 1.8.7
|
230
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
231
|
-
requirements:
|
232
|
-
- -
|
233
|
-
- !ruby/object:Gem::Version
|
234
|
-
version:
|
227
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
228
|
+
requirements:
|
229
|
+
- - '>='
|
230
|
+
- !ruby/object:Gem::Version
|
231
|
+
version: '0'
|
235
232
|
requirements: []
|
236
|
-
|
237
233
|
rubyforge_project: pg
|
238
234
|
rubygems_version: 2.0.3
|
239
235
|
signing_key:
|
240
236
|
specification_version: 4
|
241
237
|
summary: Pg is the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/]
|
242
238
|
test_files: []
|
243
|
-
|
metadata.gz.sig
CHANGED
Binary file
|