pg 0.18.4-x64-mingw32 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/BSDL +2 -2
  5. data/ChangeLog +0 -5911
  6. data/History.rdoc +240 -0
  7. data/Manifest.txt +8 -20
  8. data/README-Windows.rdoc +4 -4
  9. data/README.ja.rdoc +1 -2
  10. data/README.rdoc +64 -15
  11. data/Rakefile +20 -21
  12. data/Rakefile.cross +67 -69
  13. data/ext/errorcodes.def +101 -0
  14. data/ext/errorcodes.rb +1 -1
  15. data/ext/errorcodes.txt +33 -2
  16. data/ext/extconf.rb +26 -36
  17. data/ext/gvl_wrappers.c +4 -0
  18. data/ext/gvl_wrappers.h +27 -39
  19. data/ext/pg.c +156 -145
  20. data/ext/pg.h +74 -98
  21. data/ext/pg_binary_decoder.c +82 -15
  22. data/ext/pg_binary_encoder.c +20 -19
  23. data/ext/pg_coder.c +103 -21
  24. data/ext/pg_connection.c +917 -523
  25. data/ext/pg_copy_coder.c +50 -12
  26. data/ext/pg_record_coder.c +491 -0
  27. data/ext/pg_result.c +590 -208
  28. data/ext/pg_text_decoder.c +606 -40
  29. data/ext/pg_text_encoder.c +245 -94
  30. data/ext/pg_tuple.c +549 -0
  31. data/ext/pg_type_map.c +14 -7
  32. data/ext/pg_type_map_all_strings.c +4 -4
  33. data/ext/pg_type_map_by_class.c +9 -4
  34. data/ext/pg_type_map_by_column.c +7 -6
  35. data/ext/pg_type_map_by_mri_type.c +1 -1
  36. data/ext/pg_type_map_by_oid.c +3 -2
  37. data/ext/pg_type_map_in_ruby.c +1 -1
  38. data/ext/{util.c → pg_util.c} +10 -10
  39. data/ext/{util.h → pg_util.h} +2 -2
  40. data/lib/pg.rb +23 -13
  41. data/lib/pg/basic_type_mapping.rb +155 -32
  42. data/lib/pg/binary_decoder.rb +23 -0
  43. data/lib/pg/coder.rb +23 -2
  44. data/lib/pg/connection.rb +73 -13
  45. data/lib/pg/constants.rb +2 -1
  46. data/lib/pg/exceptions.rb +2 -1
  47. data/lib/pg/result.rb +24 -7
  48. data/lib/pg/text_decoder.rb +24 -22
  49. data/lib/pg/text_encoder.rb +40 -8
  50. data/lib/pg/tuple.rb +30 -0
  51. data/lib/pg/type_map_by_column.rb +3 -2
  52. data/spec/helpers.rb +61 -36
  53. data/spec/pg/basic_type_mapping_spec.rb +415 -36
  54. data/spec/pg/connection_spec.rb +732 -327
  55. data/spec/pg/connection_sync_spec.rb +41 -0
  56. data/spec/pg/result_spec.rb +253 -21
  57. data/spec/pg/tuple_spec.rb +333 -0
  58. data/spec/pg/type_map_by_class_spec.rb +4 -4
  59. data/spec/pg/type_map_by_column_spec.rb +6 -2
  60. data/spec/pg/type_map_by_mri_type_spec.rb +2 -2
  61. data/spec/pg/type_map_by_oid_spec.rb +3 -3
  62. data/spec/pg/type_map_in_ruby_spec.rb +1 -1
  63. data/spec/pg/type_map_spec.rb +1 -1
  64. data/spec/pg/type_spec.rb +446 -20
  65. data/spec/pg_spec.rb +2 -2
  66. metadata +66 -78
  67. metadata.gz.sig +0 -0
  68. data/lib/2.0/pg_ext.so +0 -0
  69. data/lib/2.1/pg_ext.so +0 -0
  70. data/lib/2.2/pg_ext.so +0 -0
  71. data/lib/x64-mingw32/libpq.dll +0 -0
  72. data/sample/array_insert.rb +0 -20
  73. data/sample/async_api.rb +0 -106
  74. data/sample/async_copyto.rb +0 -39
  75. data/sample/async_mixed.rb +0 -56
  76. data/sample/check_conn.rb +0 -21
  77. data/sample/copyfrom.rb +0 -81
  78. data/sample/copyto.rb +0 -19
  79. data/sample/cursor.rb +0 -21
  80. data/sample/disk_usage_report.rb +0 -186
  81. data/sample/issue-119.rb +0 -94
  82. data/sample/losample.rb +0 -69
  83. data/sample/minimal-testcase.rb +0 -17
  84. data/sample/notify_wait.rb +0 -72
  85. data/sample/pg_statistics.rb +0 -294
  86. data/sample/replication_monitor.rb +0 -231
  87. data/sample/test_binary_values.rb +0 -33
  88. data/sample/wal_shipper.rb +0 -434
  89. data/sample/warehouse_partitions.rb +0 -320
@@ -1,3 +1,243 @@
1
+ == v1.2.3 [2020-03-18] Michael Granger <ged@FaerieMUD.org>
2
+
3
+ Bugfixes:
4
+
5
+ - Fix possible segfault at `PG::Coder#encode`, `decode` or their implicit calls through
6
+ a typemap after GC.compact. #327
7
+ - Fix possible segfault in `PG::TypeMapByClass` after GC.compact. #328
8
+
9
+
10
+ == v1.2.2 [2020-01-06] Michael Granger <ged@FaerieMUD.org>
11
+
12
+ Enhancements:
13
+
14
+ - Add a binary gem for Ruby 2.7.
15
+
16
+
17
+ == v1.2.1 [2020-01-02] Michael Granger <ged@FaerieMUD.org>
18
+
19
+ Enhancements:
20
+
21
+ - Added internal API for sequel_pg compatibility.
22
+
23
+
24
+ == v1.2.0 [2019-12-20] Michael Granger <ged@FaerieMUD.org>
25
+
26
+ Repository:
27
+ - Our primary repository has been moved to Github https://github.com/ged/ruby-pg .
28
+ Most of the issues from https://bitbucket.org/ged/ruby-pg have been migrated. #43
29
+
30
+ API enhancements:
31
+ - Add PG::Result#field_name_type= and siblings to allow symbols to be used as field names. #306
32
+ - Add new methods for error reporting:
33
+ - PG::Connection#set_error_context_visibility
34
+ - PG::Result#verbose_error_message
35
+ - PG::Result#result_verbose_error_message (alias)
36
+ - Update errorcodes and error classes to PostgreSQL-12.0.
37
+ - New constants: PG_DIAG_SEVERITY_NONLOCALIZED, PQERRORS_SQLSTATE, PQSHOW_CONTEXT_NEVER, PQSHOW_CONTEXT_ERRORS, PQSHOW_CONTEXT_ALWAYS
38
+
39
+ Type cast enhancements:
40
+ - Add PG::TextEncoder::Record and PG::TextDecoder::Record for en/decoding of Composite Types. #258, #36
41
+ - Add PG::BasicTypeRegistry.register_coder to register instances instead of classes.
42
+ This is useful to register parametrized en/decoders like PG::TextDecoder::Record .
43
+ - Add PG::BasicTypeMapForQueries#encode_array_as= to switch between various interpretations of ruby arrays.
44
+ - Add Time, Array<Time>, Array<BigDecimal> and Array<IPAddr> encoders to PG::BasicTypeMapForQueries
45
+ - Exchange sprintf based float encoder by very fast own implementation with more natural format. #301
46
+ - Define encode and decode methods only in en/decoders that implement it, so that they can be queried by respond_to? .
47
+ - Improve PG::TypeMapByColumn#inspect
48
+ - Accept Integer and Float as input to TextEncoder::Numeric . #310
49
+
50
+ Other enhancements:
51
+ - Allocate the data part and the ruby object of PG::Result in one step, so that we don't need to check for valid data.
52
+ This removes PG::Result.allocate and PG::Result.new, which were callable but without any practical use. #42
53
+ - Make use of PQresultMemorySize() of PostgreSQL-12 and fall back to our internal estimator.
54
+ - Improve performance of PG::Result#stream_each_tuple .
55
+ - Store client encoding in data part of PG::Connection and PG::Result objects, so that we no longer use ruby's internal encoding bits. #280
56
+ - Update Windows fat binary gem to OpenSSL-1.1.1d and PostgreSQL-12.1.
57
+ - Add support for TruffleRuby. It is regulary tested as part of our CI.
58
+ - Enable +frozen_string_literal+ in all pg's ruby files
59
+
60
+ Bugfixes:
61
+ - Update the license in gemspec to "BSD-2-Clause".
62
+ It was incorrectly labeled "BSD-3-Clause". #40
63
+ - Respect PG::Coder#flags in PG::Coder#to_h.
64
+ - Fix PG::Result memsize reporting after #clear.
65
+ - Release field names to GC on PG::Result#clear.
66
+ - Fix double free in PG::Result#stream_each_tuple when an exception is raised in the block.
67
+ - Fix PG::Result#stream_each_tuple to deliver typemapped values.
68
+ - Fix encoding of Array<unknown> with PG::BasicTypeMapForQueries
69
+
70
+ Deprecated:
71
+ - Add a deprecation warning to PG::Connection#socket .
72
+
73
+ Removed:
74
+ - Remove PG::Connection#guess_result_memsize= which was temporary added in pg-1.1.
75
+ - Remove PG::Result.allocate and PG::Result.new (see enhancements).
76
+ - Remove support of tainted objects. #307
77
+ - Remove support of ruby-2.0 and 2.1. Minimum is ruby-2.2 now.
78
+
79
+ Documentation:
80
+ - Update description of connection params. See PG::Connection.new
81
+ - Link many method descriptions to corresponding libpq's documentation.
82
+ - Update sync_* and async_* query method descriptions and document the aliases.
83
+ The primary documentation is now at the async_* methods which are the default since pg-1.1.
84
+ - Fix documentation of many constants
85
+
86
+
87
+ == v1.1.4 [2019-01-08] Michael Granger <ged@FaerieMUD.org>
88
+
89
+ - Fix PG::BinaryDecoder::Timestamp on 32 bit systems. # 284
90
+ - Add new error-codes of PostgreSQL-11.
91
+ - Add ruby-2.6 support for Windows fat binary gems and remove ruby-2.0 and 2.1.
92
+
93
+
94
+ == v1.1.3 [2018-09-06] Michael Granger <ged@FaerieMUD.org>
95
+
96
+ - Revert opimization that was sometimes causing EBADF in rb_wait_for_single_fd().
97
+
98
+
99
+ == v1.1.2 [2018-08-28] Michael Granger <ged@FaerieMUD.org>
100
+
101
+ - Don't generate aliases for JOHAB encoding.
102
+ This avoids linking to deprecated/private function rb_enc(db)_alias().
103
+
104
+
105
+ == v1.1.1 [2018-08-27] Michael Granger <ged@FaerieMUD.org>
106
+
107
+ - Reduce deprecation warnings to only one message per deprecation.
108
+
109
+
110
+ == v1.1.0 [2018-08-24] Michael Granger <ged@FaerieMUD.org>
111
+
112
+ Deprecated (disable warnings per PG_SKIP_DEPRECATION_WARNING=1):
113
+ - Forwarding conn.exec to conn.exec_params is deprecated.
114
+ - Forwarding conn.exec_params to conn.exec is deprecated.
115
+ - Forwarding conn.async_exec to conn.async_exec_params.
116
+ - Forwarding conn.send_query to conn.send_query_params is deprecated.
117
+ - Forwarding conn.async_exec_params to conn.async_exec is deprecated.
118
+
119
+ PG::Connection enhancements:
120
+ - Provide PG::Connection#sync_* and PG::Connection#async_* query methods for explicit calling syncronous or asynchronous libpq API.
121
+ - Make PG::Connection#exec and siblings switchable between sync and async API per PG::Connection.async_api= and change the default to async flavors.
122
+ - Add async flavors of exec_params, prepare, exec_prepared, describe_prepared and describe_portal.
123
+ They are identical to their syncronous counterpart, but make use of PostgreSQL's async API.
124
+ - Replace `rb_thread_fd_select()` by faster `rb_wait_for_single_fd()` in `conn.block` and `conn.async_exec` .
125
+ - Add PG::Connection#discard_results .
126
+ - Raise an ArgumentError for strings containing zero bytes by #escape, #escape_literal, #escape_identifier, #quote_ident and PG::TextEncoder::Identifier. These methods previously truncated strings.
127
+
128
+ Result retrieval enhancements:
129
+ - Add PG::Result#tuple_values to retrieve all field values of a row as array.
130
+ - Add PG::Tuple, PG::Result#tuple and PG::Result#stream_each_tuple .
131
+ PG::Tuple offers a way to lazy cast result values.
132
+ - Estimate PG::Result size allocated by libpq and notify the garbage collector about it when running on Ruby-2.4 or newer.
133
+ - Make the estimated PG::Result size available to ObjectSpace.memsize_of(result) .
134
+
135
+ Type cast enhancements:
136
+ - Replace Ruby code by a faster C implementation of the SimpleDecoder's timestamp decode functions. github #20
137
+ - Interpret years with up to 7 digists and BC dates by timestamp decoder.
138
+ - Add text timestamp decoders for UTC vs. local timezone variations.
139
+ - Add text timestamp encoders for UTC timezone.
140
+ - Add decoders for binary timestamps: PG::BinaryDecoder::Timestamp and variations.
141
+ - Add PG::Coder#flags accessor to allow modifications of de- respectively encoder behaviour.
142
+ - Add a flag to raise TypeError for invalid input values to PG::TextDecoder::Array .
143
+ - Add a text decoder for inet/cidr written in C.
144
+ - Add a numeric decoder written in C.
145
+ - Ensure input text is zero terminated for text format in PG::Coder#decode .
146
+
147
+ Source code enhancements:
148
+ - Fix headers and permission bits of various repository files.
149
+
150
+ Bugfixes:
151
+ - Properly decode array with prepended dimensions. #272
152
+ For now dimension decorations are ignored, but a correct Array is returned.
153
+ - Array-Decoder: Avoid leaking memory when an Exception is raised while parsing. Fixes #279
154
+
155
+
156
+ == v1.0.0 [2018-01-10] Michael Granger <ged@FaerieMUD.org>
157
+
158
+ Deprecated:
159
+ - Deprecate Ruby older than 2.2.
160
+ - Deprecate Connection#socket in favor of #socket_io.
161
+
162
+ Removed:
163
+ - Remove compatibility code for Ruby < 2.0 and PostgreSQL < 9.2.
164
+ - Remove partial compatibility with Rubinius.
165
+ - Remove top-level constants PGconn, PGresult, and PGError.
166
+
167
+ Enhancements:
168
+ - Update error codes to PostgreSQL-10
169
+ - Update Windows binary gems to Ruby-2.5, PostgreSQL 10.1 and
170
+ OpenSSL 1.1.0g.
171
+
172
+ Bugfixes:
173
+ - Fix URI detection for connection strings. #265 (thanks to jjoos)
174
+ - MINGW: Workaround segfault due to GCC linker error in conjunction with MSVC.
175
+ This happens when linking to PostgreSQL-10.0-x64 from EnterpriseDB.
176
+
177
+ Documentation fixes:
178
+ - Add PostgreSQL version since when the given function is supported. #263
179
+ - Better documentation to `encoder` and `decoder` arguments of COPY related methods.
180
+
181
+
182
+ == v0.21.0 [2017-06-12] Michael Granger <ged@FaerieMUD.org>
183
+
184
+ Enhancements:
185
+ - Move add_dll_directory to the Runtime namespace for newest versions
186
+ of RubyInstaller.
187
+ - Deprecate PGconn, PGresult, and PGError top-level constants; a warning
188
+ will be output the first time one of them is used. They will be
189
+ removed in the upcoming 1.0 release.
190
+
191
+ Documentation fixes:
192
+ - Update the docs for PG::Result#cmd_tuples
193
+
194
+ New Samples:
195
+ - Add an example of the nicer #copy_data way of doing `COPY`.
196
+
197
+
198
+ == v0.20.0 [2017-03-10] Michael Granger <ged@FaerieMUD.org>
199
+
200
+ Enhancements:
201
+ - Update error codes to PostgreSQL-9.6
202
+ - Update Windows binary gems to Ruby-2.4, PostgreSQL 9.6.1 and
203
+ OpenSSL 1.0.2j.
204
+ - Add support for RubyInstaller2 to Windows binary gems.
205
+
206
+ Bugfixes:
207
+ - Use secure JSON methods for JSON (de)serialisation. #248
208
+ - Fix Result#inspect on a cleared result.
209
+ - Fix test case that failed on Ruby-2.4. #255
210
+
211
+ Documentation fixes:
212
+ - Talk about Integer instead of Fixnum.
213
+ - Fix method signature of Coder#encode.
214
+
215
+
216
+ == v0.19.0 [2016-09-21] Michael Granger <ged@FaerieMUD.org>
217
+
218
+ - Deprecate Ruby 1.9
219
+
220
+ Enhancements:
221
+ - Respect and convert character encoding of all strings sent
222
+ to the server. #231
223
+ - Add PostgreSQL-9.5 functions PQsslInUse(), PQsslAttribute()
224
+ and PQsslAttributeNames().
225
+ - Various documentation fixes and improvements.
226
+ - Add mechanism to build without pg_config:
227
+ gem install pg -- --with-pg-config=ignore
228
+ - Update Windows binary gems to Ruby-2.3, PostgreSQL 9.5.4 and
229
+ OpenSSL 1.0.2f.
230
+ - Add JSON coders and add them to BasicTypeMapForResults and
231
+ BasicTypeMapBasedOnResult
232
+ - Allow build from git per bundler.
233
+
234
+ Bugfixes:
235
+ - Release GVL while calling PQsetClientEncoding(). #245
236
+ - Add __EXTENSIONS__ to Solaris/SmartOS for Ruby >= 2.3.x. #236
237
+ - Fix wrong exception when running SQL while in Connection#copy_data
238
+ block for output
239
+
240
+
1
241
  == v0.18.4 [2015-11-13] Michael Granger <ged@FaerieMUD.org>
2
242
 
3
243
  Enhancements:
@@ -26,9 +26,11 @@ ext/pg_coder.c
26
26
  ext/pg_connection.c
27
27
  ext/pg_copy_coder.c
28
28
  ext/pg_errors.c
29
+ ext/pg_record_coder.c
29
30
  ext/pg_result.c
30
31
  ext/pg_text_decoder.c
31
32
  ext/pg_text_encoder.c
33
+ ext/pg_tuple.c
32
34
  ext/pg_type_map.c
33
35
  ext/pg_type_map_all_strings.c
34
36
  ext/pg_type_map_by_class.c
@@ -36,13 +38,14 @@ ext/pg_type_map_by_column.c
36
38
  ext/pg_type_map_by_mri_type.c
37
39
  ext/pg_type_map_by_oid.c
38
40
  ext/pg_type_map_in_ruby.c
39
- ext/util.c
40
- ext/util.h
41
+ ext/pg_util.c
42
+ ext/pg_util.h
41
43
  ext/vc/pg.sln
42
44
  ext/vc/pg_18/pg.vcproj
43
45
  ext/vc/pg_19/pg_19.vcproj
44
46
  lib/pg.rb
45
47
  lib/pg/basic_type_mapping.rb
48
+ lib/pg/binary_decoder.rb
46
49
  lib/pg/coder.rb
47
50
  lib/pg/connection.rb
48
51
  lib/pg/constants.rb
@@ -50,31 +53,16 @@ lib/pg/exceptions.rb
50
53
  lib/pg/result.rb
51
54
  lib/pg/text_decoder.rb
52
55
  lib/pg/text_encoder.rb
56
+ lib/pg/tuple.rb
53
57
  lib/pg/type_map_by_column.rb
54
- sample/array_insert.rb
55
- sample/async_api.rb
56
- sample/async_copyto.rb
57
- sample/async_mixed.rb
58
- sample/check_conn.rb
59
- sample/copyfrom.rb
60
- sample/copyto.rb
61
- sample/cursor.rb
62
- sample/disk_usage_report.rb
63
- sample/issue-119.rb
64
- sample/losample.rb
65
- sample/minimal-testcase.rb
66
- sample/notify_wait.rb
67
- sample/pg_statistics.rb
68
- sample/replication_monitor.rb
69
- sample/test_binary_values.rb
70
- sample/wal_shipper.rb
71
- sample/warehouse_partitions.rb
72
58
  spec/data/expected_trace.out
73
59
  spec/data/random_binary_data
74
60
  spec/helpers.rb
75
61
  spec/pg/basic_type_mapping_spec.rb
76
62
  spec/pg/connection_spec.rb
63
+ spec/pg/connection_sync_spec.rb
77
64
  spec/pg/result_spec.rb
65
+ spec/pg/tuple_spec.rb
78
66
  spec/pg/type_map_by_class_spec.rb
79
67
  spec/pg/type_map_by_column_spec.rb
80
68
  spec/pg/type_map_by_mri_type_spec.rb
@@ -35,8 +35,8 @@ Binary gems for windows can be built on Linux, OS-X and even on Windows
35
35
  with the help of docker. This is how regular windows gems are built for
36
36
  rubygems.org .
37
37
 
38
- To do this, install boot2docker [on Windows](https://github.com/boot2docker/windows-installer/releases)
39
- or [on OS X](https://github.com/boot2docker/osx-installer/releases) and make
38
+ To do this, install boot2docker {on Windows}[https://github.com/boot2docker/windows-installer/releases]
39
+ or {on OS X}[https://github.com/boot2docker/osx-installer/releases] and make
40
40
  sure it is started. A native Docker installation is best on Linux.
41
41
 
42
42
  Then run:
@@ -50,7 +50,7 @@ containing binaries for all supported ruby versions.
50
50
 
51
51
  == Reporting Problems
52
52
 
53
- If you have any problems you can submit them via
54
- [the project's issue-tracker][bitbucket]. And submit questions, problems, or
53
+ If you have any problems you can submit them via {the project's
54
+ issue-tracker}[https://github.com/ged/ruby-pg/issues]. And submit questions, problems, or
55
55
  solutions, so that it can be improved.
56
56
 
@@ -1,7 +1,6 @@
1
1
  = pg
2
2
 
3
- home :: https://bitbucket.org/ged/ruby-pg
4
- mirror :: https://github.com/ged/ruby-pg
3
+ home :: https://github.com/ged/ruby-pg
5
4
  docs :: http://deveiate.org/code/pg
6
5
 
7
6
 
@@ -1,7 +1,6 @@
1
1
  = pg
2
2
 
3
- home :: https://bitbucket.org/ged/ruby-pg
4
- mirror :: https://github.com/ged/ruby-pg
3
+ home :: https://github.com/ged/ruby-pg
5
4
  docs :: http://deveiate.org/code/pg
6
5
 
7
6
  {<img src="https://badges.gitter.im/Join%20Chat.svg" alt="Join the chat at https://gitter.im/ged/ruby-pg">}[https://gitter.im/ged/ruby-pg?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge]
@@ -11,7 +10,7 @@ docs :: http://deveiate.org/code/pg
11
10
 
12
11
  Pg is the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/].
13
12
 
14
- It works with {PostgreSQL 8.4 and later}[http://www.postgresql.org/support/versioning/].
13
+ It works with {PostgreSQL 9.2 and later}[http://www.postgresql.org/support/versioning/].
15
14
 
16
15
  A small example usage:
17
16
 
@@ -23,7 +22,7 @@ A small example usage:
23
22
  conn = PG.connect( dbname: 'sales' )
24
23
  conn.exec( "SELECT * FROM pg_stat_activity" ) do |result|
25
24
  puts " PID | User | Query"
26
- result.each do |row|
25
+ result.each do |row|
27
26
  puts " %7d | %-16s | %s " %
28
27
  row.values_at('procpid', 'usename', 'current_query')
29
28
  end
@@ -31,19 +30,30 @@ A small example usage:
31
30
 
32
31
  == Build Status
33
32
 
34
- {<img src="https://travis-ci.org/ged/ruby-pg.png?branch=master" alt="Build Status Travis-CI" />}[https://travis-ci.org/ged/ruby-pg]
35
- {<img src="https://ci.appveyor.com/api/projects/status/at4g4swb2cd4xji7/branch/master?svg=true" alt="Build Status Appveyor" />}[https://ci.appveyor.com/project/ged/ruby-pg]
33
+ {<img src="https://travis-ci.org/ged/ruby-pg.svg?branch=master" alt="Build Status Travis-CI" />}[https://travis-ci.org/ged/ruby-pg]
34
+ {<img src="https://ci.appveyor.com/api/projects/status/gjx5axouf3b1wicp?svg=true" alt="Build Status Appveyor" />}[https://ci.appveyor.com/project/ged/ruby-pg-9j8l3]
36
35
 
37
36
 
38
37
  == Requirements
39
38
 
40
- * Ruby 1.9.3-p392, or 2.0.0-p0.
41
- * PostgreSQL 8.4.x or later (with headers, -dev packages, etc).
39
+ * Ruby 2.2 or newer
40
+ * PostgreSQL 9.2.x or later (with headers, -dev packages, etc).
42
41
 
43
- It may work with earlier versions of Ruby/PostgreSQL as well, but those are
42
+ It usually works with earlier versions of Ruby/PostgreSQL as well, but those are
44
43
  not regularly tested.
45
44
 
46
45
 
46
+ == Versioning
47
+
48
+ We tag and release gems according to the {Semantic Versioning}[http://semver.org/] principle.
49
+
50
+ As a result of this policy, you can (and should) specify a dependency on this gem using the {Pessimistic Version Constraint}[http://guides.rubygems.org/patterns/#pessimistic-version-constraint] with two digits of precision.
51
+
52
+ For example:
53
+
54
+ spec.add_dependency 'pg', '~> 1.0'
55
+
56
+
47
57
  == How To Install
48
58
 
49
59
  Install via RubyGems:
@@ -66,6 +76,10 @@ There's also {a Google+ group}[http://goo.gl/TFy1U] and a
66
76
  {mailing list}[http://groups.google.com/group/ruby-pg] if you get stuck, or just
67
77
  want to chat about something.
68
78
 
79
+ If you want to install as a signed gem, the public certs of the gem signers
80
+ can be found in {the `certs` directory}[https://github.com/ged/ruby-pg/tree/master/certs]
81
+ of the repository.
82
+
69
83
 
70
84
  == Type Casts
71
85
 
@@ -103,6 +117,30 @@ to build composite types by assigning an element encoder/decoder.
103
117
  PG::Coder objects can be used to set up a PG::TypeMap or alternatively
104
118
  to convert single values to/from their string representation.
105
119
 
120
+ The following PostgreSQL column types are supported by ruby-pg (TE = Text Encoder, TD = Text Decoder, BE = Binary Encoder, BD = Binary Decoder):
121
+ * Integer: {TE}[rdoc-ref:PG::TextEncoder::Integer], {TD}[rdoc-ref:PG::TextDecoder::Integer], {BD}[rdoc-ref:PG::BinaryDecoder::Integer] 💡 No links? Switch to {here}[https://deveiate.org/code/pg/README_rdoc.html#label-Type+Casts] 💡
122
+ * BE: {Int2}[rdoc-ref:PG::BinaryEncoder::Int2], {Int4}[rdoc-ref:PG::BinaryEncoder::Int4], {Int8}[rdoc-ref:PG::BinaryEncoder::Int8]
123
+ * Float: {TE}[rdoc-ref:PG::TextEncoder::Float], {TD}[rdoc-ref:PG::TextDecoder::Float], {BD}[rdoc-ref:PG::BinaryDecoder::Float]
124
+ * Numeric: {TE}[rdoc-ref:PG::TextEncoder::Numeric], {TD}[rdoc-ref:PG::TextDecoder::Numeric]
125
+ * Boolean: {TE}[rdoc-ref:PG::TextEncoder::Boolean], {TD}[rdoc-ref:PG::TextDecoder::Boolean], {BE}[rdoc-ref:PG::BinaryEncoder::Boolean], {BD}[rdoc-ref:PG::BinaryDecoder::Boolean]
126
+ * String: {TE}[rdoc-ref:PG::TextEncoder::String], {TD}[rdoc-ref:PG::TextDecoder::String], {BE}[rdoc-ref:PG::BinaryEncoder::String], {BD}[rdoc-ref:PG::BinaryDecoder::String]
127
+ * Bytea: {TE}[rdoc-ref:PG::TextEncoder::Bytea], {TD}[rdoc-ref:PG::TextDecoder::Bytea], {BE}[rdoc-ref:PG::BinaryEncoder::Bytea], {BD}[rdoc-ref:PG::BinaryDecoder::Bytea]
128
+ * Base64: {TE}[rdoc-ref:PG::TextEncoder::ToBase64], {TD}[rdoc-ref:PG::TextDecoder::FromBase64], {BE}[rdoc-ref:PG::BinaryEncoder::FromBase64], {BD}[rdoc-ref:PG::BinaryDecoder::ToBase64]
129
+ * Timestamp:
130
+ * TE: {local}[rdoc-ref:PG::TextEncoder::TimestampWithoutTimeZone], {UTC}[rdoc-ref:PG::TextEncoder::TimestampUtc], {with-TZ}[rdoc-ref:PG::TextEncoder::TimestampWithTimeZone]
131
+ * TD: {local}[rdoc-ref:PG::TextDecoder::TimestampLocal], {UTC}[rdoc-ref:PG::TextDecoder::TimestampUtc], {UTC-to-local}[rdoc-ref:PG::TextDecoder::TimestampUtcToLocal]
132
+ * BD: {local}[rdoc-ref:PG::BinaryDecoder::TimestampLocal], {UTC}[rdoc-ref:PG::BinaryDecoder::TimestampUtc], {UTC-to-local}[rdoc-ref:PG::BinaryDecoder::TimestampUtcToLocal]
133
+ * Date: {TE}[rdoc-ref:PG::TextEncoder::Date], {TD}[rdoc-ref:PG::TextDecoder::Date]
134
+ * JSON and JSONB: {TE}[rdoc-ref:PG::TextEncoder::JSON], {TD}[rdoc-ref:PG::TextDecoder::JSON]
135
+ * Inet: {TE}[rdoc-ref:PG::TextEncoder::Inet], {TD}[rdoc-ref:PG::TextDecoder::Inet]
136
+ * Array: {TE}[rdoc-ref:PG::TextEncoder::Array], {TD}[rdoc-ref:PG::TextDecoder::Array]
137
+ * Composite Type (also called "Row" or "Record"): {TE}[rdoc-ref:PG::TextEncoder::Record], {TD}[rdoc-ref:PG::TextDecoder::Record]
138
+
139
+ The following text formats can also be encoded although they are not used as column type:
140
+ * COPY input and output data: {TE}[rdoc-ref:PG::TextEncoder::CopyRow], {TD}[rdoc-ref:PG::TextDecoder::CopyRow]
141
+ * Literal for insertion into SQL string: {TE}[rdoc-ref:PG::TextEncoder::QuotedLiteral]
142
+ * SQL-Identifier: {TE}[rdoc-ref:PG::TextEncoder::Identifier], {TD}[rdoc-ref:PG::TextDecoder::Identifier]
143
+
106
144
  === PG::TypeMap and derivations (ext/pg_type_map*.c, lib/pg/type_map*.rb)
107
145
 
108
146
  A TypeMap defines which value will be converted by which encoder/decoder.
@@ -112,13 +150,25 @@ needs for type casting. The default type map is PG::TypeMapAllStrings.
112
150
 
113
151
  A type map can be assigned per connection or per query respectively per
114
152
  result set. Type maps can also be used for COPY in and out data streaming.
153
+ See PG::Connection#copy_data .
154
+
155
+ The following base type maps are available:
156
+ * PG::TypeMapAllStrings - encodes and decodes all values to and from strings (default)
157
+ * PG::TypeMapByClass - selects encoder based on the class of the value to be sent
158
+ * PG::TypeMapByColumn - selects encoder and decoder by column order
159
+ * PG::TypeMapByOid - selects decoder by PostgreSQL type OID
160
+ * PG::TypeMapInRuby - define a custom type map in ruby
161
+
162
+ The following type maps are prefilled with type mappings from the PG::BasicTypeRegistry :
163
+ * PG::BasicTypeMapForResults - a PG::TypeMapByOid prefilled with decoders for common PostgreSQL column types
164
+ * PG::BasicTypeMapBasedOnResult - a PG::TypeMapByOid prefilled with encoders for common PostgreSQL column types
165
+ * PG::BasicTypeMapForQueries - a PG::TypeMapByClass prefilled with encoders for common Ruby value classes
115
166
 
116
167
 
117
168
  == Contributing
118
169
 
119
- To report bugs, suggest features, or check out the source with Mercurial,
120
- {check out the project page}[http://bitbucket.org/ged/ruby-pg]. If you prefer
121
- Git, there's also a {Github mirror}[https://github.com/ged/ruby-pg].
170
+ To report bugs, suggest features, or check out the source with Git,
171
+ {check out the project page}[https://github.com/ged/ruby-pg].
122
172
 
123
173
  After checking out the source, run:
124
174
 
@@ -133,7 +183,7 @@ Lars Kanis <lars@greiz-reinsdorf.de>.
133
183
 
134
184
  == Copying
135
185
 
136
- Copyright (c) 1997-2015 by the authors.
186
+ Copyright (c) 1997-2019 by the authors.
137
187
 
138
188
  * Jeff Davis <ruby-pg@j-davis.com>
139
189
  * Guy Decoux (ts) <decoux@moulon.inra.fr>
@@ -145,7 +195,7 @@ Copyright (c) 1997-2015 by the authors.
145
195
  * Noboru Saitou <noborus@netlab.jp>
146
196
 
147
197
  You may redistribute this software under the same terms as Ruby itself; see
148
- http://www.ruby-lang.org/en/LICENSE.txt or the LICENSE file in the source
198
+ https://www.ruby-lang.org/en/about/license.txt or the BSDL file in the source
149
199
  for details.
150
200
 
151
201
  Portions of the code are from the PostgreSQL project, and are distributed
@@ -161,4 +211,3 @@ to this library over the years.
161
211
 
162
212
  We are thankful to the people at the ruby-list and ruby-dev mailing lists.
163
213
  And to the people who developed PostgreSQL.
164
-