pg 0.14.0-x86-mingw32 → 0.14.1.pre.363-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
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