pg 1.4.3 → 1.5.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.appveyor.yml +15 -9
  4. data/.github/workflows/binary-gems.yml +43 -12
  5. data/.github/workflows/source-gem.yml +28 -20
  6. data/.gitignore +11 -2
  7. data/.travis.yml +2 -2
  8. data/{History.rdoc → History.md} +251 -145
  9. data/README.ja.md +276 -0
  10. data/README.md +286 -0
  11. data/Rakefile +15 -6
  12. data/Rakefile.cross +7 -11
  13. data/certs/larskanis-2023.pem +24 -0
  14. data/ext/errorcodes.def +4 -0
  15. data/ext/errorcodes.txt +2 -1
  16. data/ext/pg.c +14 -30
  17. data/ext/pg.h +11 -5
  18. data/ext/pg_binary_decoder.c +80 -1
  19. data/ext/pg_binary_encoder.c +225 -1
  20. data/ext/pg_coder.c +17 -8
  21. data/ext/pg_connection.c +162 -64
  22. data/ext/pg_copy_coder.c +307 -18
  23. data/ext/pg_errors.c +1 -1
  24. data/ext/pg_record_coder.c +6 -5
  25. data/ext/pg_result.c +102 -26
  26. data/ext/pg_text_decoder.c +28 -10
  27. data/ext/pg_text_encoder.c +23 -10
  28. data/ext/pg_tuple.c +35 -32
  29. data/ext/pg_type_map.c +4 -3
  30. data/ext/pg_type_map_all_strings.c +3 -3
  31. data/ext/pg_type_map_by_class.c +6 -4
  32. data/ext/pg_type_map_by_column.c +9 -5
  33. data/ext/pg_type_map_by_mri_type.c +1 -1
  34. data/ext/pg_type_map_by_oid.c +8 -5
  35. data/ext/pg_type_map_in_ruby.c +6 -3
  36. data/lib/pg/basic_type_map_based_on_result.rb +21 -1
  37. data/lib/pg/basic_type_map_for_queries.rb +13 -8
  38. data/lib/pg/basic_type_map_for_results.rb +26 -3
  39. data/lib/pg/basic_type_registry.rb +30 -32
  40. data/lib/pg/binary_decoder/date.rb +9 -0
  41. data/lib/pg/binary_decoder/timestamp.rb +26 -0
  42. data/lib/pg/binary_encoder/timestamp.rb +20 -0
  43. data/lib/pg/coder.rb +15 -13
  44. data/lib/pg/connection.rb +148 -86
  45. data/lib/pg/exceptions.rb +7 -0
  46. data/lib/pg/text_decoder/date.rb +18 -0
  47. data/lib/pg/text_decoder/inet.rb +9 -0
  48. data/lib/pg/text_decoder/json.rb +14 -0
  49. data/lib/pg/text_decoder/numeric.rb +9 -0
  50. data/lib/pg/text_decoder/timestamp.rb +30 -0
  51. data/lib/pg/text_encoder/date.rb +12 -0
  52. data/lib/pg/text_encoder/inet.rb +28 -0
  53. data/lib/pg/text_encoder/json.rb +14 -0
  54. data/lib/pg/text_encoder/numeric.rb +9 -0
  55. data/lib/pg/text_encoder/timestamp.rb +24 -0
  56. data/lib/pg/version.rb +1 -1
  57. data/lib/pg.rb +55 -15
  58. data/pg.gemspec +4 -2
  59. data/rakelib/task_extension.rb +1 -1
  60. data/translation/.po4a-version +7 -0
  61. data/translation/po/all.pot +910 -0
  62. data/translation/po/ja.po +1047 -0
  63. data/translation/po4a.cfg +12 -0
  64. data.tar.gz.sig +0 -0
  65. metadata +101 -32
  66. metadata.gz.sig +0 -0
  67. data/README.ja.rdoc +0 -13
  68. data/README.rdoc +0 -214
  69. data/lib/pg/binary_decoder.rb +0 -23
  70. data/lib/pg/constants.rb +0 -12
  71. data/lib/pg/text_decoder.rb +0 -46
  72. data/lib/pg/text_encoder.rb +0 -59
@@ -0,0 +1,910 @@
1
+ # SOME DESCRIPTIVE TITLE
2
+ # Copyright (C) YEAR Pg authors
3
+ # This file is distributed under the same license as the Pg package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+ #
6
+ #, fuzzy
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: Pg 1.4.6\n"
10
+ "POT-Creation-Date: 2023-03-28 08:27+0200\n"
11
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
+ "Language-Team: LANGUAGE <LL@li.org>\n"
14
+ "Language: en\n"
15
+ "MIME-Version: 1.0\n"
16
+ "Content-Type: text/plain; charset=UTF-8\n"
17
+ "Content-Transfer-Encoding: 8bit\n"
18
+
19
+ #. type: Title #
20
+ #: ../README.md:1
21
+ #, markdown-text, no-wrap
22
+ msgid "pg"
23
+ msgstr ""
24
+
25
+ #. type: Bullet: '* '
26
+ #: ../README.md:7
27
+ #, markdown-text
28
+ msgid "home :: https://github.com/ged/ruby-pg"
29
+ msgstr ""
30
+
31
+ #. type: Plain text
32
+ #: ../README.md:7
33
+ #, markdown-text, no-wrap
34
+ msgid ""
35
+ "* docs :: http://deveiate.org/code/pg (English) ,\n"
36
+ " https://deveiate.org/code/pg/README_ja_md.html (Japanese)\n"
37
+ "* clog :: link:/History.md\n"
38
+ msgstr ""
39
+
40
+ #. type: Plain text
41
+ #: ../README.md:9
42
+ #, markdown-text
43
+ msgid ""
44
+ "[![Join the chat at "
45
+ "https://gitter.im/ged/ruby-pg](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ged/ruby-pg?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)"
46
+ msgstr ""
47
+
48
+ #. type: Title ##
49
+ #: ../README.md:11
50
+ #, markdown-text, no-wrap
51
+ msgid "Description"
52
+ msgstr ""
53
+
54
+ #. type: Plain text
55
+ #: ../README.md:15
56
+ #, markdown-text
57
+ msgid ""
58
+ "Pg is the Ruby interface to the [PostgreSQL "
59
+ "RDBMS](http://www.postgresql.org/). It works with [PostgreSQL 9.3 and "
60
+ "later](http://www.postgresql.org/support/versioning/)."
61
+ msgstr ""
62
+
63
+ #. type: Plain text
64
+ #: ../README.md:17
65
+ #, markdown-text
66
+ msgid "A small example usage:"
67
+ msgstr ""
68
+
69
+ #. type: Fenced code block (ruby)
70
+ #: ../README.md:17
71
+ #, no-wrap
72
+ msgid ""
73
+ " #!/usr/bin/env ruby\n"
74
+ "\n"
75
+ " require 'pg'\n"
76
+ "\n"
77
+ " # Output a table of current connections to the DB\n"
78
+ " conn = PG.connect( dbname: 'sales' )\n"
79
+ " conn.exec( \"SELECT * FROM pg_stat_activity\" ) do |result|\n"
80
+ " puts \" PID | User | Query\"\n"
81
+ " result.each do |row|\n"
82
+ " puts \" %7d | %-16s | %s \" %\n"
83
+ " row.values_at('pid', 'usename', 'query')\n"
84
+ " end\n"
85
+ " end\n"
86
+ msgstr ""
87
+
88
+ #. type: Title ##
89
+ #: ../README.md:33
90
+ #, markdown-text, no-wrap
91
+ msgid "Build Status"
92
+ msgstr ""
93
+
94
+ #. type: Plain text
95
+ #: ../README.md:38
96
+ #, markdown-text
97
+ msgid ""
98
+ "[![Build Status Github "
99
+ "Actions](https://github.com/ged/ruby-pg/actions/workflows/source-gem.yml/badge.svg?branch=master)](https://github.com/ged/ruby-pg/actions/workflows/source-gem.yml) "
100
+ "[![Binary "
101
+ "gems](https://github.com/ged/ruby-pg/actions/workflows/binary-gems.yml/badge.svg?branch=master)](https://github.com/ged/ruby-pg/actions/workflows/binary-gems.yml) "
102
+ "[![Build Status "
103
+ "Appveyor](https://ci.appveyor.com/api/projects/status/gjx5axouf3b1wicp?svg=true)](https://ci.appveyor.com/project/ged/ruby-pg-9j8l3)"
104
+ msgstr ""
105
+
106
+ #. type: Title ##
107
+ #: ../README.md:40
108
+ #, markdown-text, no-wrap
109
+ msgid "Requirements"
110
+ msgstr ""
111
+
112
+ #. type: Bullet: '* '
113
+ #: ../README.md:44
114
+ #, markdown-text
115
+ msgid "Ruby 2.5 or newer"
116
+ msgstr ""
117
+
118
+ #. type: Bullet: '* '
119
+ #: ../README.md:44
120
+ #, markdown-text
121
+ msgid "PostgreSQL 9.3.x or later (with headers, -dev packages, etc)."
122
+ msgstr ""
123
+
124
+ #. type: Plain text
125
+ #: ../README.md:47
126
+ #, markdown-text
127
+ msgid ""
128
+ "It usually works with earlier versions of Ruby/PostgreSQL as well, but those "
129
+ "are not regularly tested."
130
+ msgstr ""
131
+
132
+ #. type: Title ##
133
+ #: ../README.md:49
134
+ #, markdown-text, no-wrap
135
+ msgid "Versioning"
136
+ msgstr ""
137
+
138
+ #. type: Plain text
139
+ #: ../README.md:52
140
+ #, markdown-text
141
+ msgid ""
142
+ "We tag and release gems according to the [Semantic "
143
+ "Versioning](http://semver.org/) principle."
144
+ msgstr ""
145
+
146
+ #. type: Plain text
147
+ #: ../README.md:54
148
+ #, markdown-text
149
+ msgid ""
150
+ "As a result of this policy, you can (and should) specify a dependency on "
151
+ "this gem using the [Pessimistic Version "
152
+ "Constraint](http://guides.rubygems.org/patterns/#pessimistic-version-constraint) "
153
+ "with two digits of precision."
154
+ msgstr ""
155
+
156
+ #. type: Plain text
157
+ #: ../README.md:56
158
+ #, markdown-text
159
+ msgid "For example:"
160
+ msgstr ""
161
+
162
+ #. type: Fenced code block (ruby)
163
+ #: ../README.md:57
164
+ #, no-wrap
165
+ msgid " spec.add_dependency 'pg', '~> 1.0'\n"
166
+ msgstr ""
167
+
168
+ #. type: Title ##
169
+ #: ../README.md:61
170
+ #, markdown-text, no-wrap
171
+ msgid "How To Install"
172
+ msgstr ""
173
+
174
+ #. type: Plain text
175
+ #: ../README.md:64
176
+ #, markdown-text
177
+ msgid "Install via RubyGems:"
178
+ msgstr ""
179
+
180
+ #. type: Plain text
181
+ #: ../README.md:66
182
+ #, markdown-text, no-wrap
183
+ msgid " gem install pg\n"
184
+ msgstr ""
185
+
186
+ #. type: Plain text
187
+ #: ../README.md:69
188
+ #, markdown-text
189
+ msgid ""
190
+ "You may need to specify the path to the 'pg_config' program installed with "
191
+ "Postgres:"
192
+ msgstr ""
193
+
194
+ #. type: Plain text
195
+ #: ../README.md:71
196
+ #, markdown-text, no-wrap
197
+ msgid " gem install pg -- --with-pg-config=<path to pg_config>\n"
198
+ msgstr ""
199
+
200
+ #. type: Plain text
201
+ #: ../README.md:73
202
+ #, markdown-text
203
+ msgid "If you're installing via Bundler, you can provide compile hints like so:"
204
+ msgstr ""
205
+
206
+ #. type: Plain text
207
+ #: ../README.md:75
208
+ #, markdown-text, no-wrap
209
+ msgid " bundle config build.pg --with-pg-config=<path to pg_config>\n"
210
+ msgstr ""
211
+
212
+ #. type: Plain text
213
+ #: ../README.md:78
214
+ #, markdown-text
215
+ msgid ""
216
+ "See README-OS_X.rdoc for more information about installing under MacOS X, "
217
+ "and README-Windows.rdoc for Windows build/installation instructions."
218
+ msgstr ""
219
+
220
+ #. type: Plain text
221
+ #: ../README.md:82
222
+ #, markdown-text
223
+ msgid ""
224
+ "There's also [a Google+ group](http://goo.gl/TFy1U) and a [mailing "
225
+ "list](http://groups.google.com/group/ruby-pg) if you get stuck, or just want "
226
+ "to chat about something."
227
+ msgstr ""
228
+
229
+ #. type: Plain text
230
+ #: ../README.md:86
231
+ #, markdown-text
232
+ msgid ""
233
+ "If you want to install as a signed gem, the public certs of the gem signers "
234
+ "can be found in [the `certs` "
235
+ "directory](https://github.com/ged/ruby-pg/tree/master/certs) of the "
236
+ "repository."
237
+ msgstr ""
238
+
239
+ #. type: Title ##
240
+ #: ../README.md:88
241
+ #, markdown-text, no-wrap
242
+ msgid "Type Casts"
243
+ msgstr ""
244
+
245
+ #. type: Plain text
246
+ #: ../README.md:94
247
+ #, markdown-text
248
+ msgid ""
249
+ "Pg can optionally type cast result values and query parameters in Ruby or "
250
+ "native C code. This can speed up data transfers to and from the database, "
251
+ "because String allocations are reduced and conversions in (slower) Ruby code "
252
+ "can be omitted."
253
+ msgstr ""
254
+
255
+ #. type: Plain text
256
+ #: ../README.md:96
257
+ #, markdown-text
258
+ msgid "Very basic type casting can be enabled by:"
259
+ msgstr ""
260
+
261
+ #. type: Fenced code block (ruby)
262
+ #: ../README.md:96
263
+ #, no-wrap
264
+ msgid ""
265
+ " conn.type_map_for_results = PG::BasicTypeMapForResults.new conn\n"
266
+ " # ... this works for result value mapping:\n"
267
+ " conn.exec(\"select 1, now(), '{2,3}'::int[]\").values\n"
268
+ " # => [[1, 2014-09-21 20:51:56 +0200, [2, 3]]]\n"
269
+ "\n"
270
+ " conn.type_map_for_queries = PG::BasicTypeMapForQueries.new conn\n"
271
+ " # ... and this for param value mapping:\n"
272
+ " conn.exec_params(\"SELECT $1::text, $2::text, $3::text\", [1, 1.23, "
273
+ "[2,3]]).values\n"
274
+ " # => [[\"1\", \"1.2300000000000000E+00\", \"{2,3}\"]]\n"
275
+ msgstr ""
276
+
277
+ #. type: Plain text
278
+ #: ../README.md:110
279
+ #, markdown-text
280
+ msgid ""
281
+ "But Pg's type casting is highly customizable. That's why it's divided into 2 "
282
+ "layers:"
283
+ msgstr ""
284
+
285
+ #. type: Title ###
286
+ #: ../README.md:111
287
+ #, markdown-text, no-wrap
288
+ msgid "Encoders / Decoders (ext/pg_*coder.c, lib/pg/*coder.rb)"
289
+ msgstr ""
290
+
291
+ #. type: Plain text
292
+ #: ../README.md:118
293
+ #, markdown-text
294
+ msgid ""
295
+ "This is the lower layer, containing encoding classes that convert Ruby "
296
+ "objects for transmission to the DBMS and decoding classes to convert "
297
+ "received data back to Ruby objects. The classes are namespaced according to "
298
+ "their format and direction in PG::TextEncoder, PG::TextDecoder, "
299
+ "PG::BinaryEncoder and PG::BinaryDecoder."
300
+ msgstr ""
301
+
302
+ #. type: Plain text
303
+ #: ../README.md:124
304
+ #, markdown-text
305
+ msgid ""
306
+ "It is possible to assign a type OID, format code (text or binary) and "
307
+ "optionally a name to an encoder or decoder object. It's also possible to "
308
+ "build composite types by assigning an element encoder/decoder. PG::Coder "
309
+ "objects can be used to set up a PG::TypeMap or alternatively to convert "
310
+ "single values to/from their string representation."
311
+ msgstr ""
312
+
313
+ #. type: Plain text
314
+ #: ../README.md:126
315
+ #, markdown-text
316
+ msgid ""
317
+ "The following PostgreSQL column types are supported by ruby-pg (TE = Text "
318
+ "Encoder, TD = Text Decoder, BE = Binary Encoder, BD = Binary Decoder):"
319
+ msgstr ""
320
+
321
+ #. type: Bullet: '* '
322
+ #: ../README.md:146
323
+ #, markdown-text
324
+ msgid ""
325
+ "Integer: [TE](rdoc-ref:PG::TextEncoder::Integer), "
326
+ "[TD](rdoc-ref:PG::TextDecoder::Integer), "
327
+ "[BD](rdoc-ref:PG::BinaryDecoder::Integer) 💡 No links? Switch to "
328
+ "[here](https://deveiate.org/code/pg/README_md.html#label-Type+Casts) 💡"
329
+ msgstr ""
330
+
331
+ #. type: Bullet: ' * '
332
+ #: ../README.md:146
333
+ #, markdown-text
334
+ msgid ""
335
+ "BE: [Int2](rdoc-ref:PG::BinaryEncoder::Int2), "
336
+ "[Int4](rdoc-ref:PG::BinaryEncoder::Int4), "
337
+ "[Int8](rdoc-ref:PG::BinaryEncoder::Int8)"
338
+ msgstr ""
339
+
340
+ #. type: Bullet: '* '
341
+ #: ../README.md:146
342
+ #, markdown-text
343
+ msgid ""
344
+ "Float: [TE](rdoc-ref:PG::TextEncoder::Float), "
345
+ "[TD](rdoc-ref:PG::TextDecoder::Float), "
346
+ "[BD](rdoc-ref:PG::BinaryDecoder::Float)"
347
+ msgstr ""
348
+
349
+ #. type: Bullet: ' * '
350
+ #: ../README.md:146
351
+ #, markdown-text
352
+ msgid ""
353
+ "BE: [Float4](rdoc-ref:PG::BinaryEncoder::Float4), "
354
+ "[Float8](rdoc-ref:PG::BinaryEncoder::Float8)"
355
+ msgstr ""
356
+
357
+ #. type: Bullet: '* '
358
+ #: ../README.md:146
359
+ #, markdown-text
360
+ msgid ""
361
+ "Numeric: [TE](rdoc-ref:PG::TextEncoder::Numeric), "
362
+ "[TD](rdoc-ref:PG::TextDecoder::Numeric)"
363
+ msgstr ""
364
+
365
+ #. type: Bullet: '* '
366
+ #: ../README.md:146
367
+ #, markdown-text
368
+ msgid ""
369
+ "Boolean: [TE](rdoc-ref:PG::TextEncoder::Boolean), "
370
+ "[TD](rdoc-ref:PG::TextDecoder::Boolean), "
371
+ "[BE](rdoc-ref:PG::BinaryEncoder::Boolean), "
372
+ "[BD](rdoc-ref:PG::BinaryDecoder::Boolean)"
373
+ msgstr ""
374
+
375
+ #. type: Bullet: '* '
376
+ #: ../README.md:146
377
+ #, markdown-text
378
+ msgid ""
379
+ "String: [TE](rdoc-ref:PG::TextEncoder::String), "
380
+ "[TD](rdoc-ref:PG::TextDecoder::String), "
381
+ "[BE](rdoc-ref:PG::BinaryEncoder::String), "
382
+ "[BD](rdoc-ref:PG::BinaryDecoder::String)"
383
+ msgstr ""
384
+
385
+ #. type: Bullet: '* '
386
+ #: ../README.md:146
387
+ #, markdown-text
388
+ msgid ""
389
+ "Bytea: [TE](rdoc-ref:PG::TextEncoder::Bytea), "
390
+ "[TD](rdoc-ref:PG::TextDecoder::Bytea), "
391
+ "[BE](rdoc-ref:PG::BinaryEncoder::Bytea), "
392
+ "[BD](rdoc-ref:PG::BinaryDecoder::Bytea)"
393
+ msgstr ""
394
+
395
+ #. type: Bullet: '* '
396
+ #: ../README.md:146
397
+ #, markdown-text
398
+ msgid ""
399
+ "Base64: [TE](rdoc-ref:PG::TextEncoder::ToBase64), "
400
+ "[TD](rdoc-ref:PG::TextDecoder::FromBase64), "
401
+ "[BE](rdoc-ref:PG::BinaryEncoder::FromBase64), "
402
+ "[BD](rdoc-ref:PG::BinaryDecoder::ToBase64)"
403
+ msgstr ""
404
+
405
+ #. type: Bullet: '* '
406
+ #: ../README.md:146
407
+ #, markdown-text
408
+ msgid "Timestamp:"
409
+ msgstr ""
410
+
411
+ #. type: Bullet: ' * '
412
+ #: ../README.md:146
413
+ #, markdown-text
414
+ msgid ""
415
+ "TE: [local](rdoc-ref:PG::TextEncoder::TimestampWithoutTimeZone), "
416
+ "[UTC](rdoc-ref:PG::TextEncoder::TimestampUtc), "
417
+ "[with-TZ](rdoc-ref:PG::TextEncoder::TimestampWithTimeZone)"
418
+ msgstr ""
419
+
420
+ #. type: Bullet: ' * '
421
+ #: ../README.md:146
422
+ #, markdown-text
423
+ msgid ""
424
+ "TD: [local](rdoc-ref:PG::TextDecoder::TimestampLocal), "
425
+ "[UTC](rdoc-ref:PG::TextDecoder::TimestampUtc), "
426
+ "[UTC-to-local](rdoc-ref:PG::TextDecoder::TimestampUtcToLocal)"
427
+ msgstr ""
428
+
429
+ #. type: Bullet: ' * '
430
+ #: ../README.md:146
431
+ #, markdown-text
432
+ msgid ""
433
+ "BE: [local](rdoc-ref:PG::BinaryEncoder::TimestampLocal), "
434
+ "[UTC](rdoc-ref:PG::BinaryEncoder::TimestampUtc)"
435
+ msgstr ""
436
+
437
+ #. type: Bullet: ' * '
438
+ #: ../README.md:146
439
+ #, markdown-text
440
+ msgid ""
441
+ "BD: [local](rdoc-ref:PG::BinaryDecoder::TimestampLocal), "
442
+ "[UTC](rdoc-ref:PG::BinaryDecoder::TimestampUtc), "
443
+ "[UTC-to-local](rdoc-ref:PG::BinaryDecoder::TimestampUtcToLocal)"
444
+ msgstr ""
445
+
446
+ #. type: Bullet: '* '
447
+ #: ../README.md:146
448
+ #, markdown-text
449
+ msgid ""
450
+ "Date: [TE](rdoc-ref:PG::TextEncoder::Date), "
451
+ "[TD](rdoc-ref:PG::TextDecoder::Date), "
452
+ "[BE](rdoc-ref:PG::BinaryEncoder::Date), "
453
+ "[BD](rdoc-ref:PG::BinaryDecoder::Date)"
454
+ msgstr ""
455
+
456
+ #. type: Bullet: '* '
457
+ #: ../README.md:146
458
+ #, markdown-text
459
+ msgid ""
460
+ "JSON and JSONB: [TE](rdoc-ref:PG::TextEncoder::JSON), "
461
+ "[TD](rdoc-ref:PG::TextDecoder::JSON)"
462
+ msgstr ""
463
+
464
+ #. type: Bullet: '* '
465
+ #: ../README.md:146
466
+ #, markdown-text
467
+ msgid ""
468
+ "Inet: [TE](rdoc-ref:PG::TextEncoder::Inet), "
469
+ "[TD](rdoc-ref:PG::TextDecoder::Inet)"
470
+ msgstr ""
471
+
472
+ #. type: Bullet: '* '
473
+ #: ../README.md:146
474
+ #, markdown-text
475
+ msgid ""
476
+ "Array: [TE](rdoc-ref:PG::TextEncoder::Array), "
477
+ "[TD](rdoc-ref:PG::TextDecoder::Array)"
478
+ msgstr ""
479
+
480
+ #. type: Bullet: '* '
481
+ #: ../README.md:146
482
+ #, markdown-text
483
+ msgid ""
484
+ "Composite Type (also called \"Row\" or \"Record\"): "
485
+ "[TE](rdoc-ref:PG::TextEncoder::Record), "
486
+ "[TD](rdoc-ref:PG::TextDecoder::Record)"
487
+ msgstr ""
488
+
489
+ #. type: Plain text
490
+ #: ../README.md:148
491
+ #, markdown-text
492
+ msgid ""
493
+ "The following text and binary formats can also be encoded although they are "
494
+ "not used as column type:"
495
+ msgstr ""
496
+
497
+ #. type: Bullet: '* '
498
+ #: ../README.md:152
499
+ #, markdown-text
500
+ msgid ""
501
+ "COPY input and output data: [TE](rdoc-ref:PG::TextEncoder::CopyRow), "
502
+ "[TD](rdoc-ref:PG::TextDecoder::CopyRow), "
503
+ "[BE](rdoc-ref:PG::BinaryEncoder::CopyRow), "
504
+ "[BD](rdoc-ref:PG::BinaryDecoder::CopyRow)"
505
+ msgstr ""
506
+
507
+ #. type: Bullet: '* '
508
+ #: ../README.md:152
509
+ #, markdown-text
510
+ msgid ""
511
+ "Literal for insertion into SQL string: "
512
+ "[TE](rdoc-ref:PG::TextEncoder::QuotedLiteral)"
513
+ msgstr ""
514
+
515
+ #. type: Bullet: '* '
516
+ #: ../README.md:152
517
+ #, markdown-text
518
+ msgid ""
519
+ "SQL-Identifier: [TE](rdoc-ref:PG::TextEncoder::Identifier), "
520
+ "[TD](rdoc-ref:PG::TextDecoder::Identifier)"
521
+ msgstr ""
522
+
523
+ #. type: Title ###
524
+ #: ../README.md:153
525
+ #, markdown-text, no-wrap
526
+ msgid "PG::TypeMap and derivations (ext/pg_type_map*.c, lib/pg/type_map*.rb)"
527
+ msgstr ""
528
+
529
+ #. type: Plain text
530
+ #: ../README.md:159
531
+ #, markdown-text
532
+ msgid ""
533
+ "A TypeMap defines which value will be converted by which encoder/decoder. "
534
+ "There are different type map strategies, implemented by several derivations "
535
+ "of this class. They can be chosen and configured according to the particular "
536
+ "needs for type casting. The default type map is PG::TypeMapAllStrings."
537
+ msgstr ""
538
+
539
+ #. type: Plain text
540
+ #: ../README.md:163
541
+ #, markdown-text
542
+ msgid ""
543
+ "A type map can be assigned per connection or per query respectively per "
544
+ "result set. Type maps can also be used for COPY in and out data streaming. "
545
+ "See PG::Connection#copy_data ."
546
+ msgstr ""
547
+
548
+ #. type: Plain text
549
+ #: ../README.md:165
550
+ #, markdown-text
551
+ msgid "The following base type maps are available:"
552
+ msgstr ""
553
+
554
+ #. type: Bullet: '* '
555
+ #: ../README.md:171
556
+ #, markdown-text
557
+ msgid ""
558
+ "PG::TypeMapAllStrings - encodes and decodes all values to and from strings "
559
+ "(default)"
560
+ msgstr ""
561
+
562
+ #. type: Bullet: '* '
563
+ #: ../README.md:171
564
+ #, markdown-text
565
+ msgid ""
566
+ "PG::TypeMapByClass - selects encoder based on the class of the value to be "
567
+ "sent"
568
+ msgstr ""
569
+
570
+ #. type: Bullet: '* '
571
+ #: ../README.md:171
572
+ #, markdown-text
573
+ msgid "PG::TypeMapByColumn - selects encoder and decoder by column order"
574
+ msgstr ""
575
+
576
+ #. type: Bullet: '* '
577
+ #: ../README.md:171
578
+ #, markdown-text
579
+ msgid "PG::TypeMapByOid - selects decoder by PostgreSQL type OID"
580
+ msgstr ""
581
+
582
+ #. type: Bullet: '* '
583
+ #: ../README.md:171
584
+ #, markdown-text
585
+ msgid "PG::TypeMapInRuby - define a custom type map in ruby"
586
+ msgstr ""
587
+
588
+ #. type: Plain text
589
+ #: ../README.md:173
590
+ #, markdown-text
591
+ msgid ""
592
+ "The following type maps are prefilled with type mappings from the "
593
+ "PG::BasicTypeRegistry :"
594
+ msgstr ""
595
+
596
+ #. type: Bullet: '* '
597
+ #: ../README.md:177
598
+ #, markdown-text
599
+ msgid ""
600
+ "PG::BasicTypeMapForResults - a PG::TypeMapByOid prefilled with decoders for "
601
+ "common PostgreSQL column types"
602
+ msgstr ""
603
+
604
+ #. type: Bullet: '* '
605
+ #: ../README.md:177
606
+ #, markdown-text
607
+ msgid ""
608
+ "PG::BasicTypeMapBasedOnResult - a PG::TypeMapByOid prefilled with encoders "
609
+ "for common PostgreSQL column types"
610
+ msgstr ""
611
+
612
+ #. type: Bullet: '* '
613
+ #: ../README.md:177
614
+ #, markdown-text
615
+ msgid ""
616
+ "PG::BasicTypeMapForQueries - a PG::TypeMapByClass prefilled with encoders "
617
+ "for common Ruby value classes"
618
+ msgstr ""
619
+
620
+ #. type: Title ##
621
+ #: ../README.md:179
622
+ #, markdown-text, no-wrap
623
+ msgid "Thread support"
624
+ msgstr ""
625
+
626
+ #. type: Plain text
627
+ #: ../README.md:184
628
+ #, markdown-text
629
+ msgid ""
630
+ "PG is thread safe in such a way that different threads can use different "
631
+ "PG::Connection objects concurrently. However it is not safe to access any "
632
+ "Pg objects simultaneously from more than one thread. So make sure to open a "
633
+ "new database server connection for every new thread or use a wrapper library "
634
+ "like ActiveRecord that manages connections in a thread safe way."
635
+ msgstr ""
636
+
637
+ #. type: Plain text
638
+ #: ../README.md:186
639
+ #, markdown-text
640
+ msgid ""
641
+ "If messages like the following are printed to stderr, you're probably using "
642
+ "one connection from several threads:"
643
+ msgstr ""
644
+
645
+ #. type: Plain text
646
+ #: ../README.md:192
647
+ #, markdown-text, no-wrap
648
+ msgid ""
649
+ " message type 0x31 arrived from server while idle\n"
650
+ " message type 0x32 arrived from server while idle\n"
651
+ " message type 0x54 arrived from server while idle\n"
652
+ " message type 0x43 arrived from server while idle\n"
653
+ " message type 0x5a arrived from server while idle\n"
654
+ msgstr ""
655
+
656
+ #. type: Title ##
657
+ #: ../README.md:194
658
+ #, markdown-text, no-wrap
659
+ msgid "Fiber IO scheduler support"
660
+ msgstr ""
661
+
662
+ #. type: Plain text
663
+ #: ../README.md:201
664
+ #, markdown-text
665
+ msgid ""
666
+ "Pg is fully compatible with `Fiber.scheduler` introduced in Ruby-3.0. On "
667
+ "Windows support for `Fiber.scheduler` is available on Ruby-3.1 or newer. "
668
+ "All possibly blocking IO operations are routed through the `Fiber.scheduler` "
669
+ "if one is registered for the running thread. That is why pg internally uses "
670
+ "the asynchronous libpq interface even for synchronous/blocking method "
671
+ "calls. It also uses Ruby's DNS resolution instead of libpq's builtin "
672
+ "functions."
673
+ msgstr ""
674
+
675
+ #. type: Plain text
676
+ #: ../README.md:205
677
+ #, markdown-text
678
+ msgid ""
679
+ "Internally Pg always uses the nonblocking connection mode of libpq. It then "
680
+ "behaves like running in blocking mode but ensures, that all blocking IO is "
681
+ "handled in Ruby through a possibly registered `Fiber.scheduler`. When "
682
+ "`PG::Connection.setnonblocking(true)` is called then the nonblocking state "
683
+ "stays enabled, but the additional handling of blocking states is disabled, "
684
+ "so that the calling program has to handle blocking states on its own."
685
+ msgstr ""
686
+
687
+ #. type: Plain text
688
+ #: ../README.md:209
689
+ #, markdown-text
690
+ msgid ""
691
+ "An exception to this rule are the methods for large objects like "
692
+ "`PG::Connection#lo_create` and authentication methods using external "
693
+ "libraries (like GSSAPI authentication). They are not compatible with "
694
+ "`Fiber.scheduler`, so that blocking states are not passed to the registered "
695
+ "IO scheduler. That means the operation will work properly, but IO waiting "
696
+ "states can not be used to switch to another Fiber doing IO."
697
+ msgstr ""
698
+
699
+ #. type: Title ##
700
+ #: ../README.md:211
701
+ #, markdown-text, no-wrap
702
+ msgid "Contributing"
703
+ msgstr ""
704
+
705
+ #. type: Plain text
706
+ #: ../README.md:215
707
+ #, markdown-text
708
+ msgid ""
709
+ "To report bugs, suggest features, or check out the source with Git, [check "
710
+ "out the project page](https://github.com/ged/ruby-pg)."
711
+ msgstr ""
712
+
713
+ #. type: Plain text
714
+ #: ../README.md:217
715
+ #, markdown-text
716
+ msgid "After checking out the source, install all dependencies:"
717
+ msgstr ""
718
+
719
+ #. type: Plain text
720
+ #: ../README.md:219
721
+ #, markdown-text, no-wrap
722
+ msgid " $ bundle install\n"
723
+ msgstr ""
724
+
725
+ #. type: Plain text
726
+ #: ../README.md:222
727
+ #, markdown-text
728
+ msgid ""
729
+ "Cleanup extension files, packaging files, test databases. Run this to "
730
+ "change between PostgreSQL versions:"
731
+ msgstr ""
732
+
733
+ #. type: Plain text
734
+ #: ../README.md:224
735
+ #, markdown-text, no-wrap
736
+ msgid " $ rake clean\n"
737
+ msgstr ""
738
+
739
+ #. type: Plain text
740
+ #: ../README.md:226
741
+ #, markdown-text
742
+ msgid "Compile extension:"
743
+ msgstr ""
744
+
745
+ #. type: Plain text
746
+ #: ../README.md:228
747
+ #, markdown-text, no-wrap
748
+ msgid " $ rake compile\n"
749
+ msgstr ""
750
+
751
+ #. type: Plain text
752
+ #: ../README.md:230
753
+ #, markdown-text
754
+ msgid ""
755
+ "Run tests/specs on the PostgreSQL version that `pg_config --bindir` points "
756
+ "to:"
757
+ msgstr ""
758
+
759
+ #. type: Plain text
760
+ #: ../README.md:232
761
+ #, markdown-text, no-wrap
762
+ msgid " $ rake test\n"
763
+ msgstr ""
764
+
765
+ #. type: Plain text
766
+ #: ../README.md:234
767
+ #, markdown-text
768
+ msgid ""
769
+ "Or run a specific test per file and line number on a specific PostgreSQL "
770
+ "version:"
771
+ msgstr ""
772
+
773
+ #. type: Plain text
774
+ #: ../README.md:236
775
+ #, markdown-text, no-wrap
776
+ msgid ""
777
+ " $ PATH=/usr/lib/postgresql/14/bin:$PATH rspec -Ilib -fd "
778
+ "spec/pg/connection_spec.rb:455\n"
779
+ msgstr ""
780
+
781
+ #. type: Plain text
782
+ #: ../README.md:238
783
+ #, markdown-text
784
+ msgid "Generate the API documentation:"
785
+ msgstr ""
786
+
787
+ #. type: Plain text
788
+ #: ../README.md:240
789
+ #, markdown-text, no-wrap
790
+ msgid " $ rake docs\n"
791
+ msgstr ""
792
+
793
+ #. type: Plain text
794
+ #: ../README.md:242
795
+ #, markdown-text
796
+ msgid "Make sure, that all bugs and new features are verified by tests."
797
+ msgstr ""
798
+
799
+ #. type: Plain text
800
+ #: ../README.md:245
801
+ #, markdown-text
802
+ msgid ""
803
+ "The current maintainers are Michael Granger <ged@FaerieMUD.org> and Lars "
804
+ "Kanis <lars@greiz-reinsdorf.de>."
805
+ msgstr ""
806
+
807
+ #. type: Title ##
808
+ #: ../README.md:247
809
+ #, markdown-text, no-wrap
810
+ msgid "Copying"
811
+ msgstr ""
812
+
813
+ #. type: Plain text
814
+ #: ../README.md:250
815
+ #, markdown-text
816
+ msgid "Copyright (c) 1997-2022 by the authors."
817
+ msgstr ""
818
+
819
+ #. type: Bullet: '* '
820
+ #: ../README.md:259
821
+ #, markdown-text
822
+ msgid "Jeff Davis <ruby-pg@j-davis.com>"
823
+ msgstr ""
824
+
825
+ #. type: Bullet: '* '
826
+ #: ../README.md:259
827
+ #, markdown-text
828
+ msgid "Guy Decoux (ts) <decoux@moulon.inra.fr>"
829
+ msgstr ""
830
+
831
+ #. type: Bullet: '* '
832
+ #: ../README.md:259
833
+ #, markdown-text
834
+ msgid "Michael Granger <ged@FaerieMUD.org>"
835
+ msgstr ""
836
+
837
+ #. type: Bullet: '* '
838
+ #: ../README.md:259
839
+ #, markdown-text
840
+ msgid "Lars Kanis <lars@greiz-reinsdorf.de>"
841
+ msgstr ""
842
+
843
+ #. type: Bullet: '* '
844
+ #: ../README.md:259
845
+ #, markdown-text
846
+ msgid "Dave Lee"
847
+ msgstr ""
848
+
849
+ #. type: Bullet: '* '
850
+ #: ../README.md:259
851
+ #, markdown-text
852
+ msgid "Eiji Matsumoto <usagi@ruby.club.or.jp>"
853
+ msgstr ""
854
+
855
+ #. type: Bullet: '* '
856
+ #: ../README.md:259
857
+ #, markdown-text
858
+ msgid "Yukihiro Matsumoto <matz@ruby-lang.org>"
859
+ msgstr ""
860
+
861
+ #. type: Bullet: '* '
862
+ #: ../README.md:259
863
+ #, markdown-text
864
+ msgid "Noboru Saitou <noborus@netlab.jp>"
865
+ msgstr ""
866
+
867
+ #. type: Plain text
868
+ #: ../README.md:263
869
+ #, markdown-text
870
+ msgid ""
871
+ "You may redistribute this software under the same terms as Ruby itself; see "
872
+ "https://www.ruby-lang.org/en/about/license.txt or the BSDL file in the "
873
+ "source for details."
874
+ msgstr ""
875
+
876
+ #. type: Plain text
877
+ #: ../README.md:266
878
+ #, markdown-text
879
+ msgid ""
880
+ "Portions of the code are from the PostgreSQL project, and are distributed "
881
+ "under the terms of the PostgreSQL license, included in the file POSTGRES."
882
+ msgstr ""
883
+
884
+ #. type: Plain text
885
+ #: ../README.md:268
886
+ #, markdown-text
887
+ msgid "Portions copyright LAIKA, Inc."
888
+ msgstr ""
889
+
890
+ #. type: Title ##
891
+ #: ../README.md:270
892
+ #, markdown-text, no-wrap
893
+ msgid "Acknowledgments"
894
+ msgstr ""
895
+
896
+ #. type: Plain text
897
+ #: ../README.md:274
898
+ #, markdown-text
899
+ msgid ""
900
+ "See Contributors.rdoc for the many additional fine people that have "
901
+ "contributed to this library over the years."
902
+ msgstr ""
903
+
904
+ #. type: Plain text
905
+ #: ../README.md:276
906
+ #, markdown-text
907
+ msgid ""
908
+ "We are thankful to the people at the ruby-list and ruby-dev mailing lists. "
909
+ "And to the people who developed PostgreSQL."
910
+ msgstr ""