pg 0.14.0-x86-mingw32 → 0.14.1.pre.363-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.
data/ChangeLog CHANGED
@@ -1,8 +1,102 @@
1
+ 2012-08-12 Michael Granger <ged@FaerieMUD.org>
2
+
3
+ * History.rdoc, lib/pg.rb:
4
+ Bump the patch version, update history.
5
+ [ef533f731814] [tip]
6
+
7
+ 2012-08-08 Jeremy Evans <code@jeremyevans.net>
8
+
9
+ * ext/extconf.rb, ext/pg_result.c:
10
+ [PATCH] Recognize PGRES_SINGLE_TUPLE as OK when checking PGresult
11
+
12
+ From 10cdc23ac4e3cfc91488f3f8a7a44f3275c9fe0a Mon Sep 17 00:00:00
13
+ 2001 This is used for the new single row mode introduced in
14
+ 9.2beta3, and indicates a successful result when using that mode.
15
+ --- ext/extconf.rb | 1 + ext/pg_result.c | 3 +++ 2 files
16
+ changed, 4 insertions(+), 0 deletions(-)
17
+ [f92b6456c566]
18
+
19
+ 2012-08-10 Michael Granger <ged@FaerieMUD.org>
20
+
21
+ * ext/pg_result.c:
22
+ Apply the heap vs. stack fix for PG::Result#fields too.
23
+ [512a362e883e]
24
+
25
+ * ext/pg_result.c:
26
+ Additional fixes for PG::Result#values and #column_values.
27
+
28
+ - Revert the row-building loop of Result#values to use the heap,
29
+ too.
30
+ - Use the heap for building #column_values, too.
31
+
32
+ Props to Lars Kanis for figuring out the problem.
33
+
34
+ Refs #135, #136, #138.
35
+ [62c8ee5406db]
36
+
37
+ * ext/pg_result.c:
38
+ Use heap instead of stack for result array in #values, etc al. (refs
39
+ #135, #136, #138)
40
+ [4d5e457062e8]
41
+
42
+ 2012-08-04 Lars Kanis <kanis@comcard.de>
43
+
44
+ * spec/pg/connection_spec.rb:
45
+ Add missing require for using the TCPServer in connection_spec. This
46
+ fixes #137 .
47
+ [72b45840d975]
48
+
49
+ 2012-07-03 Lars Kanis <kanis@comcard.de>
50
+
51
+ * ext/pg_connection.c:
52
+ Add note about the usage scope of the result object received by the
53
+ #set_notice_receiver block.
54
+ [de900bfaff1a]
55
+
56
+ 2012-07-02 Lars Kanis <kanis@comcard.de>
57
+
58
+ * ext/pg_connection.c, spec/pg/connection_spec.rb:
59
+ Fix encoding of values delivered to the row processor and add specs
60
+ for binary and text data.
61
+ [bb9c6625fbc9] <row_processor>
62
+
63
+ * ext/pg_connection.c:
64
+ Polish the documentation a little bit
65
+ [b7633be3c941] <row_processor>
66
+
67
+ * ext/pg_result.c:
68
+ Add PGRES_COPY_BOTH to documentation of PG::Result#result_status
69
+ [5e0e06440b1a]
70
+
71
+ 2012-07-01 Lars Kanis <kanis@comcard.de>
72
+
73
+ * ext/pg_connection.c:
74
+ Get rid of gcc warning about (non-)const PGresult to
75
+ pg_new_result_for_callback()
76
+ [1a25786ed8f3] <row_processor>
77
+
78
+ * ext/pg_connection.c, spec/pg/connection_spec.rb:
79
+ Fix wrong encoding for Result object passed to a notice-receiver
80
+ block. Add proper specs for #set_notice_receiver.
81
+ [4280826bb9b9] <row_processor>
82
+
83
+ * ext/extconf.rb, ext/pg.h, ext/pg_connection.c, ext/pg_result.c,
84
+ spec/lib/helpers.rb, spec/pg/connection_spec.rb:
85
+ Implement PostgreSQL-9.2 functions PG::Connection#set_row_processor,
86
+ get_row_processor, skip_result
87
+ [b7ce4843f4d1] <row_processor>
88
+
89
+ 2012-06-28 Lars Kanis <kanis@comcard.de>
90
+
91
+ * ext/pg_result.c:
92
+ Add PGRES_COPY_BOTH to documentation of PG::Result#result_status
93
+ [63998b47da6e] <copy_both_docu>
94
+
1
95
  2012-06-23 Michael Granger <ged@FaerieMUD.org>
2
96
 
3
97
  * .hgtags:
4
98
  Added tag v0.14.0 for changeset 634e0a42a101
5
- [35eecb26bd34] [tip]
99
+ [35eecb26bd34]
6
100
 
7
101
  * .hgsigs:
8
102
  Added signature for changeset a45710f8db30
@@ -1,3 +1,22 @@
1
+ == v0.14.1 [2012-08-12] Michael Granger <ged@FaerieMUD.org>
2
+
3
+ Important bugfix:
4
+
5
+ - Fix stack overflow bug in PG::Result#values and #column_values (#135). Thanks
6
+ to everyone who reported the bug, and Lars Kanis especially for figuring out
7
+ the problem.
8
+
9
+ PostgreSQL 9.2 beta fixes:
10
+
11
+ - Recognize PGRES_SINGLE_TUPLE as OK when checking PGresult (Jeremy Evans)
12
+
13
+ Documentation fixes:
14
+
15
+ - Add note about the usage scope of the result object received by the
16
+ #set_notice_receiver block. (Lars Kanis)
17
+ - Add PGRES_COPY_BOTH to documentation of PG::Result#result_status. (Lars Kanis)
18
+
19
+
1
20
  == v0.14.0 [2012-06-17] Michael Granger <ged@FaerieMUD.org>
2
21
 
3
22
  Bugfixes:
@@ -70,6 +70,7 @@ have_func 'rb_encdb_alias'
70
70
  have_func 'rb_enc_alias'
71
71
 
72
72
  have_const 'PGRES_COPY_BOTH', 'libpq-fe.h'
73
+ have_const 'PGRES_SINGLE_TUPLE', 'libpq-fe.h'
73
74
 
74
75
  $defs.push( "-DHAVE_ST_NOTIFY_EXTRA" ) if
75
76
  have_struct_member 'struct pgNotify', 'extra', 'libpq-fe.h'
@@ -2325,6 +2325,10 @@ notice_receiver_proxy(void *arg, const PGresult *result)
2325
2325
  * the Proc object previously set, or +nil+ if it was previously the default.
2326
2326
  *
2327
2327
  * If you pass no arguments, it will reset the handler to the default.
2328
+ *
2329
+ * *Note:* The +result+ passed to the block should not be used outside
2330
+ * of the block, since the corresponding C object could be freed after the
2331
+ * block finishes.
2328
2332
  */
2329
2333
  static VALUE
2330
2334
  pgconn_set_notice_receiver(VALUE self)
@@ -67,6 +67,9 @@ pg_result_check( VALUE self )
67
67
  case PGRES_COPY_IN:
68
68
  #ifdef HAVE_CONST_PGRES_COPY_BOTH
69
69
  case PGRES_COPY_BOTH:
70
+ #endif
71
+ #ifdef HAVE_CONST_PGRES_SINGLE_TUPLE
72
+ case PGRES_SINGLE_TUPLE:
70
73
  #endif
71
74
  case PGRES_EMPTY_QUERY:
72
75
  case PGRES_COMMAND_OK:
@@ -179,6 +182,7 @@ pgresult_get(VALUE self)
179
182
  * * +PGRES_BAD_RESPONSE+
180
183
  * * +PGRES_NONFATAL_ERROR+
181
184
  * * +PGRES_FATAL_ERROR+
185
+ * * +PGRES_COPY_BOTH+
182
186
  */
183
187
  static VALUE
184
188
  pgresult_result_status(VALUE self)
@@ -725,15 +729,15 @@ pgresult_values(VALUE self)
725
729
  int field;
726
730
  int num_rows = PQntuples(result);
727
731
  int num_fields = PQnfields(result);
728
- VALUE rows[ num_rows ];
732
+ VALUE ary = rb_ary_new2(num_rows);
729
733
 
730
734
  for ( row = 0; row < num_rows; row++ ) {
731
- VALUE new_row[ num_fields ];
735
+ VALUE new_row = rb_ary_new2(num_fields);
732
736
 
733
737
  /* populate the row */
734
738
  for ( field = 0; field < num_fields; field++ ) {
735
739
  if ( PQgetisnull(result, row, field) ) {
736
- new_row[ field ] = Qnil;
740
+ rb_ary_store( new_row, field, Qnil );
737
741
  }
738
742
  else {
739
743
  VALUE val = rb_tainted_str_new( PQgetvalue(result, row, field),
@@ -747,14 +751,14 @@ pgresult_values(VALUE self)
747
751
  rb_enc_associate( val, rb_ascii8bit_encoding() );
748
752
  }
749
753
  #endif
750
- new_row[ field ] = val;
754
+ rb_ary_store( new_row, field, val );
751
755
  }
752
756
  }
753
757
 
754
- rows[ row ] = rb_ary_new4( num_fields, new_row );
758
+ rb_ary_store( ary, row, new_row );
755
759
  }
756
760
 
757
- return rb_ary_new4( num_rows, rows );
761
+ return ary;
758
762
  }
759
763
 
760
764
 
@@ -769,7 +773,7 @@ make_column_result_array( VALUE self, int col )
769
773
  int rows = PQntuples( result );
770
774
  int i;
771
775
  VALUE val = Qnil;
772
- VALUE results[ rows ];
776
+ VALUE results = rb_ary_new2( rows );
773
777
 
774
778
  if ( col >= PQnfields(result) )
775
779
  rb_raise( rb_eIndexError, "no column %d in result", col );
@@ -787,10 +791,10 @@ make_column_result_array( VALUE self, int col )
787
791
  }
788
792
  #endif
789
793
 
790
- results[ i ] = val;
794
+ rb_ary_store( results, i, val );
791
795
  }
792
796
 
793
- return rb_ary_new4( rows, results );
797
+ return results;
794
798
  }
795
799
 
796
800
 
@@ -860,16 +864,16 @@ pgresult_fields(VALUE self)
860
864
  {
861
865
  PGresult *result = pgresult_get( self );
862
866
  int n = PQnfields( result );
863
- VALUE fields[ n ];
867
+ VALUE fields = rb_ary_new2( n );
864
868
  int i;
865
869
 
866
870
  for ( i = 0; i < n; i++ ) {
867
871
  VALUE val = rb_tainted_str_new2(PQfname(result, i));
868
872
  ASSOCIATE_INDEX(val, self);
869
- fields[ i ] = val;
873
+ rb_ary_store( fields, i, val );
870
874
  }
871
875
 
872
- return rb_ary_new4( n, fields );
876
+ return fields;
873
877
  }
874
878
 
875
879
 
Binary file
Binary file
data/lib/pg.rb CHANGED
@@ -19,7 +19,7 @@ end
19
19
  module PG
20
20
 
21
21
  # Library version
22
- VERSION = '0.14.0'
22
+ VERSION = '0.14.1.pre.363'
23
23
 
24
24
  # VCS revision
25
25
  REVISION = %q$Revision$
@@ -14,6 +14,7 @@ BEGIN {
14
14
  require 'rspec'
15
15
  require 'spec/lib/helpers'
16
16
  require 'timeout'
17
+ require 'socket'
17
18
  require 'pg'
18
19
 
19
20
  describe PG::Connection do
metadata CHANGED
@@ -1,13 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg
3
3
  version: !ruby/object:Gem::Version
4
- hash: 39
5
- prerelease:
4
+ hash: 1923832471
5
+ prerelease: 7
6
6
  segments:
7
7
  - 0
8
8
  - 14
9
- - 0
10
- version: 0.14.0
9
+ - 1
10
+ - pre
11
+ - 363
12
+ version: 0.14.1.pre.363
11
13
  platform: x86-mingw32
12
14
  authors:
13
15
  - Michael Granger
@@ -15,7 +17,7 @@ autorequire:
15
17
  bindir: bin
16
18
  cert_chain: []
17
19
 
18
- date: 2012-06-25 00:00:00 Z
20
+ date: 2012-08-14 00:00:00 Z
19
21
  dependencies:
20
22
  - !ruby/object:Gem::Dependency
21
23
  name: hoe-mercurial
@@ -25,12 +27,12 @@ dependencies:
25
27
  requirements:
26
28
  - - ~>
27
29
  - !ruby/object:Gem::Version
28
- hash: 25
30
+ hash: 7
29
31
  segments:
30
32
  - 1
31
- - 3
32
- - 1
33
- version: 1.3.1
33
+ - 4
34
+ - 0
35
+ version: 1.4.0
34
36
  type: :development
35
37
  version_requirements: *id001
36
38
  - !ruby/object:Gem::Dependency
@@ -214,12 +216,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
214
216
  required_rubygems_version: !ruby/object:Gem::Requirement
215
217
  none: false
216
218
  requirements:
217
- - - ">="
219
+ - - ">"
218
220
  - !ruby/object:Gem::Version
219
- hash: 3
221
+ hash: 25
220
222
  segments:
221
- - 0
222
- version: "0"
223
+ - 1
224
+ - 3
225
+ - 1
226
+ version: 1.3.1
223
227
  requirements: []
224
228
 
225
229
  rubyforge_project: pg